> For the complete documentation index, see [llms.txt](https://docs.dapta.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dapta.ai/ai-voice-agents/analyze-your-calls/post-call-analysis-destinations.md).

# Post Call Analysis – Destinations

Send every call's results to Google Sheets, HubSpot or a Dapta flow as soon as the call ends, test each destination with the agent's latest call, and see in its History whether every call arrived.

**After-call destinations** send the results of every call to the tools your team already uses: a new row in Google Sheets, an updated contact in HubSpot, or a Dapta flow that runs whatever comes next. They work on their own as soon as each call ends.

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-f275ab053af95905dd3d016ea98bc3c257f30288%2Fvoice-agents-post-call-destinations.mp4?alt=media>" %}

{% file src="/files/gukxSrrDMw1YRt5OT6sb" %}

You'll find them on the **Call Analysis** tab of any voice agent, below **Data Retrieval from your Calls**. The rest of the tab is explained in [Post-call analysis](/ai-voice-agents/analyze-your-calls/post-call-analysis.md).

| Destination       | What happens after each call                                                                                                                                             | What you need                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
| **Google Sheets** | A new row, with the call data you matched to each column                                                                                                                 | A Google account linked to Dapta, and a spreadsheet whose first row holds the column names |
| **HubSpot**       | The contact is found or created, and its fields, its linked deal or a note are updated: whichever you choose                                                             | A HubSpot account connected to Dapta                                                       |
| **Dapta flow**    | A flow runs with the call's data as its input                                                                                                                            | A flow in your workspace                                                                   |
| **Dapta CRM**     | The contact is found by phone or created, its fields are filled, it can move to a pipeline stage, the agent leaves a note, and the number can go on the Do Not Call list | Fields or a pipeline in your [CRM](/crm.md)                                                |

An agent can have up to 25 destinations, and they can be of different kinds.

***

## The call data you can send

Every destination picks from the same call data, grouped the same way:

| Group            | What it holds                                             | Example                         |
| ---------------- | --------------------------------------------------------- | ------------------------------- |
| **Contact info** | The contact the call was made to or came from             | `contact_name`, `contact_email` |
| **Variables**    | The data you set up in **Data Retrieval from your Calls** | `demo_booked`                   |
| **Call details** | The call itself                                           | The transcript                  |
| **AI analysis**  | The AI's read of the conversation                         | `call_summary`                  |

The richer your variables, the more useful each destination becomes. See [Post-Call Data Retrieval](/ai-voice-agents/analyze-your-calls/post-call-analysis-post-call-data-retrieval.md).

***

## Send results to Google Sheets

**Step 1:** Under **After-call destinations**, choose **Google Sheets**.

**Step 2:** In **Setup destination**, choose the **Google account** that can open your spreadsheet. If yours isn't listed, use **Connect another Google account**.

**Step 3:** Click **Choose spreadsheet**. Google opens its own file picker: select the file there, then pick the **Tab** where rows should be added. Dapta reads the column names from the first row and shows them under **Columns found in this tab**.

**Step 4:** Click **Continue** and match your data. For each column of the sheet, choose the call data that fills it. **Auto-map columns** pairs columns by name, for example a *phone* column with the number called, and **Refresh columns** reads the headers again if you changed them.

**Step 5:** Click **Save destination**. From the next call on, every call adds a row. Dapta then offers **Test now** to send the agent's last call to this sheet right away, or **Skip and finish** (see [Test a destination](#test-a-destination)).

{% hint style="info" %}
If Dapta says *No column headers were found in the first row*, type your column names in row 1 of that tab and click **Refresh columns**.
{% endhint %}

***

## Send results to HubSpot

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-c685a57039fe5662636c58774042000ade1306d5%2Fvoice-agents-post-call-hubspot.mp4?alt=media>" %}

{% file src="/files/jUx2g9werSieyNcGVt2i" %}

**Step 1:** Under **After-call destinations**, choose **HubSpot**.

**Step 2:** In **Account & actions**, choose the **HubSpot account** that will receive the updates, or **Connect a HubSpot account**. Then choose what happens with the call data. You can pick one or more:

| Action                       | What it does                                                                |
| ---------------------------- | --------------------------------------------------------------------------- |
| **Create or update contact** | Creates the contact, or updates fields on the one that already exists       |
| **Update linked deal**       | Updates properties on the single deal linked to the matched contact         |
| **Create contact note**      | Adds a note to the contact with the call summary and the data you extracted |

**Step 3:** Click **Continue**. In **Find record**, choose how HubSpot finds the contact: **Match contacts by** a HubSpot field, for example *email*, that equals a piece of **Call data**, for example `contact_email`. When you chose **Create or update contact** and no contact matches, HubSpot creates one.

**Step 4:** Click **Continue**. In **Map data**, click **Add another field** for each HubSpot field to update, and choose the call data that fills it. For example, *firstname* from `contact_name`. If you are updating the contact or the deal, map at least one field.

If you chose **Create contact note**, the **Contact note preview** shows what each note will carry: the call summary, the variables you extracted and the transcript. Add or remove fields, or use **Restore default fields**.

**Step 5:** Click **Save destination**. Dapta then offers **Test now** or **Skip and finish**, as with Google Sheets.

***

## Send results to a Dapta flow

**Step 1:** Under **After-call destinations**, choose **Dapta flow**.

**Step 2:** Search for the flow and select it, then click **Use this flow**. The destination is saved right away.

When a call ends, the flow runs with the call's data as its input, so it can do anything a flow can do: update a system that has no native integration, send a message, or branch on the call's outcome. Build flows in [Flow Studio](/flow-studio/flow-studio.md).

{% hint style="info" %}
On agents with **After-call destinations**, the Dapta flow destination replaces the single [Call Analysis Flow](/ai-voice-agents/analyze-your-calls/post-call-analysis-call-analysis-flow.md) field.
{% endhint %}

***

## Send results to the Dapta CRM

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-2d3bedc4df41dcde14c79c521b6bc41b58182822%2Fvoice-agents-post-call-dapta-crm.mp4?alt=media>" %}

{% file src="/files/M29bvyobg7fDrG9txDF2" %}

The **Dapta CRM** destination keeps your own [CRM](/crm.md) up to date after every call: the agent finds the contact by phone, fills the fields you choose, can move it to a pipeline stage, leaves a note with what happened, and can put the number on the Do Not Call list when the person asks for it. An agent can have one Dapta CRM destination; to change it, edit the one it has.

**Step 1:** Under **After-call destinations**, choose **Dapta CRM**. The setup has five steps, **Choose the fields**, **Move to a stage**, **Leave a note**, **Do Not Call** and **Try it**; the top of the window shows **Step n of 5** with a dot per step, and a dot you completed takes you back.

**Step 2: Choose the fields.** Under **Contact**, **Create the contact if it doesn't exist** is on by default: a phone that isn't in the CRM yet becomes a new contact. Turn it off to skip calls from phones that aren't in the CRM.

Under **Fields to update**, match each **CRM field** with the call data that fills it:

* **Auto-map** pairs CRM fields and call data that have the same name.
* **Add another field** adds a row.
* **Create new field** creates a CRM field without leaving the setup and picks it in that row.

**Name** is offered too, and it's only filled when the contact's name is empty or says "N/A". An empty value never erases what's there, and a value that doesn't fit the field's type is skipped.

**Step 3: Move to a stage** (optional). Choose a **Pipeline**, then add rules: **Move to** a stage **when this condition is met**, for example `interested` **is yes**. Conditions compare call data with **equals**, **contains**, **is yes** or **is no**, and a rule with several conditions can require **all** or **any** of them. You can add up to 10 rules with up to 10 conditions each.

The first rule that matches wins. Only contacts that are already in the CRM are moved, and a contact in a won or lost stage stays where it is. Use **Skip** if you don't want stage moves.

**Step 4: Leave a note** (optional). After each call the agent adds this note to the contact, inbound calls too. A note never overwrites anything. Choose the format:

| Format        | How you build it                                                                           |
| ------------- | ------------------------------------------------------------------------------------------ |
| **Data list** | One line per piece of call data, each with its **Label**. Use **Add data** for more lines. |
| **Free text** | Write the note and insert call data by typing **/** or with **Add variable**.              |

**How it will look on the contact** previews the note. Click **Continue**, or **Skip** to go on without a note.

**Step 5: Do Not Call** (optional). When the person asks not to be called again, the agent can put the number on the [Do Not Call list](/ai-voice-agents/how-to-create-your-first-campaign-in-dapta/do-not-call-list.md) itself. Complete the rule **Add to the Do Not Call list** **when this condition is met**, with the same conditions as a stage rule, for example `wants_no_more_calls` **is yes**; with two or more conditions, choose whether **all** or **any** of them must be met, up to 10 conditions. After each call that meets the rule, the number is added for the whole workspace, with the agent's name and the call behind it, even when the caller isn't in your CRM yet. Test calls never add it.

The agent only adds numbers; removing one is done by a person, from the contact or the Do Not Call list. Click **Save destination**, or **Skip** to save without a rule. Skipping a rule you had saved asks you to confirm **Remove the Do Not Call rule?**: numbers already on the list stay there.

**Step 6: Try it.** Click **Test now** to send the agent's last call to this destination only, or **Skip and finish**. The test updates the real contact of that call, so you can see how it ends up, but it never creates contacts, never moves the contact (it only shows the stage it would go to), never saves the note (it only shows the one it would add) and never adds the number to Do Not Call (it only shows whether it would).

On the agent, the card sums up what the destination does: **Identifies by phone · Creates new contacts** (or **Existing contacts only**), **Updates N fields**, **Moves stage · N rules**, **Leaves a note** and **Adds to Do Not Call**.

{% hint style="info" %}
Web calls and test calls never write to the CRM. On inbound calls only empty fields are filled; outbound calls update the fields with the newest value.
{% endhint %}

### What History shows for the Dapta CRM

Each delivery in the card's **History** says whether the contact was created, updated or already had those values, and lists:

| Line            | What it tells you                                                                                                                                                                        |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Written**     | The fields this call filled.                                                                                                                                                             |
| **Unchanged**   | The fields that already had these values.                                                                                                                                                |
| **Skipped**     | The fields left out, with the reason, for example *the contact already has a name*.                                                                                                      |
| **Stage**       | **Moved to** a stage, **No change · already in** a stage, or **Skipped** with the reason. A test shows **Would move to** a stage.                                                        |
| **Note**        | **Note added**, **Already there · not added again**, or **Skipped** with the reason. A test shows **Would add this note (test: not saved)**.                                             |
| **Do Not Call** | **Added to Do Not Call**, **Already on Do Not Call**, or **Skipped** with the reason, for example *the number isn't valid*. A test shows **Would add to Do Not Call · test, not added**. |

The agent's notes then appear on the contact in the CRM, and a number it added shows as a red **Do Not Call** tag on the contact. See [Notes](/crm.md#notes) and [Do Not Call from a contact](/crm.md#do-not-call-from-a-contact).

***

## Test a destination

Every Google Sheets, HubSpot and Dapta CRM card has a **Test** button. It sends the agent's last finished call to **that destination only**, and the data is delivered for real: the row is added, or the contact is updated (a Dapta CRM test never creates a contact, moves a stage, saves a note or adds a number to Do Not Call). If the agent has no finished calls yet, Dapta uses a sample call.

The card counts down while the test runs, which takes about a minute. You can close the window: the result stays in the destination's **History**. A destination that is switched off can't be tested; turn it on first.

***

## See every delivery: History

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-581f72ce20459eb0b52f86362b80d8fe375849f8%2Fvoice-agents-post-call-delivery-history.mp4?alt=media>" %}

{% file src="/files/RvVY8hwHpSJnJcPX9l2o" %}

Each Google Sheets, HubSpot and Dapta CRM card has a **History** link. It opens **Delivery history**: one row per call, so you can tell at a glance whether every call reached that destination and, when one didn't, why and what to do about it.

| Column            | What it shows                                                                     |
| ----------------- | --------------------------------------------------------------------------------- |
| **Date and time** | When the call took place, with a **Test** badge for deliveries made with **Test** |
| **Number**        | The phone number of the call, or *Web call*                                       |
| **Duration**      | How long the call lasted                                                          |
| **Result**        | **Delivered**, **Failed** or **Skipped**                                          |
| **Call**          | **View call** opens the call's log                                                |

Deliveries show up about a minute after a call ends. Use the **All**, **Delivered** and **Failed** filters to narrow the list, and **Include tests** to also show the deliveries made with **Test**. **Load more** brings older deliveries.

### When a delivery fails

A failed delivery says why, in plain words, and offers the fix right there:

| What the history says                                                     | What to do                                                    |
| ------------------------------------------------------------------------- | ------------------------------------------------------------- |
| *Dapta lost access to your Google (or HubSpot) account.*                  | **Reconnect** the account                                     |
| *We couldn't find the sheet or tab. It may have been renamed or deleted.* | **Edit destination** and choose the spreadsheet and tab again |
| *HubSpot couldn't find the record or property. It may have been deleted.* | **Edit destination**                                          |
| *Google Sheets (or HubSpot) rejected the data. Check the field mapping.*  | **Edit mapping**                                              |
| *… limited the requests and the retries ran out*, or *… didn't respond.*  | **Try again later**, which runs a new test                    |

**Technical details** (the arrow at the end of the row) adds the HTTP code, the attempt and the raw reason, which is useful when you write to support.

{% hint style="info" %}
If you change a destination's account, spreadsheet or tab, its history starts again from that change.
{% endhint %}

For the Dapta CRM, each row also lists the fields written, the stage and the note: see [What History shows for the Dapta CRM](#what-history-shows-for-the-dapta-crm).

A **Dapta flow** destination runs as its own flow, so its card links to **Executions** in Flow Studio instead of a History.

***

## Manage your destinations

Each destination shows as a card with its status:

| Status              | Meaning                                                                                                                                                     |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Active**          | It runs after every call.                                                                                                                                   |
| **Paused**          | Its switch, **Send results after each call**, is off. Turn it on to resume.                                                                                 |
| **Needs attention** | Something is missing. The card says what: reconnect the Google or HubSpot account in **Settings**, choose a spreadsheet and tab, or map the missing fields. |

* **Edit** reopens the setup of a Google Sheets or HubSpot destination.
* **Remove** takes a destination off the agent after you confirm. You can add it again any time.

***

## Next steps

{% content-ref url="/pages/XBht0aB2BJwGPG1Pt4oC" %}
[Post-call analysis](/ai-voice-agents/analyze-your-calls/post-call-analysis.md)
{% endcontent-ref %}

{% content-ref url="/pages/gxhpP1yhijCQc9bCFjp5" %}
[Post Call Analysis – Post-Call Data Retrieval](/ai-voice-agents/analyze-your-calls/post-call-analysis-post-call-data-retrieval.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.dapta.ai/ai-voice-agents/analyze-your-calls/post-call-analysis-destinations.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
