> ## Documentation Index
> Fetch the complete documentation index at: /help/llms.txt
> Use this file to discover all available pages before exploring further.

# Automations driven by calls

> Start a campaign every time a call with a contact is recorded, ask the AI about the call, pull out the details and send the follow-up. Calls come from Google Meet, Zoom, any other tool or an upload.

> [!NOTE]
>
> **Pro plan.** Calls are part of Meetings, and the call steps part of the AI assistant: both are in Pro and Agency (and the free trial). Each call step uses a few AI credits. See [Plans and billing](/help/account/billing.md).

Every time you have a call with a contact, Kerux can follow up for you: check what kind of call it was, keep the details on the contact, and send the right email.

## Where calls come from

| Source | How it arrives |
| - | - |
| **Google Meet**, **Zoom** | Kerux reads the transcript after the meeting. See [Call transcripts and summaries](/help/campaigns/call-transcripts.md). |
| **Another tool** (a notetaker, a dialer) | It posts the call to a call intake URL, directly or through Zapier or Make, or through the API. |
| **Added in Kerux** | On the contact page's **Calls** card: **Add a call** > **Paste transcript**, **Upload recording** or **Record** (see below). |

## Start a campaign when a call is recorded

1. In the campaign, click **+ Add** on the **Trigger** half of the start box and pick **Call recorded** (under **Meetings**).
2. Pick where the call comes from (**Any**, **Google Meet**, **Zoom**, **Another tool**, **Added in Kerux**).
3. Optional: **Only calls longer than (minutes)**, to skip quick calls. A call of unknown length doesn't pass this filter.

The contact enters once per call, as soon as the transcript is there (before the AI summary). To wait for the summary instead, use **Call summary ready**.

Use these variables in the campaign's steps:

| Variable | What it holds |
| - | - |
| `{{call.source}}` | Where the call came from: Google Meet, Zoom, or the tool's name |
| `{{call.title}}` | The call's title |
| `{{call.started_at}}` | When it started, in your workspace's time zone |
| `{{call.duration_minutes}}` | Its length in minutes (empty when unknown) |
| `{{call.transcript_url}}` | A link to the call's transcript on the contact page in Kerux |
| `{{call.recording_url}}` | A link to the recording at its tool (outside calls only) |

With **Call summary ready**, `{{call.summary}}`, `{{call.interest}}`, `{{call.next_steps}}` and `{{call.follow_up_date}}` are there too.

## Call steps

Add them from **+** > **Calls**. They read the call that started the campaign, or the contact's latest call with a transcript.

* **Ask AI about the call**: a question with Yes / No / Not sure, or your own answers (for example "Demo", "Pricing", "Support"). Each answer is its own path on the canvas. Example: "Was this call a product demo?"
* **Extract from the call**: list what to find in plain words, for example `budget, decision maker, next step, 3 bullet points summary`. Each value is a step output (`{{steps.<step>.budget}}`), and with **Also save each value in the contact's custom field of the same name** it fills the contact's field of the same name. Values the call doesn't have stay empty, so a message that needs them waits (safe sending).
* **Draft the follow-up with AI**: the AI writes an email from the call. By default it waits for you in **My tasks** > **Follow-ups to approve**: approve it as written, edit it, or decline it (the campaign then takes the **declined** path). Choose **Use it right away** only if you want it used without a review. Use the text in the next email step as `{{steps.<step>.text}}`.

What the people in the call said is information for the AI, never instructions: a sentence in the call can't make the AI do something else.

**If something stops the contact:**

| Shown on the contact | What to do |
| - | - |
| Waiting for the call's transcript | Nothing: it goes on when the transcript is there (up to about a day). |
| The contact has no call with a transcript | Add the call on the contact page's **Calls** card, then **Retry**. |
| The AI assistant is part of Pro and Agency | Upgrade in **Settings** > **Billing**, then **Retry**. |
| The AI isn't available / used this month's AI credits | It waits and tries again by itself; after a few tries it stops with **Retry**. Never marked finished. |

## Ready-made campaigns

**Campaigns** > **New campaign** > **Build it myself** > **From a template** (**Browse templates**), section **After a call**:

* **Demo call follow-up**: the AI checks if the call was a demo. Yes: an email with your intro video (set the campaign variable `intro_video_link`). No or Not sure: a task for the contact's owner.
* **Discovery call: budget, next step and pipeline**: the AI saves the budget, who decides and the next step on the contact, moves the contact to **Proposal** and adds a task.
* **Thanks for the call**: an hour after each recorded call, a short thank-you email.

## Suggest a follow-up from a call

On the contact page's **Calls** card, **Suggest a follow-up** asks the AI builder to draft a follow-up campaign from that call's summary and next steps. It opens the draft with notes, like **Create with AI**. Nothing is launched until you do it.

## Send calls from another tool

**Meetings** > **Connected calendars** > **Call recordings** > **Other call tools** > **Create URL**. Paste the URL in your tool's webhook settings (or in a Zapier or Make step) and send JSON with these fields:

| Field | Required | What it is |
| - | - | - |
| `email`, `lead_id` or `linkedin_url` | One of them | Who the call was with |
| `transcript` | Yes | Plain text, `Speaker: words` lines, WebVTT, or a list of `{ "speaker", "text", "start" }` turns |
| `id` | Recommended | The tool's id for the call: the same id twice is one call |
| `title`, `started_at`, `duration_minutes` (or `duration_seconds`), `recording_url`, `source` | No | Shown on the contact and in `{{call.*}}` |

```json theme={null}
{
  "id": "call_8812",
  "email": "ana@example.com",
  "title": "Intro call",
  "started_at": "2026-11-07T15:00:00Z",
  "duration_minutes": 32,
  "source": "Fathom",
  "transcript": "Ana: Thanks for the demo.\nYou: Glad it helped. Shall I send a proposal?",
  "recording_url": "https://example.com/recordings/8812"
}
```

* A call for someone who isn't a contact is ignored.
* When several contacts have that address, nothing runs: the call waits in **My tasks** > **Calls to match** until you pick the contact.

## API and webhooks

* `POST /v1/calls` adds a finished call (same fields as above, `source_name` for the tool). The answer says `recorded`, `needs_review` (pick the contact with `POST /v1/calls/{id}/assign`) or `duplicate`. If you transcribe recordings yourself, send `source` `upload` or `recorded` and the lines as `segments` (`start_seconds`, `text`) instead of `transcript`.
* `GET /v1/calls/{id}` returns a call with its text; `GET /v1/leads/{id}/calls` lists a contact's calls; `GET /v1/unmatched-calls` lists calls waiting for a contact.
* `POST /v1/calls/uploads` and `PUT /v1/calls/{id}/parts/{n}` upload a recording in parts, when transcription on the server is available in your workspace (otherwise `TRANSCRIBE_NOT_AVAILABLE`: send the transcript to `POST /v1/calls`).
* `POST /v1/call-drafts/{id}` approves (optionally edited) or declines a drafted follow-up.
* Webhook `call.recorded` fires once per call and contact when the transcript is stored. See [Webhooks](/help/developers/webhooks.md).

## Upload or record a call

On a computer, open the contact page's **Calls** card and click **Add a call**:

* **Upload recording**: pick an audio or video file (MP3, M4A, WAV, WebM, MP4...) of up to 2 hours.
* **Record**: click **Record the call**, pick the browser tab or window of your online call and turn on sharing its audio, so both sides are recorded. **Microphone only** records just your microphone; Kerux says so while it records. Click **Stop and add** when the call ends.

Let everyone on the call know it's being recorded.

The call is transcribed on your computer: **the recording never leaves your device**, only the text with its timestamps is added to the contact. Then it works like any other call: **Call recorded** starts your campaigns, the call steps read it and the summary is written. Pick the call's **Language**, or leave **Detect automatically**.

* **How long it takes**: the first time, your browser downloads the transcription model (it keeps it for next time). A call usually takes a few minutes; older or slower computers take longer. You can close the panel and keep working, but keep the tab open.
* **Reloads and cancels**: if the page reloads or you click **Cancel**, the contact's **Calls** card shows the call that isn't added yet. Click **Open** > **Continue** to pick up where it stopped, or **Discard**.
* **Phones and tablets**: uploading and recording are on a computer. On a phone, paste the transcript instead.
* **Browsers**: use a recent Chrome, Edge, Safari or Firefox. If your browser can't transcribe, Kerux says so and offers **Paste a transcript**.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.