Website form
→ Notion lead row
→ database automation sends webhook
→ small server-side call endpoint
→ fixed consent / duplicate / calling-hours gates
→ Retell starts outbound call through Twilio
→ Claude handles the narrow approved conversation
→ book, warm-transfer, or notify a person
→ signed Retell webhook writes outcome back to NotionDo not use a Claude scheduled task for a 60-second response target. Claude’s recurring schedules are hourly, daily, weekly, or weekdays. The form event must trigger the workflow.
Create these properties:
| Property | Type | Purpose |
|---|---|---|
| Name | title | Lead name |
| Phone | phone or text | Store E.164 format, for example +614… |
| Optional follow-up | ||
| Consent to phone contact | checkbox | Must be true before any call |
| Consent source | text | Exact form and wording shown |
| Submitted at | created time | Used for latency |
| Timezone | select or text | Needed for legal calling window |
| Lead source | select | Form or campaign |
| Call status | select | New, queued, calling, answered, transferred, booked, failed, suppressed |
| Attempt count | number | Stop after the approved limit |
| Idempotency key | text | Prevent duplicate dials |
| Retell call ID | text | Reconcile callbacks |
| Last outcome | text | Human-readable result |
The website form must include a clear, unbundled phone-contact consent statement. Store the wording and timestamp. Consent is not “the model thinks this looks interested.”
In Notion database automations:
Notion’s database automations are a paid feature. Official guide: https://www.notion.com/help/database-automations
The endpoint keeps the Notion integration token, Retell key, Twilio credentials, and Claude key server-side. Never put them in the form, Notion page, browser code, or video.
The endpoint should reject the call unless every gate passes:
For Australian telemarketing, ACMA lists 9am–8pm Monday to Friday, 9am–5pm Saturday, no Sunday calls, and no calls on national public holidays. Consent and exemption rules still matter. Source: https://www.acma.gov.au/say-no-to-telemarketers
If a gate fails, set Call status = suppressed, record
the reason, and stop. Claude never overrides this decision.
Use Retell’s create phone call endpoint with your approved from-number, the lead’s to-number, and metadata containing the Notion page ID and idempotency key.
Write the Retell call ID back before another event can create a second dial.
The opening should be explicit:
Hi [first name], this is the AI assistant for [business]. You asked us to contact you about [form topic]. Is now an okay time for two quick questions, or would you prefer a person to call later?Approved jobs:
Forbidden jobs:
One misheard answer should not become a confident CRM fact. Read back important fields and let the person correct them.
Configure Retell’s transfer-call tool for the approved team number. Transfer immediately when:
Retell transfer tool: https://docs.retellai.com/build/single-multi-prompt/transfer-call
If nobody is available, offer a booking or record a callback request. Do not trap the person in the bot.
Use signed Retell webhooks to update:
Retell webhooks: https://docs.retellai.com/features/webhook-overview
Verify the webhook signature, reject replays, and keep the raw event for troubleshooting.
Fish Audio can provide real-time WebSocket TTS, and it has published telephony support. In this blueprint it is the voice layer only. It is not the trigger, consent gate, conversation brain, phone carrier, or human-transfer logic.
This is a custom integration, not a documented one-click Retell connector. Test latency, pronunciation, barge-in, disclosure, and fallback before production.
| Layer | Cost driver | Check here |
|---|---|---|
| Notion automation | Paid Notion plan | https://www.notion.com/pricing |
| Endpoint | Requests and runtime | Your chosen Cloudflare, Vercel, or server host |
| Retell | Per-minute agent and telephony components | https://www.retellai.com/pricing |
| Twilio | Australian number and call minutes | https://www.twilio.com/en-us/voice/pricing/au |
| Claude | Tokens used by the conversation | https://www.anthropic.com/pricing |
| Fish Audio, optional | Real-time TTS usage | https://fish.audio/plan/ |
Speed matters, but a faster unsafe call is still a bad system.
Neither source proves a universal 60-second revenue guarantee. Use 60 seconds as an operational dial target.