# Email Booking Details After a Call

> Automatically email appointment or booking details to your team after an AI voice call — only when a booking was actually made. Set up with post-call extraction and a workflow, no code.

Source: https://edesy.in/docs/voice-agent/features/booking-email-notifications

When your voice agent books an appointment, your front desk needs the details — patient or customer name, phone, preferred date and time, the reason for the visit — in their inbox, not buried in a call transcript.

This page is the canonical reference for sending those details by email **only for calls where a booking was made**. It takes about 15 minutes in the dashboard and needs no code.

> Want the narrative walkthrough with a full hospital OPD example and tips for Indian-language calls? See the tutorial: [How to Email Appointment Booking Details After Every AI Voice Call](https://edesy.in/blog/email-appointment-booking-details-after-ai-voice-call-2026).

## Two ways to send post-call email

| Option | Where | Sends | Best for |
|--------|-------|-------|----------|
| **Email call details** | Agent → **Tools** → **Messaging** | After every call, or only on a matching disposition / outcome | A summary of every call to a manager |
| **Workflow + extraction** (this page) | Agent → **Behavior** → **Post-Call Extraction**, then **Workflows** | Only when the extracted data says a booking was made | Booking details to a front desk, sales desk or ops inbox |

Use the workflow route when the email must contain **structured booking fields** and must **not** be sent for enquiries, wrong numbers or unfinished calls. It runs after the post-call AI extraction has finished, so the booking fields are always in the email.

## How it works

```
Call ends → Post-call extraction reads the transcript → "Data Extracted" trigger
   → Condition: booking_status equals "booked"
        → yes: Send Email (to your team)
        → no:  end workflow (nothing is sent)
```

## Step 1: Capture the booking as structured data

Open your agent → **Behavior** tab → **Post-Call Extraction** (under *Capture & outcomes*).

1. Click **New Template** (or **Preset** → *Appointment Booking* / *Healthcare Appointment* to start from a template, then edit it).
2. Give it a **Template Name**, e.g. `Booking Details`.
3. Turn on **Default Template** so it runs on every call of this agent.
4. Under **Extraction Fields**, click **Add** for each field:

| Field Key | Data Type | Allowed Values / 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 a name and a preferred date or time"* |
| `customer_name` | Text (free-form) | Name of the person the booking is for |
| `mobile_number` | Text (free-form) | Contact number given for the booking, digits only |
| `preferred_date` | Text (free-form) | Date confirmed on the call, e.g. "14 Oct 2026". *Don't add a weekday unless the caller said one.* |
| `preferred_time` | Text (free-form) | Time or part of day confirmed |
| `reason` | Text (free-form) | Reason for the visit in a few words |
| `call_summary` | Text (free-form) | Two or three sentences for the front desk |

5. Click **Create Template**.

**Check it on a real call:** open any past call → **Extract data** (or **Re-extract data**). You should see `booking_status` and the booking fields filled in.

### Tips for reliable fields

- Make `booking_status` an **enum**, not free text — the workflow matches it exactly.
- Describe *what counts* as booked in the AI Description. "Agreed to come" without a date is usually not a booking.
- For Indian-language calls, add in **Additional AI Instructions**: *"Write free-text fields in English; write names and places in Roman letters as pronounced."*
- Ask the model **not to invent weekdays**. A computed "Saturday 14 Jun" can be wrong; a wrong weekday sends a patient on the wrong day.
- Name the summary field `call_summary` — the standard email shows it as the **Summary**.

## Step 2: Create the workflow

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

1. **Workflow Name**: `Booking Details Email`.
2. **Trigger Type**: **Data Extracted** — *trigger after post-call AI extraction completes*.
3. **Agent**: pick your booking agent (leave empty to run for all agents).
4. Click **Create Workflow**.

### Add the Send Email step first

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

| Setting | Value |
|---------|-------|
| **Email content** | Call summary (standard template) |
| **Email Provider** | Platform (Vani default) — no email account needed |
| **Recipient** | `frontdesk@yourclinic.com, ops@yourclinic.com` (comma-separated) |
| **Include transcript** | Off — keeps the conversation itself out of the email |

The standard email contains the summary, caller phone, duration, a recording link and a **Collected Information** table with every extracted field.

Prefer your own wording? Choose **Custom** and use **Insert a variable** to drop in fields from the group *From the call (after extraction)*, e.g. subject `New appointment — {{customer_name}}, {{preferred_date}} {{preferred_time}}`.

Use **Send a test email** to check delivery to each inbox.

### Then 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 is what stops emails for calls with no booking.

Make sure the Condition is the **first** step (on the canvas, the trigger connects to the Condition, and the Condition's matched branch connects to Send Email). Click **Save**.

## Step 3: Test, then activate

1. **Test run** — previews the whole flow with sample data. No call is placed, nothing is sent.
2. Click **Activate**. Status changes from *Draft* to *Active*.
3. Place a real test call and book an appointment.
4. Open **Executions** → the run → confirm the Condition took the `booked` branch and **Send Email** completed.

Bookings made **before** activation can be emailed with **⋯ → Run on past calls**.

## Troubleshooting

| Symptom | Cause | Fix |
|---------|-------|-----|
| Workflow never runs | Agent has no default extraction template | Trigger panel warns *"This agent has no extraction template yet"* — complete Step 1 |
| Runs but never emails | `booking_status` value differs (e.g. `Booked`, `yes`) | Use an enum with exactly `booked`, and the same value in the Condition |
| Emails sent for every call | Condition has a default step, or Send Email is connected straight to the trigger | Default Step = **End workflow**; trigger → Condition → Send Email |
| Booking fields empty | The agent's prompt never asks for them | Add a booking flow to the prompt that collects and confirms each detail |
| Email not received | Spam folder or a typo in Recipient | **Send a test email**; add the sender to safe senders |

## Related

- [Webhooks](https://edesy.in/docs/voice-agent/features/webhooks) — send the same data to your CRM or HIS
- [Variables](https://edesy.in/docs/voice-agent/features/variables) — dynamic content in prompts
- [Appointment booking agent example](https://edesy.in/docs/voice-agent/examples/appointment-booking)
- [Transcripts](https://edesy.in/docs/voice-agent/features/transcripts)
