> For the complete documentation index, see [llms.txt](https://docs.limecall.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.limecall.com/ai-receptionist/actions-and-webhooks.md).

# Actions & webhooks

What happens automatically after a call.

Open **AI Receptionist → Actions & Webhooks**.

Actions are things that happen automatically once a call ends.

## What actions can do

**Draft & send emails** — email a summary or a follow-up, to the caller or to your team. For example "Email my team about a hot lead".

**Send a text message** — SMS the caller with a confirmation, a link or directions.

**Post to a webhook** — send the call data to your own system.

**Create or update a CRM record** — where a CRM is connected.

## Conditional actions

Actions can be conditional, which is where they become useful. Rather than emailing every call, email only the qualified ones; rather than texting everyone, text only the people who booked.

Set the condition from qualification results, call type, or collected fields.

## Approval mode

**Approval mode** decides whether actions run automatically or wait for a human.

**Let me check it before it sends** holds the action as a draft. Use this for anything customer-facing until you trust it.

**Confirm with the caller before executing** makes the assistant check with the caller before doing something irreversible — worth keeping on for bookings and cancellations.

## Webhooks

**POST to** sends a JSON payload to a URL you control when a call ends.

Configure:

* **Method** — usually POST.
* **Header name** and **Authentication** — a shared secret so your endpoint can verify the request came from LimeCall.
* **Verified-caller param** — passes whether the caller's identity was verified.

The payload includes the call metadata, the summary, the transcript, the collected fields and the qualification result.

{% hint style="warning" %}
Always authenticate your webhook endpoint. An unauthenticated URL that creates records can be called by anyone who discovers it.
{% endhint %}

Your endpoint should return quickly — do the work asynchronously rather than holding the connection open. See [Webhook events](/developers/webhook-events.md).

## Live lookups in your API

Under **Developers**, **Live lookups in your API** lets the assistant call your API *during* a call and use the answer in conversation — checking an order status, looking up a booking, confirming whether someone is an existing customer.

This is the most powerful feature here and the one most worth getting right. Two rules:

* **Be fast.** The caller is waiting in silence. Target under a second; anything over two is a noticeably awkward pause.
* **Fail gracefully.** If your API is down, the assistant should say it cannot check right now and offer to take a message — not stall.

## Testing actions

Use **Send test** to fire a sample payload at your endpoint before relying on it.

After a real test call, check every action fired: the email arrived, the webhook was received, the CRM record was created.

## Idempotency

Webhook delivery is retried on failure, so your endpoint may receive the same call more than once. Key on the call ID and ignore duplicates, rather than creating a second record each time.
