A Lindy AI agent builder flow is a trigger plus a set of skills it can call, no code required. This guide builds a sales agent that looks up a lead's CRM record freely but only sends a contract email after you approve it through Lindy's built-in 'Ask for Confirmation' toggle. You'll pick a trigger, add two skills, dry-run it, and review your first live approval. Budget 25-35 minutes on Lindy's free trial credits.
| Fact | Value |
|---|---|
| Tool | Lindy |
| Difficulty | Beginner |
| Time required | 25-35 min |
| Compatibility | Lindy account (free trial credits work for testing), a connected CRM (HubSpot or similar), Gmail, browser only |
| Last updated | November 2026 |
What you'll build
You'll build a sales follow-up agent. It can look up a lead's record in your CRM whenever a teammate asks, and when a lead is ready to move forward, it can send them a contract and payment link by email. The CRM lookup runs automatically; the email send has its 'Ask for Confirmation' toggle turned on, so the Lindy pauses right before sending, emails you asking to approve it, and only actually sends once you say yes.
A Lindy is built from a trigger (time-based, chat-based, or event-based, such as a Slack message, an incoming email, or a calendar event), a task written in plain English describing what to do, and skills, which are Lindy's built-in tools (HTTP requests, computer use, phone calls) plus its 1,500+ app integrations. Most skills with side effects, anything that sends, updates, or creates something outside Lindy, expose a confirmation toggle: turn it on and that specific call pauses the whole run, emails the owner, and waits for approval either by email or directly in the task menu before continuing.
Choose Lindy when you want a large library of ready-made skills and a confirmation mechanism built into the action itself, with no separate approval workflow to design. Choose n8n instead when you want exact control over the HTTP request behind every tool call, or Zapier/Make when your team is already standardized on one of those for other automations.
Prerequisites
- A Lindy account (free trial credits are enough to build and test this)
- A connected CRM (HubSpot, Salesforce, or similar) with lead records
- A connected Gmail account
- No coding experience required, just comfort filling in a task description and toggles
Step-by-step guide
Create a new Lindy and pick a trigger
From the Lindy dashboard, click New Lindy. Choose a trigger from the catalog: for this agent, pick a chat-based trigger (so a teammate can ask it questions on demand) rather than a scheduled or event-based one. You can add more triggers to the same Lindy later if you also want it to react to, say, a new CRM lead event.
1Trigger: Chat / Manual (teammate messages the Lindy directly)2(other options: Email received, Slack message, Calendar event, Webhook)Expected result: A new, empty Lindy appears with your chosen trigger attached and no skills yet.
Write the task in plain English
In the task box, describe what the Lindy should do, concretely enough that a new hire with zero context could follow it. Name the exact skills you expect it to use and the exact condition for sending anything external, mirroring Lindy's own prompt-pattern guidance of writing concrete instructions rather than abstract ones.
1Task:2"When asked about a lead, look up their record in HubSpot by email or name and3summarize their stage, deal size, and last contact date. When a lead is ready4for a contract, draft a short email with the contract and payment link and5send it through Gmail. Never claim you sent something unless the send_contract6skill actually ran."Expected result: The task box shows your instructions, and Lindy begins suggesting relevant skills based on the apps you mentioned.
Add the read-only skill: look up the CRM lead
Add the HubSpot skill (or your CRM's equivalent) and connect your account; Lindy enforces OAuth scopes per skill, so it only gets the access you grant at connection time. Point it at a lead-lookup action. This skill has no side effects, so leave its confirmation toggle off; the Lindy can call it freely whenever a teammate asks about a lead.
1Skill: HubSpot - Find Contact2Search by: email or name3Returns: lifecycle stage, deal size, last contact date4Ask for Confirmation: OFF (read-only)Expected result: Asking the Lindy in chat about a real lead returns their actual CRM stage and deal size, with no confirmation prompt.
Add the risky skill and turn on Ask for Confirmation
Add the Gmail skill for sending email, named send_contract in your task description so the Lindy's instructions can refer to it by name. Open that skill's settings and enable the Ask for Confirmation toggle. From now on, every time the Lindy is about to call this skill, the run pauses before sending, and you get an email asking you to approve or reject it.
1Skill: Gmail - Send Email (send_contract)2To: {{lead_email}}3Subject: "Your contract from Acme Inc."4Body: contract summary + payment link, drafted by the Lindy5Ask for Confirmation: ONExpected result: Asking the Lindy to send a contract now pauses the run and triggers an approval email instead of sending anything immediately.
Dry-run the Lindy against real data
Before trusting the agent unattended, ask it in chat to dry-run the task: a dry run fires the flow end to end on real data and shows you exactly what it would have done, including which skill it would have called and with what content, without actually sending or writing anything.
1Chat prompt: "Dry-run this for lead jane@example.com who's ready for a contract."2Expect: lookup result shown, a draft contract email shown, send_contract NOT3actually called, and a note that it would have paused for your confirmation.Expected result: The dry run shows the CRM lookup result and the exact email it would send, confirming the confirmation gate would have fired, with nothing actually sent.
Approve your first live run, then review the pattern
Send a real request and let the Lindy actually run. When it reaches send_contract, you'll get an approval email (or see it in the task menu); open it, review the draft, and approve or reject it. Once you've approved a few of these and trust the pattern, you can leave Ask for Confirmation on indefinitely for this skill, or add a condition step that only requires confirmation above a certain deal size.
1Approval flow: Lindy pauses -> email arrives -> you open the task ->2review draft -> Approve (or Reject) -> Lindy resumes and completes the taskExpected result: A completed task log showing the CRM lookup, the pause, your approval, and the final confirmation that send_contract ran.
Complete working example
1# Lindy spec: Sales Follow-Up Agent2# Paste the `task` block into the task box, then add the two skills below3# and toggle Ask for Confirmation on send_contract only.45name: Sales Follow-Up Lindy6trigger: Chat / Manual (teammate messages the Lindy directly)78task: |9 When asked about a lead, look up their record in HubSpot by email or name10 and summarize their stage, deal size, and last contact date.1112 When a lead is ready for a contract, draft a short email with the contract13 and payment link and send it through Gmail using the send_contract skill.1415 Never claim you sent something unless send_contract actually ran. If you16 are unsure whether a lead is actually ready, ask the teammate first instead17 of guessing.1819skills:20 - name: look_up_lead21 app: HubSpot22 action: Find Contact23 config:24 search_by: [email, name]25 returns: [lifecycle_stage, deal_size, last_contact_date]26 ask_for_confirmation: false # read-only, safe to run automatically2728 - name: send_contract29 app: Gmail30 action: Send Email31 config:32 to: "{{lead_email}}"33 subject: "Your contract from Acme Inc."34 body: contract summary + payment link, drafted by the Lindy35 ask_for_confirmation: true # pauses, emails the owner, waits for approval36 alternative: Gmail Draft Mode (writes to Drafts instead of pausing the run)3738test_plan:39 - step: Dry-run "lead jane@example.com is ready for a contract"40 expect: lookup shown, draft email shown, send_contract NOT called41 - step: Real run, same request42 expect: lookup runs automatically, send_contract pauses for approval43 - step: Approve in the task menu or via the approval email44 expect: Lindy resumes and confirms the email was sent45 - step: Reject the same request46 expect: Lindy acknowledges the rejection, does not send anything47Common mistakes
Why it's a problem: Leaving Ask for Confirmation off on an action with real side effects, like sending an email or updating a CRM field
How to avoid: Turn the toggle on for anything that reaches someone outside your team or changes a system of record. Reserve the off position for genuinely read-only skills.
Why it's a problem: Writing an abstract task like 'handle sales follow-ups' and expecting the Lindy to infer when confirmation matters
How to avoid: Name the exact skill and the exact condition in the task description, the same way you'd brief a new hire. Abstract instructions produce inconsistent behavior.
Why it's a problem: Skipping the dry run and testing only with Ask for Confirmation already on, which hides whether the agent would have sent the right content
How to avoid: Dry-run first to see the exact draft content before any approval gate is even involved. It's the only way to catch a bad draft before it ever reaches your inbox.
Why it's a problem: Approving every request on autopilot without actually reading the drafted content
How to avoid: The confirmation step only works if someone reads it. Treat the approval email as a real review step, not a rubber stamp.
Why it's a problem: Giving one Lindy too many unrelated skills instead of keeping it focused
How to avoid: A Lindy with a narrow, well-described set of skills behaves more predictably. Split unrelated responsibilities into a second Lindy if the task starts to sprawl.
Best practices
- Turn on Ask for Confirmation for every skill with a side effect: sending, updating, creating, or paying.
- Write the task description as concrete, specific instructions, naming the exact trigger condition and skill, not an abstract goal.
- Dry-run a new or changed Lindy against real data before letting it run unattended on live triggers.
- Use Gmail's Draft Mode instead of a confirmation pause for sensitive, tone-dependent messages like negotiations.
- Review approval requests as real decisions, not a formality, especially once a Lindy earns enough trust that approvals start feeling routine.
- Add a condition step for graduated trust: require confirmation only above a certain deal size or risk threshold once the pattern has proven reliable.
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I have a Lindy with a look_up_lead skill (HubSpot, no confirmation) and a send_contract skill (Gmail, Ask for Confirmation on) gated as described in the spec below. Add a third skill that logs every approved contract send to a Google Sheet for the sales team's records, triggered right after send_contract completes. [paste complete_code]
In the Lindy builder, use Watch and Learn: record yourself looking up a lead and sending a contract once by hand, then ask Lindy to turn that recording into a skill and routine with the same Ask for Confirmation setting on the send step.
Frequently asked questions
Do I need to know how to code to use the Lindy ai agent builder?
No. Every step here happens through the dashboard: picking a trigger from a catalog, writing a task in plain English, adding skills from a list, and flipping a confirmation toggle. Nothing in this guide involves writing a script.
How is Lindy's Ask for Confirmation different from Zapier or Make's approval patterns?
It's a toggle built directly into the skill itself: enable it once and every call to that skill pauses, emails you, and waits, no separate scenario or draft-action substitution required. Zapier and Make achieve a similar result through draft actions or a second linked scenario instead of a single switch.
What's the difference between Ask for Confirmation and Draft Mode?
Ask for Confirmation pauses the entire run and asks you to approve or reject before anything happens. Draft Mode (available for actions like Gmail) lets the Lindy keep running while the output waits as an editable draft; you review and send it on your own time instead of blocking the run.
Can a Lindy call another Lindy?
The documented pattern for multi-step automation within one Lindy's scope is routines: a trigger, a plain-English prompt, and a delivery destination, which you can chain by having one routine's output feed another's trigger. Treat each focused Lindy as a building block rather than one agent trying to do everything.
What does this cost to run?
Lindy runs on credits, roughly a cent each. Paid plans start around $29.99/mo for 3,000 credits shared across a team, with top-ups available if a busy month needs more; the free trial's starting credits are enough to build and test this guide's agent.
Can someone set this up for me instead of building it myself?
Yes. RapidDev builds and hardens Lindy agents, including the confirmation and audit pieces most tutorials skip. A free 30-minute consultation is the fastest way to scope your version.
Talk to an Expert
Our team has built 1,000+ apps. Get personalized help with your project.
Book a free consultation