# How to Email Appointment Booking Details After Every AI Voice Call (2026)

> Step-by-step: automatically email appointment booking details (name, phone, date, time, reason) to your team after an AI voice agent call. Post-call extraction + a no-code workflow, with a hospital OPD example and tips for Hindi, Kannada, Tamil and Telugu calls.

Source: https://edesy.in/blog/email-appointment-booking-details-after-ai-voice-call-2026

Your AI voice agent just booked an appointment. The caller hung up happy. But at the front desk, nobody knows yet — the patient's name, number, preferred date and the reason for the visit are sitting inside a call transcript that no one will read until the end of the day.

The fix is simple to describe: **when a call ends with a booking, email the booking details to the people who need to act on them.** And only then — your front desk does not want an email for every enquiry, wrong number and dropped call.

This guide shows how to set that up on Edesy in about 15 minutes, entirely from the dashboard, using two building blocks: **post-call extraction** and a **workflow**. We'll use a hospital OPD (outpatient) desk as the running example, because that's where we built it first — but the same setup works for clinics, salons, test drives, site visits, demo bookings and service appointments.

## Quick verdict (TL;DR)

- **Step 1 — Capture:** add a **Post-Call Extraction** template to your agent with a `booking_status` field (`booked` / `not_booked` / …) plus the booking details you want (name, phone, date, time, reason).
- **Step 2 — Route:** create a **Workflow** with the **Data Extracted** trigger, filtered to your agent.
- **Step 3 — Decide:** a **Condition** step: `booking_status` **Equals** `booked` → otherwise **End workflow**.
- **Step 4 — Send:** a **Send Email** step using the standard call-summary email, **Platform** provider, your team's address(es), transcript **off**.
- **Step 5 — Activate** and place one test call.
- **Cost:** no extra email account needed; extraction runs on every call of the agent.

The full reference with every field and label is in the docs: [Email Booking Details After a Call](https://edesy.in/docs/voice-agent/features/booking-email-notifications).

## Why "email after every call" isn't enough

Edesy already has a one-switch option — **Email call details** under the agent's **Tools → Messaging** — that emails a call summary after each call. It's great for a manager who wants to skim everything.

For bookings it falls short in two ways:

1. **It fires on every call.** A clinic taking 200 calls a day might book 40. Two hundred emails trains the front desk to ignore all of them.
2. **It sends at hang-up.** The structured booking fields come from the post-call AI extraction, which finishes a little after the call ends. An email sent at hang-up can't reliably include them.

The workflow route fixes both: it starts **after** extraction finishes, and a Condition step lets only real bookings through.

## The setup at a glance

```
Call ends
  → Post-call extraction reads the transcript
  → "Data Extracted" trigger fires
  → Condition: booking_status equals "booked"?
       yes → Send Email to the front desk
       no  → End workflow (nothing sent)
```

## Step 1: Turn the conversation into booking data

A voice agent "books" an appointment by talking: it asks for the name, age, phone number, preferred date and time, reads them back, and says "your appointment request is noted". That's natural for the caller — but it isn't data yet.

**Post-call extraction** turns it into data. After each call, an AI reads the transcript and fills in the fields you define.

Open your agent → **Behavior** tab → **Post-Call Extraction** (under *Capture & outcomes*) → **New Template**. (Or click **Preset** and start from *Appointment Booking* or *Healthcare Appointment*, then add the fields below.)

Turn on **Default Template** so it runs on every call, then **Add** these fields:

| Field Key | Data Type | What to put in the AI Description |
|-----------|-----------|-----------------------------------|
| `booking_status` | Single Choice (Enum) — `booked, not_booked, callback_requested, not_reached` | *booked = the caller agreed to an appointment AND gave at least their name and a preferred date or time* |
| `patient_name` | Text | Name of the **patient** — not the caller, if a relative is calling |
| `patient_age` | Text | Age as stated |
| `mobile_number` | Text | Contact number for the booking, digits only |
| `city` | Text | City or area |
| `main_concern` | Text | The health concern in a few plain words, with duration. No diagnosis. |
| `preferred_date` | Text | The confirmed date, e.g. "14 Oct 2026" |
| `preferred_time` | Text | The confirmed time, e.g. "10:30 AM" |
| `urgency` | Single Choice (Enum) — `urgent, routine, unknown` | What counts as urgent for your specialty |
| `call_summary` | Text | Two or three sentences for the front desk |

Click **Create Template**, then open a past call and press **Extract data** to see the result on a real conversation.

### Three lessons from real calls

We built this first for a hospital whose agent takes OPD bookings in several Indian languages. Testing the template on real calls taught us three things worth copying:

**1. Make "booked" a strict enum with a definition.** The workflow will compare the value *exactly*. Free text gives you "Booked", "yes", "appointment fixed" — and a Condition that never matches. Also define it: "the caller agreed to come" without a date isn't a booking your desk can act on.

**2. Never let the model invent a weekday.** Our first version wrote dates like "Saturday 14 Jun 2026". The date was right; the weekday was wrong — 14 June 2026 was a Sunday. Language models are unreliable at calendar arithmetic, and a wrong weekday in a front-desk email can send a patient in on the wrong day. The fix is one sentence in the description: *"Do NOT add a weekday name unless the caller said one."* After that change, the same calls came back as plain "14 Jun 2026".

**3. Ask for English output from Indian-language calls.** Callers mix languages mid-sentence. In **Additional AI Instructions**, write: *"The transcript may be in Kannada, Hindi, Tamil, Telugu or English, often mixed. Write free-text fields in English; write names and places in Roman letters as pronounced."* Every email then reads the same, whichever language the patient spoke.

> **Tip:** name your summary field `call_summary`. The standard email template uses it as the **Summary** at the top of the email.

## Step 2: Create the workflow

Go to **Workflows** (sidebar → *Automation*) → **Create Workflow**:

- **Workflow Name:** `OPD Booking Email`
- **Trigger Type:** **Data Extracted** — *trigger after post-call AI extraction completes*
- **Agent:** your booking agent

If the agent has no extraction template, the trigger panel warns *"This agent has no extraction template yet"* — that's your cue to finish Step 1 first.

Click **Create Workflow** to open the builder.

## Step 3: Add the Send Email step

Add the email step **before** the condition — the condition's "Then go to step" list only shows steps that already exist.

Click **Add** → **Send Email**:

- **Email content:** *Call summary (standard template)*
- **Email Provider:** *Platform (Vani default)* — sent by the platform, no SMTP or email account needed
- **Recipient:** `frontdesk@yourhospital.com, opd@yourhospital.com`
- **Include transcript:** **off**

The standard email has the summary, caller phone, call time and duration, a recording link, and a **Collected Information** table with every field from Step 1.

**Why transcript off?** In healthcare, the transcript is the patient describing symptoms. The front desk needs *who, when and why* — not the whole conversation — and inboxes get forwarded. Keep the transcript in the dashboard, where access is controlled, and send only what the desk needs.

Want a subject line the desk can scan? Choose **Custom** instead and use **Insert a variable** — the booking fields appear under *From the call (after extraction)*:

```
Subject: New OPD request — {{patient_name}}, {{preferred_date}} {{preferred_time}}
```

Use **Send a test email** to confirm each address receives mail (and check spam the first time).

## Step 4: Add the Condition step

Click **Add** → **Condition** → **Add Condition**:

| Field name | Operator | Value | Then go to step |
|------------|----------|-------|-----------------|
| `booking_status` | Equals | `booked` | Send Email |

Leave **Default Step (if no conditions match)** as **End workflow**.

That empty default is the whole point: a call where `booking_status` is `not_booked`, `callback_requested` or `not_reached` simply ends — no email.

On the canvas, check the shape: **trigger → Condition → (matched) Send Email**, then click **Save**.

> **Want callbacks too?** Add a second condition row, `booking_status` Equals `callback_requested`, pointing at a second Send Email step addressed to whoever returns calls.

## Step 5: Test and activate

1. Click **Test run** — it previews the flow with sample data. No call is placed and nothing is sent.
2. Click **Activate**. The status changes from *Draft* to *Active*.
3. Call your agent and book an appointment.
4. Open **Executions** for the workflow. The run should show the Condition taking the `booked` branch and **Send Email** completed.

To catch up on bookings made before you activated, use **⋯ → Run on past calls**.

## What the front desk receives

For a booking call, the email looks like this (an illustrative example — fields come from your template, in the order the extraction returns them):

| | |
|---|---|
| **Summary** | Caller's father has had acidity and bloating for three weeks. OPD appointment booked for 16 Oct 2026 at 10:30 AM. |
| **Caller** | +91 98xxx xxxxx |
| **booking_status** | booked |
| **main_concern** | acidity and bloating for three weeks |
| **preferred_date** | 16 Oct 2026 |
| **preferred_time** | 10:30 AM |
| **urgency** | routine |
| **Recording** | Listen link |

An enquiry call about parking or consultation fees produces **no email at all**.

## Beyond email

The same trigger and condition can drive other actions — add steps after the Condition instead of, or as well as, the email:

- **Google Sheets** — append each booking as a row for a shared appointment register.
- **WhatsApp** — send the patient a confirmation template with the date, time and address.
- **Webhook** — push the booking into your HIS, CRM or practice-management system.
- **Calendar** — let the agent book directly into Google Calendar during the call.

## Common mistakes

| Mistake | Symptom | Fix |
|---------|---------|-----|
| `booking_status` as free text | Workflow runs, never emails | Single Choice (Enum) with exactly `booked` |
| Default Step set to Send Email | Every call emails | Default Step = **End workflow** |
| Send Email wired straight to the trigger | Every call emails | trigger → Condition → Send Email |
| No booking flow in the agent's prompt | Fields empty | Make the prompt collect and read back each detail before ending |
| Extraction template not marked Default | Workflow never triggers | Turn on **Default Template** |

## FAQ

**Can the email go out only when an appointment was booked, not after every call?**
Yes. The extraction template records a `booking_status` for every call, and the workflow's Condition step sends the email only when it equals `booked`. Enquiries, wrong numbers and unfinished calls end the workflow without sending anything.

**Do I need my own email account or SMTP server?**
No. Choose *Platform (Vani default)* as the email provider and the platform sends the email for you. To send from your own domain, connect Mailgun, SendGrid, Resend or Postmark and pick it as the provider.

**Can I send the details to more than one person?**
Yes. Put several addresses in **Recipient**, separated by commas. Each recipient gets the same email.

**Will the email include the full call transcript?**
Only if you want it to. The call-summary email has an **Include transcript** switch. For healthcare and other sensitive conversations, turn it off: the email still has the summary, the booking fields and a recording link.

**Does this work for calls in Hindi, Kannada, Tamil, Telugu or other Indian languages?**
Yes. The extraction model reads the transcript in the language spoken, including code-mixed speech. Instruct it to write free-text fields in English and names in Roman letters so every booking reads the same.

**Can I email the booking to the patient or customer as well?**
You can, if the agent collects their email — **Recipient** accepts a variable like `{{customer_email}}`. Spelling an email address over the phone is error-prone, though, so most clinics send the patient a WhatsApp or SMS confirmation and keep email for the internal team.

**What about bookings made before I set this up?**
Once the workflow is active, use **Run on past calls** from the workflow's menu. Calls from before the extraction template existed can be extracted first with the call's **Extract data** button.

## Get started

Already using an AI voice agent for bookings? Open the agent's **Post-Call Extraction**, add a `booking_status` field, and your front desk can be getting booking emails within the hour. Full field-by-field reference: [Email Booking Details After a Call](https://edesy.in/docs/voice-agent/features/booking-email-notifications).

New to Edesy? [Start free](https://voice-agent.edesy.in/signup) and build an [AI appointment booking agent](https://edesy.in/ai-voice-agent/use-cases/appointment-booking) that answers in your patients' languages — or see [post-call email notifications](https://edesy.in/ai-voice-agent/features/post-call-email-notifications) for everything you can send after a call.
