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

# Pendo

> Perform deeper analysis and better understand user behavior by bringing enriched customer data into Pendo from your data warehouse

## Overview

Ideally, your data warehouse should contain all your customer data. When that's the case, using your warehouse as the source for your Pendo data enables richer, more granular analysis. You can sync enriched data from your warehouse and data from other engagement tools. Moreover, you can ensure that the data in Pendo consumed by your product and growth teams is always up-to-date and in the expected format.

If your company also uses a Business Intelligence tool such as Looker or Mode alongside Pendo, you can ensure that the data is consistent across both systems since your data warehouse is the only true source of data.

## Supported syncing

| Sync Type | Description | Supported Sync Modes | API Reference |
| - | - | - | - |
| **Events** | Sync records as events to Pendo, often in the form of a track call | Insert | [Track API reference](https://engageapi.pendo.io) |
| **Objects** | Update visitor, account, and parent account objects | Update | [API overview](https://engageapi.pendo.io) |

For more information about sync modes, refer to the [sync modes](https://docs.hightouch.com/syncs/types-and-modes.md#sync-modes) docs.

## Connect to Pendo

Go to the [**Destinations** overview page](https://app.hightouch.com/destinations?from=docs) and click the **Add destination** button. Select **Pendo** and click **Continue**. You can then authenticate Hightouch to Pendo with an **Integration Key** and **Track Event Shared Secret**.

### Create Pendo Integration Key

In your [Pendo admin](https://app.pendo.io/admin/) go to **Settings** > **Integrations** > **Integration Keys**. Then follow the instructions below:

1. Select **+ Add Integration Key**.
2. Enter a meaningful **description** for your Integration Key, for example, "Hightouch Integration."
3. Provide the key **Allow writes** access.

![Integration Key creation in the Pendo UI](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/destinations/destination-pendo-int-key.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=60edb996a8565447149a776d25833448)

4. Select **Create**. Securely store this key for use in Hightouch.

For more information about Integration Keys, refer to Pendo's [Integration Key article](https://support.pendo.io/hc/en-us/articles/9491198203547-Pendo-Integration-Key#requirements-0-0).

### Access Track Event Shared Secret

To access your Track Event Shared Secret go to **Subscription Settings** > **Choose your App** > **App Details** in your [Pendo admin](https://app.pendo.io/admin/). You must be a Pendo Admin to have access to this Secret Key. You can find more information in Pendo's [events tracking documentation](https://support.pendo.io/hc/en-us/articles/360032294291-Track-Events-Configuration#segment-com-0-5).

## Sync configuration

Once you've set up your Pendo destination and have a [model](https://docs.hightouch.com/getting-started/concepts.md#models) to pull data from, you can set up your sync configuration to begin syncing data. Go to the [**Syncs** overview page](https://app.hightouch.com/syncs?from=docs) and click the **Add sync** button to begin. Then, select the relevant model and the Pendo destination you want to sync to.

> [!WARNING]
>
> To ensure syncs send each event, your event model must use a truly unique [primary key](https://docs.hightouch.com/getting-started/concepts.md#unique-primary-key-requirement). See the [events syncs](https://docs.hightouch.com/syncs/types-and-modes.md#event-syncs) documentation for more information.

### Events

The Pendo integration lets you send events to Pendo with custom properties. You must input the following information:

* **Event name**: either a model column containing the event name or a static value.
* **Timestamp**: a model column containing the time the event occurred; if you leave this empty, Pendo uses the time the event arrives at the server.

#### Field mapping

Pendo suggests that you always supply both a Visitor ID (required) and Account ID (strongly recommended).

In addition, you can choose to map additional fields to your Pendo event payload in the custom properties.

![Field mapping in the Hightouch UI](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/destinations/destination-pendo-event-field-mapping.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=bea1138402a8c77b204af2fc08236bc3)

### Objects

The Pendo integration allows users to update existing visitors, accounts, and parent accounts with metadata—both agent and custom fields.

#### Record matching

You have to choose how to match records from your model to objects in Pendo. Select a column from your model that corresponds to your Pendo profile ID. The following example screenshot shows mapping the model's **id** column to Pendo's **Visitor ID** field.

![Record matching in the Hightouch UI](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/destinations/destination-pendo-match.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=6f74875880f6919ddcedcb57dfe25568)

If users aren't found in Pendo, Hightouch automatically skips the row.

#### Field mapping

Pendo has two field types:

* **Agent fields** are API-created fields the agent integrated on your website or app.
* **Custom fields** are editable in the UI and through the API,

You can choose which fields you want to update on your profiles in Pendo. The following example screenshot shows mapping the model's **firstname** column to the **firstname** field in Pendo.

![Field mapping in the Hightouch UI](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/destinations/destination-pendo-field-mapping.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=67f4ecd38d111a399a2ae407582de632)

You cannot create agent fields in the Pendo UI. If you want to write to a new field in Pendo that doesn't exist, you can pass in the desired field's name in Hightouch. The option to create that new field will appear, and if you select it, the field will be created during the next sync.

![Creating a new Pendo field in the Hightouch UI](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/destinations/destination-pendo-create-new-field.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=e7e72043cac140fe390111ff816d75cd)

You can create custom fields in Pendo by going to [**Settings** > **Data Mappings**](https://app.pendo.io/admin/mappings).

#### Split retries

Pendo counts all events in a batch as rejected if the request contains a single invalid event.
To pinpoint which records are getting rejected with which errors and reduce the number of valid records that get retried,
you can enable [**split retries**](https://docs.hightouch.com/syncs/retries.md#split-retries).

#### Delete behavior

The [delete behavior](https://docs.hightouch.com/syncs/overview.md#delete-behavior) you select dictates what to do when a row no longer appears in your model's query results. You have the following options:

| Behavior | Description |
| - | - |
| **Do nothing** | Keep the document in Pendo |
| **Delete** | Remove the document from Pendo |

## Tips and troubleshooting

To see the exact API requests and responses from each sync run, use the [live debugger](https://docs.hightouch.com/syncs/debugger.md). To get notified by Slack, PagerDuty, SMS, or email when a sync fails, set up [sync alerts](https://docs.hightouch.com/syncs/alerting.md). If you run into an issue this page doesn't cover, [contact support](#pylon-chat).
