Guides
A step-by-step guide to triggering AI voice calls within seconds of a form submission using Thoughtly automations, webhooks, and integration triggers — so every inbound lead gets a callback before they go cold.
Last updated
A lead fills out your quote request at 2:14 PM. Your CRMCRMThe system of record for leads, contacts, deals, and activity. Thoughtly reads from and writes to your CRM continuously. logs it. A rep sees it at 4:30 PM — maybe. By then the lead has talked to two competitors, forgotten your brand, and stopped answering unknown numbers. This is the speed-to-lead problem, and it costs high-volume teams more pipeline than most realize.
Thoughtly solves it by triggering an AI voiceAI voiceAn artificially generated, natural-sounding voice produced by a TTS model. Thoughtly supports a library of AI voices and brand-specific cloning. call within seconds of a form submission — no human in the loop, no batch processing delay, no leads sitting in a queue. This guide walks through the full setup: building the agent, wiring the form trigger, passing context into the call, adding fallback channels, syncing outcomes back to your CRM, and measuring the results.
Research from the Lead Response Management Study found that contacting a lead within five minutes of a form submission makes you 21 times more likely to qualify that lead compared to waiting 30 minutes. After an hour, the odds drop by more than 60 times.
The math is simple: a form submission is a high-intent signal. The lead is actively comparing options, probably has the browser open, and is expecting a response. Every minute of delay moves you from "timely" to "one more voicemail in the stack."
At scale — 500, 1,000, or 5,000+ inbound leads per month — manual follow-up cannot hit that window consistently. Reps get pulled into existing conversations. Leads submitted at 11 PM sit until morning. Weekend forms wait until Monday. An automated voice agentVoice agentAn autonomous, conversational interface that interacts with humans over the phone — answering, qualifying, and routing calls without human staffing. eliminates the bottleneck entirely.
If you already have an agent that qualifies inbound leads, you can reuse it. Otherwise, open the Agent Builder and create a new voice agent designed for form-fill callbacks.
The Start node is always step 0. It fires the moment the call connects. Keep it short — the lead just submitted a form and knows why you are calling.
Add a Speak node (prompt mode) immediately after Start. Reference the form context using metadata variables so the greeting is personalized, not generic:
Example prompt: "Hi {{metadata.first_name}}, this is [Agent Name] from [Company]. You just requested a quote for {{metadata.interest}} — I'd love to help you with that. Do you have a couple of minutes?"
Metadata is injected per-call from the automation (configured in Step 3). This makes every call feel immediate and relevant rather than cold.
Configure Variables on your Speak nodes to extract structured data from the conversation. For high-consideration consumer funnels, focus on:
Variables extract immediately after the caller replies and before outcomes evaluate. Set clear extraction instructions and include "do not invent values" to prevent hallucinationHallucinationWhen an LLM-driven agent confidently states something incorrect. Mitigated with RAG, strict prompting, and evals against ground-truth data..
Use Outcomes to branch the conversation based on what the agent learned:
Open Tools → Automations in the Thoughtly dashboard (or go directly to app.thoughtly.com/automation). Create a new automation and select your trigger.
If your form tool has a native Thoughtly integration, select it directly:
After selecting the trigger, go to the Output tab and click Refresh after submitting a test form. This locks the schema so you can map fields accurately in later steps.
For form tools without a native integration — or when you want maximum flexibility — use the Incoming Webhook trigger:
A typical webhook payload looks like this:
{ "contact": { "first_name": "Maria", "last_name": "Gonzalez", "phone": "+18005551234", "email": "[email protected]" }, "interest": "home_insurance", "zip": "90210", "source": "website_quote_form" }
If your form tool connects to Zapier or Make but not directly to Thoughtly, create a Zap or scenario that triggers on form submission and sends a POST to Thoughtly's automation webhook endpoint. This works with virtually any form tool — WordPress Gravity Forms, Webflow, Unbounce, Leadpages, and hundreds more.
The trigger fires. Now your automation needs to create a contact record and place the call — with the form data attached.
Add a "Create or Update Contact" step. Map the phone number, name, and email from the trigger output using the data picker (lightning icon). This ensures a Thoughtly Contact record exists before the call, enabling persistent Attributes and call history tracking.
Use the "Add Attributes to Contact" step to store data that should survive across calls. Attributes persist on the contact record and are available to the agent via {{metadata.system.contact.attributes.ATTRIBUTE_NAME}}.
Good attributes for form-fill contacts include lead source, form name, zip or service area, interest category, and any vertical-specific detail (policy type, property type, program of interest).
Add a "Call Contact" step. Select the agent you built in Step 1. In the Metadata field, pass a JSON object with form-specific context that the agent needs for this call only:
Example metadata: {"first_name": "Maria", "interest": "home_insurance", "zip": "90210", "lead_source": "website_quote_form"}
Inside the agent, reference these values as {{metadata.first_name}}, {{metadata.interest}}, and so on. Metadata is temporary — it exists only for this call. Anything you need long-term should be an Attribute.
Not every lead answers on the first ring. Your automation should handle non-connects gracefully instead of dropping the lead.
After the Call Contact step, add a Conditions step that checks the call outcome:
Example: "Hi Maria, we just tried reaching you about your home insurance quote request. Reply here or call us back at [number] — we have your details ready."
This creates a multi-channel sequence that mirrors how high-performing sales teams work — voice first, then SMS, then email — without any human effort.
Create a second automation triggered by On Call Completed. Scope it to the agent(s) handling form-fill callbacks.
This automation captures everything the agent learned and writes it back to your CRM:
This replaces legacy post-call settings (which Thoughtly is phasing out in favor of Automations). The On Call Completed trigger gives you full access to branching, conditions, and multi-step post-call workflows.
Important: The "Refreshing Output" action on Call steps places a real call. Always test with internal phone numbers.
Track these metrics weekly to evaluate your form-fill follow-up automation:
| Metric | Target | Why It Matters |
|---|---|---|
| Speed-to-lead | Under 60 seconds | The time from form submission to first ring. Thoughtly's automation triggers typically fire within seconds. |
| Connect rate | 35–50% | Percentage of calls where the lead answers. Higher than manual because the call arrives while the lead is still engaged. |
| Qualification rate | 40–60% of connects | Percentage of connected calls where the lead meets your basic fit criteria. |
| Appointment or booking rate | 20–35% of connects | Percentage of connected calls that result in a scheduled next step. |
| CRM sync accuracy | 100% | Every call outcome, disposition, and captured variable should appear in your CRM within seconds of call completion. |
| Fallback engagement | 15–25% | Percentage of non-connects who respond to the SMS or email follow-up within 24 hours. |
Thoughtly has native integration triggers for Typeform, GoHighLevel, and JotForm. Any other form tool that can send a webhook — including Google Forms, HubSpot Forms, WordPress (Gravity Forms, WPForms, Contact Form 7), Webflow, Unbounce, and Leadpages — works via the Incoming Webhook trigger. If your tool connects to Zapier or Make, you can route submissions to Thoughtly through those platforms as well.
Yes. Every field in the form submission payload is available as a variableVariableA named value the voice agent stores during a conversation — caller name, intent, qualifying answers — and uses to drive routing and post-call actions. in the automation. You can pass any field as metadata when placing the call, and the agent can reference it during the conversation using {{metadata.field_name}}. Common examples include interest type, zip code, preferred language, referral source, and any vertical-specific detail.
Configure your automation to branch on the call outcome. For no-answer or voicemail results, trigger a Send SMS step immediately, followed by a Send Email step. You can also add a Delay step and retry the call once or twice over the next 24 hours. The key is having a defined path for non-connects rather than letting those leads go cold.
With a native integration trigger or webhook, the automation fires within seconds of form submission. Total time from form submit to first ring is typically under 60 seconds, depending on the trigger path and any pre-call steps (like CRM lookup) in the automation.
Not necessarily. If multiple forms use the same webhook URL and payload structure, a single automation handles all of them. You can differentiate by passing a form_name or source field in the webhook payload, then use Conditions steps to branch the automation logic based on which form triggered it. For forms with very different qualification flows, separate automations and agents may be cleaner.