Cindy Zhu.
Free guides
Business systems Claude

Event-driven lead response blueprint

Hey, it's Cindy 🌱 This blueprint makes the first dial event-driven and keeps consent, duplicates, calling hours, and human handoff outside the model’s judgment.
btw the waitlist for AI System Club is now open! If you're keen on using AI to automate your content, video editing, job search, business or build AI agents, feel free to sign up (only if you want to hehe). Ps. the waitlist gets first dibs:)

The architecture

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 Notion

Do 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.

1. Build the Notion lead table

Create these properties:

Property Type Purpose
Name title Lead name
Phone phone or text Store E.164 format, for example +614…
Email email 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.”

2. Trigger the endpoint

In Notion database automations:

  1. Trigger: Page added.
  2. Add an action: Send webhook.
  3. Send the new page ID and an unguessable workflow token to your HTTPS endpoint.

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.

3. Run fixed gates before AI

The endpoint should reject the call unless every gate passes:

  1. Consent: explicit phone-contact consent is true and the stored wording is present.
  2. Phone: valid destination in E.164 format.
  3. Duplicate: no successful, queued, or in-progress attempt exists for the same lead and source.
  4. Idempotency: the event ID has not already been processed.
  5. Calling hours: calculate against the lead’s local timezone.
  6. Suppression: not on your internal do-not-call list and, where required, checked against the Australian Do Not Call Register.
  7. Attempt limit: under your approved maximum.

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.

4. Start the call

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.

5. Keep Claude’s conversation narrow

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.

6. Human handoff

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.

7. Write the outcome back

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.

Optional Fish Audio voice layer

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.

Cost map

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/

Launch checklist

Speed matters, but a faster unsafe call is still a bad system.

Evidence behind the speed framing

Neither source proves a universal 60-second revenue guarantee. Use 60 seconds as an operational dial target.

the waitlist is now open

AI System Club is launching soon

Build AI systems with me through recorded lessons you can follow at your own pace. Join the waitlist for first access and the founding price.

btw this list gets first dibs
the moment doors open :)