# Pendo (v1)

Information note **Pendo extraction is supported by Stitch**   
This integration is powered by [Singer's](https://www.singer.io/) Pendo tap and certified by Stitch. [Check out and contribute to the repo on GitHub](https://github.com/singer-io/tap-pendo).  
  
For support, contact [Support](https://community.qlik.com/t5/Support/ct-p/qlikSupport).

## Pendo integration summary

Stitch’s Pendo integration replicates data using the [Pendo v1 API](https://help.qlik.com/en-US/stitch/integrations/saas/pendo). Refer to the [Schema](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#schema) section for a list of objects available for replication.

## Pendo feature snapshot

A high-level look at Stitch's Pendo (v1) integration, including release status, useful links, and the features supported in Stitch.

| **STITCH** |  |  |  |
| --- | --- | --- | --- |
| **[Release status](https://help.qlik.com/en-US/stitch/integrations/identify-an-integration-version)** | Released on July 26th, 2023 | **Supported by**<br><br>the Info icon<br><br>Indicates if the integration is supported by Stitch or the Singer community. | [Stitch](https://community.qlik.com/t5/Support/ct-p/qlikSupport) |
| **Stitch plan**<br><br>the Info icon<br><br>The type of Stitch plan required to use the integration. | Standard | **[API availability](https://help.qlik.com/en-US/stitch/developers/stitch-connect/guides/source-destination-reference)**<br><br>the Info icon<br><br>Indicates if the integration is available as a source in Stitch Connect. | the Success icon<br><br>This version of the integration is available via the API.<br><br><br>Available |
| **Singer GitHub repository** | [singer-io/tap-pendo](https://github.com/singer-io/tap-pendo) |  |  |
| **REPLICATION SETTINGS** |  |  |  |
| **[Anchor Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/anchor-scheduling)**<br><br>the Info icon<br><br>A type of replication scheduling where an integration's Replication Frequency is anchored to a time you select. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **[Advanced Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/advanced-scheduling)**<br><br>the Info icon<br><br>A type of replication scheduling that allows you to specify granular start times for data extraction using cron expressions. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |
| **Table-level reset**<br><br>the Info icon<br><br>Indicates if data can be reset at the table level. If unsupported, data can only be reset at the integration level. | the Remove icon<br><br>Table-level resets are not supported for this integration. Resets are only supported at the integration level.<br><br><br>Unsupported | **[Configurable Replication Methods](https://help.qlik.com/en-US/stitch/replication/replication-methods)**<br><br>the Info icon<br><br>Indicates if Replication Methods can be defined by you for tables in the integration. | the Remove icon<br><br>Configurable Replication Methods are not supported for this integration. Stitch will use pre-defined replication methods for tables you set to replicate.<br><br><br>Unsupported |
| **DATA SELECTION** |  |  |  |
| **Table selection**<br><br>the Info icon<br><br>The ability to select individual tables for replication in the Stitch interface. If table selection is unavailable, all tables and all the columns they contain will be set to replicate by default. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **Column selection**<br><br>the Info icon<br><br>The ability to select individual columns for replication in the Stitch interface. If column selection is unavailable, all columns will be set to replicate by default. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |
| **Select all**<br><br>the Info icon<br><br>Indicates if the integration supports selecting all available tables and columns. | the Success icon<br><br>Supported<br><br><br>Supported |  |  |
| **TRANSPARENCY** |  |  |  |
| **[Extraction Logs](https://help.qlik.com/en-US/stitch/replication/extractions/integration-extraction-logs)**<br><br>the Info icon<br><br>Logs detailing the Extraction phase of the replication process for a given integration. Includes error info, should an error occur. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **[Loading Reports](https://help.qlik.com/en-US/stitch/replication/integration-loading-reports)**<br><br>the Info icon<br><br>Reports detailing the Loading phase of the replication process for a given integration. Includes the number of rows loaded for each table and error info, should an error occur. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |

## Connecting Pendo

### Pendo setup requirements

To set up Pendo in Stitch, you need:

* **Admin privileges in Pendo.** These privileges are required to create an integration key, which Stitch needs to successfully connect to your Pendo account.

### Step 1: Create a Pendo integration key

Information note **Note**: Admin privileges in Pendo are required to complete this step.

1. Sign into your Pendo account as a user with Admin privileges.
2. Click **Settings &gt; Integrations**.
3. On the Integrations page, click the **Integration Keys** tab.
4. Click **+ Add Integration Key**.
5. In **Description** field of the window that displays, enter a description. For example: `Stitch`
6. Click **Create**.

The integration key will dispay in the **Key** column:

![Highlighted Key column and integration key in the Integration Keys tab of the Pendo web app](https://help.qlik.com/en-US/stitch/images/integrations/pendo-integration-key.png)Highlighted Key column and integration key in the Integration Keys tab of the Pendo web appHighlighted Key column and integration key in the Integration Keys tab of the Pendo web app

Keep the integration key handy - you’ll need it to complete the setup in the next step.

### Step 2: Add Pendo as a Stitch data source

1. [Sign into your Stitch account](https://app.stitchdata.com/).

2. On the Stitch Dashboard page, click the **Add Integration** button.

3. Click the **Pendo** icon.

4. Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.

   For example, the name “Stitch Pendo” would create a schema called `stitch_pendo` in the destination. **Note**: Schema names cannot be changed after you save the integration.

5. In the **Period** field, select how you want data for event tables to be aggregated:

   * **Day** - Data will be aggregated by day
   * **Hour** - Data will be aggregated by hour

   **Note**: The `Period` field is configured during integration creation. Once set, this `Period` field will remain disabled on the edit page. Refer to the [Event replication](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication) section for more info.

6. In the **X Pendo Integration Key** field, paste the integration key you created in [Step 1](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#create-integration-key).

7. **Optional**: If you want to extract data for specific apps, enter a comma-separated list of app IDs in the **App Ids** field. If this field is empty, Stitch will extract data for all apps available in your Pendo account.

8. **Optional**: Check the **Inlude Anonymous Visitors** checkbox to have Stitch include anonymous vistors in replication.

### Step 3: Define the historical replication start date

The Sync Historical Data setting defines the starting date for your Pendo integration. This means that data **equal to or newer than this date** will be replicated to your data warehouse.

Change this setting if you want to replicate data beyond Pendo’s default setting of **1 year**. For a detailed look at historical replication jobs, check out the [Syncing Historical SaaS Data](https://help.qlik.com/en-US/stitch/replication/syncing-historical-saas-data-resetting-replication-keys) guide.

### Step 4: Create a replication schedule

Information note Replication schedules affect the time Extraction begins, not the time to data loaded. Refer to the [Replication Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling) documentation for more information.

In the **Replication Frequency** section, you’ll create the integration’s [replication schedule](https://help.qlik.com/en-US/stitch/replication/replication-scheduling). An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.

Pendo integrations support the following replication scheduling methods:

* [Replication Frequency](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/replication-frequency)

* [Anchor Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/anchor-scheduling)

* [Advanced Scheduling using Cron](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/advanced-scheduling) (Advanced or Premium plans only)

To keep your row usage low, consider setting the integration to replicate less frequently. See the [Understanding and Reducing Your Row Usage guide](https://help.qlik.com/en-US/stitch/getting-started/understanding-stitch-usage) for tips on reducing your usage.

### Step 5: Set objects to replicate

Information note **Is an object missing or not replicating?** Verify that the object meets the requirements for [selection](https://help.qlik.com/en-US/stitch/replication/extractions/data-selection/setting-tables-and-columns-to-replicate#selection-requirements) and [replication](https://help.qlik.com/en-US/stitch/replication/extractions/data-selection/setting-tables-and-columns-to-replicate#replication-requirements).

The last step is to select the tables and columns you want to replicate. [Learn about the available tables for this integration.](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#schema)

**Note**: If a replication job is currently in progress, new selections won’t be used until the next job starts.

* Selection options
* Individual tables and columns
* All tables and columns

For Pendo integrations, you can select:

1. **Individual tables and columns**

2. **All tables and columns**

Click the tabs to view instructions for each selection method.

1. In the integration’s **Tables to Replicate tab**, locate a table you want to replicate.

2. To track a table, click the **checkbox** next to the table’s name. A blue checkmark means the table is set to replicate.

3. To track a column, click the **checkbox** next to the column’s name. A blue checkmark means the column is set to replicate.

4. Repeat this process for all the tables and columns you want to replicate.

5. When finished, click the **Finalize Your Selections** button at the bottom of the screen to save your selections.

Information note **Important**: Using the **Select All** feature will overwrite any previous selections. However, selections aren’t final until **Finalize Your Selections** is clicked. Clicking **Cancel** will restore your previous selections. Refer to the [Select All guide](https://help.qlik.com/en-US/stitch/replication/extractions/data-selection/setting-tables-and-columns-to-replicate#set-all-data-to-replicate) for more info about this feature.

1. Click into the integration from the Stitch Dashboard page.

2. Click the **Tables to Replicate** tab.

3. In the list of tables, click the box next to the **Table Names** column.

4. In the menu that displays, click **Track all Tables and Fields**:

   ![The Track all Tables and Fields menu in the Tables to Replicate tab](https://help.qlik.com/en-US/stitch/images/replication/select-all-tables-menu.png)The Track all Tables and Fields menu in the Tables to Replicate tabThe Track all Tables and Fields menu in the Tables to Replicate tab

5. Click the **Finalize Your Selections** button at the bottom of the page to save your data selections.

### Initial and historical replication jobs

After you finish setting up Pendo, its **Sync Status** may show as **Pending** on either the Stitch Dashboard or in the Integration Details page.

For a new integration, a **Pending** status indicates that Stitch is in the process of scheduling the initial replication job for the integration. **This may take some time to complete.**

Information note

**Initial replication jobs with Anchor Scheduling**

If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the [Anchor Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling#job-scheduling-and-anchor-times) documentation for more information.

#### Free historical data loads

The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.

Information note **Replication will continue after the seven days are over**. If you’re no longer interested in this source, be sure to **pause** or **delete** the integration to prevent unwanted usage.

## Pendo replication

* [Event replication](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication)

### Event replication

* [Applicable event tables](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication--tables)

* [Data aggregation for events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication--period)

#### Applicable event tables

The info in this section applies to the following tables:

#### Data aggregation for events

Pendo’s API allows data for [event tables](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication--tables) to be aggregated by day or by hour. In Stitch, this is controlled using the **Period** setting.

When the **Period** setting is set to:

* `Day`, each row of event data will pertain to a specific day
* `Hour`, each row of event data will pertain to a specific hour of a given day

## Pendo table reference

Information note

**Schemas and versioning**

Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.

The schema and info displayed below is for **version 1** of this integration.

This is the latest version of the Pendo integration.

Information note

**Table and column names in your destination**

Depending on your destination, table and column names may not appear as they are outlined below.

For example: Object names are lowercased in Redshift (`CusTomERs` &gt; `customers`), while case is maintained in PostgreSQL destinations (`CusTomERs` &gt; `CusTomERs`). Refer to the [Loading Guide](https://help.qlik.com/en-US/stitch/replication/loading/destination-guides) for your destination for more info.

### accounts

The `accounts` table contains info about your customer accounts in Pendo.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Key ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | account\_id |
| **Replication Key ![](https://help.qlik.com/en-US/stitch/images/replication/replication-key-icon.svg)** | lastupdated |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#account "Opens in new tab: Pendo documentation")<br><br><br>[accounts schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/accounts.json "Opens in new tab: accounts schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

accounts table foreign keys

| Join accounts with | on |
| --- | --- |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>accounts.account_id = events.account_id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>accounts.account_id = feature_events.account_id<br>``` |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>accounts.account_id = guide_events.account_id<br>```<br><br>```<br>accounts.account_id = guide_events.account_ids<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>accounts.account_id = page_events.account_id<br>``` |
| [poll_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#poll-events) | ```<br>accounts.account_id = poll_events.account_id<br>```<br><br>```<br>accounts.account_id = poll_events.account_ids<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>accounts.account_id = track_events.account_id<br>``` |
| [visitors](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitors) | ```<br>accounts.account_id = visitors.metadata_auto.accountid<br>```<br><br>```<br>accounts.account_id = visitors.metadata_auto.accountids<br>``` |

accounts table schema

| **account\_id**<br><br><br>STRING |
| --- |
| **lastupdated**<br><br><br>DATE-TIME |
| **metadata\_auto**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand metadata\_auto<br><br><table> <tr> <td> <p> <strong>								firstvisit							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								idhash							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								lastupdated							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								lastvisit							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> </table> |
| **metadata\_custom**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;. |

### events

The `events` table contains info about events recorded in your Pendo account.

**Note**: The **Period** setting you define [during setup](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#add-stitch-data-source) determine how this table is replicated, including the field used as a Replication Key. Refer to the [Replication section](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication) for more info.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Keys ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | account\_id<br><br>server<br><br>remote\_ip |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#events "Opens in new tab: Pendo documentation")<br><br><br>[events schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/events.json "Opens in new tab: events schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

events table foreign keys

| Join events with | on |
| --- | --- |
| [accounts](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#accounts) | ```<br>events.account_id = accounts.account_id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>events.account_id = feature_events.account_id<br>```<br><br>```<br>events.app_id = feature_events.app_id<br>```<br><br>```<br>events.feature_id = feature_events.feature_id<br>```<br><br>```<br>events.visitor_id = feature_events.visitor_id<br>``` |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>events.account_id = guide_events.account_id<br>```<br><br>```<br>events.account_id = guide_events.account_ids<br>```<br><br>```<br>events.app_id = guide_events.app_id<br>```<br><br>```<br>events.visitor_id = guide_events.visitor_id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>events.account_id = page_events.account_id<br>```<br><br>```<br>events.app_id = page_events.app_id<br>```<br><br>```<br>events.page_id = page_events.page_id<br>```<br><br>```<br>events.visitor_id = page_events.visitor_id<br>``` |
| [poll_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#poll-events) | ```<br>events.account_id = poll_events.account_id<br>```<br><br>```<br>events.account_id = poll_events.account_ids<br>```<br><br>```<br>events.visitor_id = poll_events.visitor_id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>events.account_id = track_events.account_id<br>```<br><br>```<br>events.app_id = track_events.app_id<br>```<br><br>```<br>events.visitor_id = track_events.visitor_id<br>``` |
| [visitors](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitors) | ```<br>events.account_id = visitors.metadata_auto.accountid<br>```<br><br>```<br>events.account_id = visitors.metadata_auto.accountids<br>```<br><br>```<br>events.visitor_id = visitors.visitor_id<br>``` |
| [features](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#features) | ```<br>events.app_id = features.created_by_user.app_id<br>```<br><br>```<br>events.feature_id = features.id<br>```<br><br>```<br>events.page_id = features.page_id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>events.app_id = visitor_history.app_id<br>```<br><br>```<br>events.feature_id = visitor_history.feature_id<br>```<br><br>```<br>events.page_id = visitor_history.page_id<br>```<br><br>```<br>events.visitor_id = visitor_history.visitor_id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>events.page_id = guides.steps.page_id<br>```<br><br>```<br>events.visitor_id = guides.audience.select.visitor_id<br>``` |
| [pages](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#pages) | ```<br>events.page_id = pages.id<br>``` |

events table schema

| **account\_id**<br><br><br>STRING |
| --- |
| **app\_id**<br><br><br>NUMBER |
| **day**<br><br><br>DATE-TIME |
| **feature\_id**<br><br><br>STRING |
| **hour**<br><br><br>DATE-TIME |
| **num\_events**<br><br><br>INTEGER |
| **num\_minutes**<br><br><br>INTEGER |
| **page\_id**<br><br><br>STRING |
| **parameters**<br><br><br>STRING |
| **remote\_ip**<br><br><br>STRING |
| **server**<br><br><br>STRING |
| **user\_agent**<br><br><br>STRING |
| **visitor\_id**<br><br><br>STRING |

### feature\_events

The `feature_events` table contains info about feature events recorded in your Pendo account.

**Note**: The **Period** setting you define [during setup](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#add-stitch-data-source) determine how this table is replicated, including the field used as a Replication Key. Refer to the [Replication section](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication) for more info.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Keys ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | account\_id<br><br>server<br><br>remote\_ip<br><br>visitor\_id<br><br>day<br><br>feature\_id<br><br>user\_agent |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#events "Opens in new tab: Pendo documentation")<br><br><br>[feature_events schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/feature_events.json "Opens in new tab: feature_events schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

feature\_events table foreign keys

| Join feature\_events with | on |
| --- | --- |
| [accounts](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#accounts) | ```<br>feature_events.account_id = accounts.account_id<br>``` |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>feature_events.account_id = events.account_id<br>```<br><br>```<br>feature_events.app_id = events.app_id<br>```<br><br>```<br>feature_events.feature_id = events.feature_id<br>```<br><br>```<br>feature_events.visitor_id = events.visitor_id<br>``` |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>feature_events.account_id = guide_events.account_id<br>```<br><br>```<br>feature_events.account_id = guide_events.account_ids<br>```<br><br>```<br>feature_events.app_id = guide_events.app_id<br>```<br><br>```<br>feature_events.visitor_id = guide_events.visitor_id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>feature_events.account_id = page_events.account_id<br>```<br><br>```<br>feature_events.app_id = page_events.app_id<br>```<br><br>```<br>feature_events.visitor_id = page_events.visitor_id<br>``` |
| [poll_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#poll-events) | ```<br>feature_events.account_id = poll_events.account_id<br>```<br><br>```<br>feature_events.account_id = poll_events.account_ids<br>```<br><br>```<br>feature_events.visitor_id = poll_events.visitor_id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>feature_events.account_id = track_events.account_id<br>```<br><br>```<br>feature_events.app_id = track_events.app_id<br>```<br><br>```<br>feature_events.visitor_id = track_events.visitor_id<br>``` |
| [visitors](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitors) | ```<br>feature_events.account_id = visitors.metadata_auto.accountid<br>```<br><br>```<br>feature_events.account_id = visitors.metadata_auto.accountids<br>```<br><br>```<br>feature_events.visitor_id = visitors.visitor_id<br>``` |
| [features](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#features) | ```<br>feature_events.app_id = features.created_by_user.app_id<br>```<br><br>```<br>feature_events.feature_id = features.id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>feature_events.app_id = visitor_history.app_id<br>```<br><br>```<br>feature_events.feature_id = visitor_history.feature_id<br>```<br><br>```<br>feature_events.visitor_id = visitor_history.visitor_id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>feature_events.visitor_id = guides.audience.select.visitor_id<br>``` |

feature\_events table schema

| **account\_id**<br><br><br>STRING |
| --- |
| **app\_id**<br><br><br>NUMBER |
| **day**<br><br><br>DATE-TIME |
| **feature\_id**<br><br><br>STRING |
| **hour**<br><br><br>DATE-TIME |
| **num\_events**<br><br><br>INTEGER |
| **num\_minutes**<br><br><br>INTEGER |
| **parameters**<br><br><br>STRING |
| **remote\_ip**<br><br><br>STRING |
| **server**<br><br><br>STRING |
| **user\_agent**<br><br><br>STRING |
| **visitor\_id**<br><br><br>STRING |

### features

The `features` table contains info about app features listed in your Pendo account.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Key ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | id |
| **Replication Key ![](https://help.qlik.com/en-US/stitch/images/replication/replication-key-icon.svg)** | last\_updated\_at |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#feature "Opens in new tab: Pendo documentation")<br><br><br>[features schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/features.json "Opens in new tab: features schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

features table foreign keys

| Join features with | on |
| --- | --- |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>features.created_by_user.app_id = events.app_id<br>```<br><br>```<br>features.id = events.feature_id<br>```<br><br>```<br>features.page_id = events.page_id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>features.created_by_user.app_id = feature_events.app_id<br>```<br><br>```<br>features.id = feature_events.feature_id<br>``` |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>features.created_by_user.app_id = guide_events.app_id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>features.created_by_user.app_id = page_events.app_id<br>```<br><br>```<br>features.page_id = page_events.page_id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>features.created_by_user.app_id = track_events.app_id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>features.created_by_user.app_id = visitor_history.app_id<br>```<br><br>```<br>features.id = visitor_history.feature_id<br>```<br><br>```<br>features.page_id = visitor_history.page_id<br>``` |
| [pages](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#pages) | ```<br>features.group.id = pages.group.id<br>```<br><br>```<br>features.page_id = pages.id<br>```<br><br>```<br>features.created_by_user.id = pages.created_by_user.id<br>```<br><br>```<br>features.group.created_by_user.id = pages.created_by_user.id<br>```<br><br>```<br>features.group.last_updated_by_user.id = pages.created_by_user.id<br>```<br><br>```<br>features.last_updated_by_user.id = pages.created_by_user.id<br>```<br><br>```<br>features.created_by_user.id = pages.group.created_by_user.id<br>```<br><br>```<br>features.group.created_by_user.id = pages.group.created_by_user.id<br>```<br><br>```<br>features.group.last_updated_by_user.id = pages.group.created_by_user.id<br>```<br><br>```<br>features.last_updated_by_user.id = pages.group.created_by_user.id<br>```<br><br>```<br>features.created_by_user.id = pages.group.last_updated_by_user.id<br>```<br><br>```<br>features.group.created_by_user.id = pages.group.last_updated_by_user.id<br>```<br><br>```<br>features.group.last_updated_by_user.id = pages.group.last_updated_by_user.id<br>```<br><br>```<br>features.last_updated_by_user.id = pages.group.last_updated_by_user.id<br>```<br><br>```<br>features.created_by_user.id = pages.last_updated_by_user.id<br>```<br><br>```<br>features.group.created_by_user.id = pages.last_updated_by_user.id<br>```<br><br>```<br>features.group.last_updated_by_user.id = pages.last_updated_by_user.id<br>```<br><br>```<br>features.last_updated_by_user.id = pages.last_updated_by_user.id<br>``` |
| [track_types](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-types) | ```<br>features.group.id = track_types.group.id<br>```<br><br>```<br>features.created_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>features.group.created_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>features.group.last_updated_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>features.last_updated_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>features.created_by_user.id = track_types.last_updated_by_user.id<br>```<br><br>```<br>features.group.created_by_user.id = track_types.last_updated_by_user.id<br>```<br><br>```<br>features.group.last_updated_by_user.id = track_types.last_updated_by_user.id<br>```<br><br>```<br>features.last_updated_by_user.id = track_types.last_updated_by_user.id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>features.page_id = guides.steps.page_id<br>```<br><br>```<br>features.created_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>features.group.created_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>features.group.last_updated_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>features.last_updated_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>features.created_by_user.id = guides.last_updated_by_user.id<br>```<br><br>```<br>features.group.created_by_user.id = guides.last_updated_by_user.id<br>```<br><br>```<br>features.group.last_updated_by_user.id = guides.last_updated_by_user.id<br>```<br><br>```<br>features.last_updated_by_user.id = guides.last_updated_by_user.id<br>``` |

features table schema

| **app\_id**<br><br><br>NUMBER |
| --- |
| **color**<br><br><br>STRING |
| **created\_at**<br><br><br>DATE-TIME |
| **created\_by\_user**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand created\_by\_user<br><br><table> <tr> <td> <p> <strong>								app_id							</strong> </p> <p>							NUMBER													</p> </td> </tr> <tr> <td> <p> <strong>								app_wide							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								event_property_configurations							</strong> </p> <p> </p> <p>ARRAY																																</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes will be denested into a subtable. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> </td> </tr> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_core_event							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								user_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								valid_through							</strong> </p> <p>							NUMBER													</p> </td> </tr> </table> |
| **dirty**<br><br><br>BOOLEAN |
| **element\_path\_rules**<br><br><br>ARRAY<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes will be denested into a subtable. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;. |
| **group**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand group<br><br><table> <tr> <td> <p> <strong>								color							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								created_at							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								created_by_user							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand created_by_user</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								description							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last_updated_at							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								last_updated_by_user							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand last_updated_by_user</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								length							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								name							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **id**<br><br><br>STRING |
| **kind**<br><br><br>STRING |
| **last\_updated\_at**<br><br><br>DATE-TIME |
| **last\_updated\_by\_user**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand last\_updated\_by\_user<br><br><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **name**<br><br><br>STRING |
| **page\_id**<br><br><br>STRING |
| **root\_version\_id**<br><br><br>STRING |
| **stable\_version\_id**<br><br><br>STRING |

### guide\_events

The `guide_events` table contains info about guide events recorded in your Pendo account.

**Note**: The **Period** setting you define [during setup](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#add-stitch-data-source) determine how this table is replicated, including the field used as a Replication Key. Refer to the [Replication section](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication) for more info.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Keys ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | account\_id<br><br>browser\_time<br><br>guide\_id<br><br>guide\_step\_id<br><br>remote\_ip<br><br>type<br><br>url<br><br>visitor\_id |
| **Replication Key ![](https://help.qlik.com/en-US/stitch/images/replication/replication-key-icon.svg)** | browser\_time |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#guide-events "Opens in new tab: Pendo documentation")<br><br><br>[guide_events schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/guide_events.json "Opens in new tab: guide_events schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

guide\_events table foreign keys

| Join guide\_events with | on |
| --- | --- |
| [accounts](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#accounts) | ```<br>guide_events.account_id = accounts.account_id<br>```<br><br>```<br>guide_events.account_ids = accounts.account_id<br>``` |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>guide_events.account_id = events.account_id<br>```<br><br>```<br>guide_events.account_ids = events.account_id<br>```<br><br>```<br>guide_events.app_id = events.app_id<br>```<br><br>```<br>guide_events.visitor_id = events.visitor_id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>guide_events.account_id = feature_events.account_id<br>```<br><br>```<br>guide_events.account_ids = feature_events.account_id<br>```<br><br>```<br>guide_events.app_id = feature_events.app_id<br>```<br><br>```<br>guide_events.visitor_id = feature_events.visitor_id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>guide_events.account_id = page_events.account_id<br>```<br><br>```<br>guide_events.account_ids = page_events.account_id<br>```<br><br>```<br>guide_events.app_id = page_events.app_id<br>```<br><br>```<br>guide_events.visitor_id = page_events.visitor_id<br>``` |
| [poll_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#poll-events) | ```<br>guide_events.account_id = poll_events.account_id<br>```<br><br>```<br>guide_events.account_ids = poll_events.account_id<br>```<br><br>```<br>guide_events.account_id = poll_events.account_ids<br>```<br><br>```<br>guide_events.account_ids = poll_events.account_ids<br>```<br><br>```<br>guide_events.guide_id = poll_events.guide_id<br>```<br><br>```<br>guide_events.poll_id = poll_events.poll_id<br>```<br><br>```<br>guide_events.visitor_id = poll_events.visitor_id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>guide_events.account_id = track_events.account_id<br>```<br><br>```<br>guide_events.account_ids = track_events.account_id<br>```<br><br>```<br>guide_events.app_id = track_events.app_id<br>```<br><br>```<br>guide_events.visitor_id = track_events.visitor_id<br>``` |
| [visitors](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitors) | ```<br>guide_events.account_id = visitors.metadata_auto.accountid<br>```<br><br>```<br>guide_events.account_ids = visitors.metadata_auto.accountid<br>```<br><br>```<br>guide_events.account_id = visitors.metadata_auto.accountids<br>```<br><br>```<br>guide_events.account_ids = visitors.metadata_auto.accountids<br>```<br><br>```<br>guide_events.visitor_id = visitors.visitor_id<br>``` |
| [features](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#features) | ```<br>guide_events.app_id = features.created_by_user.app_id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>guide_events.app_id = visitor_history.app_id<br>```<br><br>```<br>guide_events.guide_id = visitor_history.guide_id<br>```<br><br>```<br>guide_events.visitor_id = visitor_history.visitor_id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>guide_events.guide_id = guides.id<br>```<br><br>```<br>guide_events.guide_id = guides.steps.guide_id<br>```<br><br>```<br>guide_events.visitor_id = guides.audience.select.visitor_id<br>``` |

guide\_events table schema

| **account\_id**<br><br><br>STRING |
| --- |
| **account\_ids**<br><br>ARRAY<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes will be denested into a subtable. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;. |
| **app\_id**<br><br><br>NUMBER |
| **browser\_time**<br><br><br>DATE-TIME |
| **country**<br><br><br>STRING |
| **guide\_id**<br><br><br>STRING |
| **guide\_step\_id**<br><br><br>STRING |
| **latitude**<br><br><br>NUMBER |
| **load\_time**<br><br><br>INTEGER |
| **longitude**<br><br><br>NUMBER |
| **poll\_id**<br><br><br>STRING |
| **poll\_response**<br><br><br>STRING |
| **region**<br><br><br>STRING |
| **remote\_ip**<br><br><br>STRING |
| **server\_name**<br><br><br>STRING |
| **type**<br><br><br>STRING |
| **url**<br><br><br>STRING |
| **user\_agent**<br><br><br>STRING |
| **visitor\_id**<br><br><br>STRING |

### guides

The `guides` table contains info about the guides in your Pendo account.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Key ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | id |
| **Replication Key ![](https://help.qlik.com/en-US/stitch/images/replication/replication-key-icon.svg)** | last\_updated\_at |
| **Useful links** | [guides schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/guides.json "Opens in new tab: guides schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

guides table foreign keys

| Join guides with | on |
| --- | --- |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>guides.id = guide_events.guide_id<br>```<br><br>```<br>guides.steps.guide_id = guide_events.guide_id<br>```<br><br>```<br>guides.audience.select.visitor_id = guide_events.visitor_id<br>``` |
| [poll_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#poll-events) | ```<br>guides.id = poll_events.guide_id<br>```<br><br>```<br>guides.steps.guide_id = poll_events.guide_id<br>```<br><br>```<br>guides.audience.select.visitor_id = poll_events.visitor_id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>guides.id = visitor_history.guide_id<br>```<br><br>```<br>guides.steps.guide_id = visitor_history.guide_id<br>```<br><br>```<br>guides.steps.id = visitor_history.guide_id<br>```<br><br>```<br>guides.steps.page_id = visitor_history.page_id<br>```<br><br>```<br>guides.audience.select.visitor_id = visitor_history.visitor_id<br>``` |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>guides.steps.page_id = events.page_id<br>```<br><br>```<br>guides.audience.select.visitor_id = events.visitor_id<br>``` |
| [features](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#features) | ```<br>guides.steps.page_id = features.page_id<br>```<br><br>```<br>guides.created_by_user.id = features.created_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = features.created_by_user.id<br>```<br><br>```<br>guides.created_by_user.id = features.group.created_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = features.group.created_by_user.id<br>```<br><br>```<br>guides.created_by_user.id = features.group.last_updated_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = features.group.last_updated_by_user.id<br>```<br><br>```<br>guides.created_by_user.id = features.last_updated_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = features.last_updated_by_user.id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>guides.steps.page_id = page_events.page_id<br>```<br><br>```<br>guides.audience.select.visitor_id = page_events.visitor_id<br>``` |
| [pages](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#pages) | ```<br>guides.steps.page_id = pages.id<br>```<br><br>```<br>guides.created_by_user.id = pages.created_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = pages.created_by_user.id<br>```<br><br>```<br>guides.created_by_user.id = pages.group.created_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = pages.group.created_by_user.id<br>```<br><br>```<br>guides.created_by_user.id = pages.group.last_updated_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = pages.group.last_updated_by_user.id<br>```<br><br>```<br>guides.created_by_user.id = pages.last_updated_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = pages.last_updated_by_user.id<br>``` |
| [track_types](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-types) | ```<br>guides.created_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>guides.created_by_user.id = track_types.last_updated_by_user.id<br>```<br><br>```<br>guides.last_updated_by_user.id = track_types.last_updated_by_user.id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>guides.audience.select.visitor_id = feature_events.visitor_id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>guides.audience.select.visitor_id = track_events.visitor_id<br>``` |
| [visitors](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitors) | ```<br>guides.audience.select.visitor_id = visitors.visitor_id<br>``` |

guides table schema

| **app\_id**<br><br><br>NUMBER |
| --- |
| **attributes**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand attributes<br><br><table> <tr> <td> <p> <strong>								badge							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand badge</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								can_change_badge_color							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								color							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								height							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								image_url							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_only_show_once							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								offsets							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand offsets</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								left							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								right							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								top							</strong> </p> <p>							INTEGER													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								position							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								show_on_event							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								use_hover							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								width							</strong> </p> <p>							INTEGER													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								device							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand device</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								priority							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **audience**<br><br><br>ARRAY<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes will be denested into a subtable. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand audience<br><br><table> <tr> <td> <p> <strong>								identified							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								select							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand select</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								visitor_id							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								source							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand source</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								visitors							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> </table> |
| **created\_at**<br><br><br>DATE-TIME |
| **created\_by\_user**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand created\_by\_user<br><br><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **id**<br><br><br>STRING |
| **is\_multi\_step**<br><br><br>BOOLEAN |
| **kind**<br><br><br>STRING |
| **last\_updated\_at**<br><br><br>DATE-TIME |
| **last\_updated\_by\_user**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand last\_updated\_by\_user<br><br><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **launch\_method**<br><br><br>STRING |
| **name**<br><br><br>STRING |
| **published\_at**<br><br><br>DATE-TIME |
| **reset\_at**<br><br><br>DATE-TIME |
| **root\_version\_id**<br><br><br>STRING |
| **stable\_version\_id**<br><br><br>STRING |
| **state**<br><br><br>STRING |
| **steps**<br><br><br>ARRAY<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes will be denested into a subtable. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand steps<br><br><table> <tr> <td> <p> <strong>								advance_method							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								attributes							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand attributes</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								auto_height							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								css							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								height							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								width							</strong> </p> <p>							INTEGER													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								content_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								content_url							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								content_url_css							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								content_url_js							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_path_rule							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								guide_id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last_updated_at							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								page_id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								rank							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								regex_url_rule							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								reset_at							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |

### metadata\_accounts

The `metadata_accounts` table contains info about the metadata schema used for account objects in your Pendo account.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Full Table |
| --- | --- |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#metadata "Opens in new tab: Pendo documentation")<br><br><br>[metadata_accounts schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/metadata_accounts.json "Opens in new tab: metadata_accounts schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/?bash#get-a-metadata-schema "Opens in new tab: Pendo API method") |

metadata\_accounts table schema

| **auto**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand auto<br><br><table> <tr> <td> <p> <strong>								firstvisit							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand firstvisit</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand id</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								lastvisit							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand lastvisit</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> </table> |
| --- |

### metadata\_visitors

The `metadata_visitors` table contains info about the metadata schema used for visitor objects in your Pendo account.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Full Table |
| --- | --- |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#metadata "Opens in new tab: Pendo documentation")<br><br><br>[metadata_visitors schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/metadata_visitors.json "Opens in new tab: metadata_visitors schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/?bash#get-a-metadata-schema "Opens in new tab: Pendo API method") |

metadata\_visitors table schema

| **agent**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand agent<br><br><table> <tr> <td> <p> <strong>								language							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand language</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> </table> |
| --- |
| **auto**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand auto<br><br><table> <tr> <td> <p> <strong>								accountid							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand accountid</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								accountids							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand accountids</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								firstvisit							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand firstvisit</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand id</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								lastbrowsername							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand lastbrowsername</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								lastbrowserversion							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand lastbrowserversion</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								lastoperatingsystem							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand lastoperatingsystem</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								lastservername							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand lastservername</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								lastvisit							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand lastvisit</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> </table> |
| **pendo**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand pendo<br><br><table> <tr> <td> <p> <strong>								designerenabled							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand designerenabled</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								dirty							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								display_name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_format							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								element_type							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								is_calculated							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_deleted							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_hidden							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								is_per_app							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								never_index							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								type							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> </table> |

### page\_events

The `page_events` table contains info about page events recorded in your Pendo account.

**Note**: The **Period** setting you define [during setup](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#add-stitch-data-source) determine how this table is replicated, including the field used as a Replication Key. Refer to the [Replication section](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication) for more info.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Keys ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | account\_id<br><br>server<br><br>remote\_ip<br><br>visitor\_id<br><br>day<br><br>page\_id<br><br>user\_agent |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#events "Opens in new tab: Pendo documentation")<br><br><br>[page_events schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/page_events.json "Opens in new tab: page_events schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

page\_events table foreign keys

| Join page\_events with | on |
| --- | --- |
| [accounts](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#accounts) | ```<br>page_events.account_id = accounts.account_id<br>``` |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>page_events.account_id = events.account_id<br>```<br><br>```<br>page_events.app_id = events.app_id<br>```<br><br>```<br>page_events.page_id = events.page_id<br>```<br><br>```<br>page_events.visitor_id = events.visitor_id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>page_events.account_id = feature_events.account_id<br>```<br><br>```<br>page_events.app_id = feature_events.app_id<br>```<br><br>```<br>page_events.visitor_id = feature_events.visitor_id<br>``` |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>page_events.account_id = guide_events.account_id<br>```<br><br>```<br>page_events.account_id = guide_events.account_ids<br>```<br><br>```<br>page_events.app_id = guide_events.app_id<br>```<br><br>```<br>page_events.visitor_id = guide_events.visitor_id<br>``` |
| [poll_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#poll-events) | ```<br>page_events.account_id = poll_events.account_id<br>```<br><br>```<br>page_events.account_id = poll_events.account_ids<br>```<br><br>```<br>page_events.visitor_id = poll_events.visitor_id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>page_events.account_id = track_events.account_id<br>```<br><br>```<br>page_events.app_id = track_events.app_id<br>```<br><br>```<br>page_events.visitor_id = track_events.visitor_id<br>``` |
| [visitors](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitors) | ```<br>page_events.account_id = visitors.metadata_auto.accountid<br>```<br><br>```<br>page_events.account_id = visitors.metadata_auto.accountids<br>```<br><br>```<br>page_events.visitor_id = visitors.visitor_id<br>``` |
| [features](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#features) | ```<br>page_events.app_id = features.created_by_user.app_id<br>```<br><br>```<br>page_events.page_id = features.page_id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>page_events.app_id = visitor_history.app_id<br>```<br><br>```<br>page_events.page_id = visitor_history.page_id<br>```<br><br>```<br>page_events.visitor_id = visitor_history.visitor_id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>page_events.page_id = guides.steps.page_id<br>```<br><br>```<br>page_events.visitor_id = guides.audience.select.visitor_id<br>``` |
| [pages](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#pages) | ```<br>page_events.page_id = pages.id<br>``` |

page\_events table schema

| **account\_id**<br><br><br>STRING |
| --- |
| **app\_id**<br><br><br>NUMBER |
| **day**<br><br><br>DATE-TIME |
| **hour**<br><br><br>DATE-TIME |
| **num\_events**<br><br><br>INTEGER |
| **num\_minutes**<br><br><br>INTEGER |
| **page\_id**<br><br><br>STRING |
| **parameters**<br><br><br>STRING |
| **remote\_ip**<br><br><br>STRING |
| **server**<br><br><br>STRING |
| **user\_agent**<br><br><br>STRING |
| **visitor\_id**<br><br><br>STRING |

### pages

The `pages` table contains info about specific pages in your Pendo app.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Key ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | id |
| **Replication Key ![](https://help.qlik.com/en-US/stitch/images/replication/replication-key-icon.svg)** | last\_updated\_at |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#page "Opens in new tab: Pendo documentation")<br><br><br>[pages schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/pages.json "Opens in new tab: pages schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

pages table foreign keys

| Join pages with | on |
| --- | --- |
| [features](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#features) | ```<br>pages.group.id = features.group.id<br>```<br><br>```<br>pages.id = features.page_id<br>```<br><br>```<br>pages.created_by_user.id = features.created_by_user.id<br>```<br><br>```<br>pages.group.created_by_user.id = features.created_by_user.id<br>```<br><br>```<br>pages.group.last_updated_by_user.id = features.created_by_user.id<br>```<br><br>```<br>pages.last_updated_by_user.id = features.created_by_user.id<br>```<br><br>```<br>pages.created_by_user.id = features.group.created_by_user.id<br>```<br><br>```<br>pages.group.created_by_user.id = features.group.created_by_user.id<br>```<br><br>```<br>pages.group.last_updated_by_user.id = features.group.created_by_user.id<br>```<br><br>```<br>pages.last_updated_by_user.id = features.group.created_by_user.id<br>```<br><br>```<br>pages.created_by_user.id = features.group.last_updated_by_user.id<br>```<br><br>```<br>pages.group.created_by_user.id = features.group.last_updated_by_user.id<br>```<br><br>```<br>pages.group.last_updated_by_user.id = features.group.last_updated_by_user.id<br>```<br><br>```<br>pages.last_updated_by_user.id = features.group.last_updated_by_user.id<br>```<br><br>```<br>pages.created_by_user.id = features.last_updated_by_user.id<br>```<br><br>```<br>pages.group.created_by_user.id = features.last_updated_by_user.id<br>```<br><br>```<br>pages.group.last_updated_by_user.id = features.last_updated_by_user.id<br>```<br><br>```<br>pages.last_updated_by_user.id = features.last_updated_by_user.id<br>``` |
| [track_types](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-types) | ```<br>pages.group.id = track_types.group.id<br>```<br><br>```<br>pages.created_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>pages.group.created_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>pages.group.last_updated_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>pages.last_updated_by_user.id = track_types.created_by_user.id<br>```<br><br>```<br>pages.created_by_user.id = track_types.last_updated_by_user.id<br>```<br><br>```<br>pages.group.created_by_user.id = track_types.last_updated_by_user.id<br>```<br><br>```<br>pages.group.last_updated_by_user.id = track_types.last_updated_by_user.id<br>```<br><br>```<br>pages.last_updated_by_user.id = track_types.last_updated_by_user.id<br>``` |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>pages.id = events.page_id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>pages.id = guides.steps.page_id<br>```<br><br>```<br>pages.created_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>pages.group.created_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>pages.group.last_updated_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>pages.last_updated_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>pages.created_by_user.id = guides.last_updated_by_user.id<br>```<br><br>```<br>pages.group.created_by_user.id = guides.last_updated_by_user.id<br>```<br><br>```<br>pages.group.last_updated_by_user.id = guides.last_updated_by_user.id<br>```<br><br>```<br>pages.last_updated_by_user.id = guides.last_updated_by_user.id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>pages.id = page_events.page_id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>pages.id = visitor_history.page_id<br>``` |

pages table schema

| **app\_id**<br><br><br>NUMBER |
| --- |
| **color**<br><br><br>STRING |
| **created\_at**<br><br><br>DATE-TIME |
| **created\_by\_user**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand created\_by\_user<br><br><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **dirty**<br><br><br>BOOLEAN |
| **group**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand group<br><br><table> <tr> <td> <p> <strong>								color							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								created_at							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								created_by_user							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand created_by_user</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								description							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last_updated_at							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								last_updated_by_user							</strong> </p> <p>							OBJECT																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> <div> <button>Click to expand last_updated_by_user</button><div> <div> <div><div><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table></div></div></div> </div></div> </td> </tr> <tr> <td> <p> <strong>								length							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								name							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **id**<br><br><br>STRING |
| **kind**<br><br><br>STRING |
| **last\_updated\_at**<br><br><br>DATE-TIME |
| **last\_updated\_by\_user**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand last\_updated\_by\_user<br><br><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **name**<br><br><br>STRING |
| **root\_version\_id**<br><br><br>STRING |
| **rules**<br><br><br>ARRAY<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes will be denested into a subtable. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand rules<br><br><table> <tr> <td> <p> <strong>								designer_hint							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								parsed_rule							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								rule							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **stable\_version\_id**<br><br><br>STRING |

### poll\_events

The `poll_events` table contains info about poll events recorded in your Pendo account.

**Note**: The **Period** setting you define [during setup](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#add-stitch-data-source) determine how this table is replicated, including the field used as a Replication Key. Refer to the [Replication section](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication) for more info.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Keys ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | account\_id<br><br>remote\_ip<br><br>visitor\_id<br><br>browser\_time<br><br>poll\_id |
| **Replication Key ![](https://help.qlik.com/en-US/stitch/images/replication/replication-key-icon.svg)** | browser\_time |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#events "Opens in new tab: Pendo documentation")<br><br><br>[poll_events schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/poll_events.json "Opens in new tab: poll_events schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

poll\_events table foreign keys

| Join poll\_events with | on |
| --- | --- |
| [accounts](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#accounts) | ```<br>poll_events.account_id = accounts.account_id<br>```<br><br>```<br>poll_events.account_ids = accounts.account_id<br>``` |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>poll_events.account_id = events.account_id<br>```<br><br>```<br>poll_events.account_ids = events.account_id<br>```<br><br>```<br>poll_events.visitor_id = events.visitor_id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>poll_events.account_id = feature_events.account_id<br>```<br><br>```<br>poll_events.account_ids = feature_events.account_id<br>```<br><br>```<br>poll_events.visitor_id = feature_events.visitor_id<br>``` |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>poll_events.account_id = guide_events.account_id<br>```<br><br>```<br>poll_events.account_ids = guide_events.account_id<br>```<br><br>```<br>poll_events.account_id = guide_events.account_ids<br>```<br><br>```<br>poll_events.account_ids = guide_events.account_ids<br>```<br><br>```<br>poll_events.guide_id = guide_events.guide_id<br>```<br><br>```<br>poll_events.poll_id = guide_events.poll_id<br>```<br><br>```<br>poll_events.visitor_id = guide_events.visitor_id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>poll_events.account_id = page_events.account_id<br>```<br><br>```<br>poll_events.account_ids = page_events.account_id<br>```<br><br>```<br>poll_events.visitor_id = page_events.visitor_id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>poll_events.account_id = track_events.account_id<br>```<br><br>```<br>poll_events.account_ids = track_events.account_id<br>```<br><br>```<br>poll_events.visitor_id = track_events.visitor_id<br>``` |
| [visitors](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitors) | ```<br>poll_events.account_id = visitors.metadata_auto.accountid<br>```<br><br>```<br>poll_events.account_ids = visitors.metadata_auto.accountid<br>```<br><br>```<br>poll_events.account_id = visitors.metadata_auto.accountids<br>```<br><br>```<br>poll_events.account_ids = visitors.metadata_auto.accountids<br>```<br><br>```<br>poll_events.visitor_id = visitors.visitor_id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>poll_events.guide_id = guides.id<br>```<br><br>```<br>poll_events.guide_id = guides.steps.guide_id<br>```<br><br>```<br>poll_events.visitor_id = guides.audience.select.visitor_id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>poll_events.guide_id = visitor_history.guide_id<br>```<br><br>```<br>poll_events.visitor_id = visitor_history.visitor_id<br>``` |

poll\_events table schema

| **account\_id**<br><br><br>STRING |
| --- |
| **account\_ids**<br><br>ARRAY<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes will be denested into a subtable. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;. |
| **app\_id**<br><br><br>NUMBER |
| **browser\_time**<br><br><br>DATE-TIME |
| **country**<br><br><br>STRING |
| **guide\_id**<br><br><br>STRING |
| **latitude**<br><br><br>NUMBER |
| **load\_time**<br><br><br>INTEGER |
| **longitude**<br><br><br>NUMBER |
| **poll\_id**<br><br><br>STRING |
| **poll\_response**<br><br><br>STRING |
| **region**<br><br><br>STRING |
| **remote\_ip**<br><br><br>STRING |
| **server\_name**<br><br><br>STRING |
| **type**<br><br><br>STRING |
| **user\_agent**<br><br><br>STRING |
| **visitor\_id**<br><br><br>STRING |

### track\_events

The `track_events` table contains info about the track events recorded in your Pendo account.

**Note**: The **Period** setting you define [during setup](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#add-stitch-data-source) determine how this table is replicated, including the field used as a Replication Key. Refer to the [Replication section](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#event-replication) for more info.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Keys ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | account\_id<br><br>remote\_ip<br><br>server<br><br>visitor\_id<br><br>day<br><br>track\_type\_id<br><br>user\_agent |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#track-events "Opens in new tab: Pendo documentation")<br><br><br>[track_events schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/track_events.json "Opens in new tab: track_events schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

track\_events table foreign keys

| Join track\_events with | on |
| --- | --- |
| [accounts](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#accounts) | ```<br>track_events.account_id = accounts.account_id<br>``` |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>track_events.account_id = events.account_id<br>```<br><br>```<br>track_events.app_id = events.app_id<br>```<br><br>```<br>track_events.visitor_id = events.visitor_id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>track_events.account_id = feature_events.account_id<br>```<br><br>```<br>track_events.app_id = feature_events.app_id<br>```<br><br>```<br>track_events.visitor_id = feature_events.visitor_id<br>``` |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>track_events.account_id = guide_events.account_id<br>```<br><br>```<br>track_events.account_id = guide_events.account_ids<br>```<br><br>```<br>track_events.app_id = guide_events.app_id<br>```<br><br>```<br>track_events.visitor_id = guide_events.visitor_id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>track_events.account_id = page_events.account_id<br>```<br><br>```<br>track_events.app_id = page_events.app_id<br>```<br><br>```<br>track_events.visitor_id = page_events.visitor_id<br>``` |
| [poll_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#poll-events) | ```<br>track_events.account_id = poll_events.account_id<br>```<br><br>```<br>track_events.account_id = poll_events.account_ids<br>```<br><br>```<br>track_events.visitor_id = poll_events.visitor_id<br>``` |
| [visitors](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitors) | ```<br>track_events.account_id = visitors.metadata_auto.accountid<br>```<br><br>```<br>track_events.account_id = visitors.metadata_auto.accountids<br>```<br><br>```<br>track_events.visitor_id = visitors.visitor_id<br>``` |
| [features](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#features) | ```<br>track_events.app_id = features.created_by_user.app_id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>track_events.app_id = visitor_history.app_id<br>```<br><br>```<br>track_events.visitor_id = visitor_history.visitor_id<br>``` |
| [track_types](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-types) | ```<br>track_events.track_type_id = track_types.id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>track_events.visitor_id = guides.audience.select.visitor_id<br>``` |

track\_events table schema

| **account\_id**<br><br><br>STRING |
| --- |
| **app\_id**<br><br><br>NUMBER |
| **day**<br><br><br>DATE-TIME |
| **hour**<br><br><br>DATE-TIME |
| **num\_events**<br><br><br>INTEGER |
| **num\_minutes**<br><br><br>INTEGER |
| **properties**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand properties<br><br><table> <tr> <td> <p> <strong>								android							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								any							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								apple							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								phone							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> <tr> <td> <p> <strong>								table							</strong> </p> <p>							BOOLEAN													</p> </td> </tr> </table> |
| **remote\_ip**<br><br><br>STRING |
| **server**<br><br><br>STRING |
| **track\_type\_id**<br><br><br>STRING |
| **user\_agent**<br><br><br>STRING |
| **visitor\_id**<br><br><br>STRING |

### track\_types

The `track_types` table contains info about

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Key ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | id |
| **Useful links** | [track_types schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/track_types.json "Opens in new tab: track_types schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

track\_types table foreign keys

| Join track\_types with | on |
| --- | --- |
| [features](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#features) | ```<br>track_types.group.id = features.group.id<br>```<br><br>```<br>track_types.created_by_user.id = features.created_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = features.created_by_user.id<br>```<br><br>```<br>track_types.created_by_user.id = features.group.created_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = features.group.created_by_user.id<br>```<br><br>```<br>track_types.created_by_user.id = features.group.last_updated_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = features.group.last_updated_by_user.id<br>```<br><br>```<br>track_types.created_by_user.id = features.last_updated_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = features.last_updated_by_user.id<br>``` |
| [pages](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#pages) | ```<br>track_types.group.id = pages.group.id<br>```<br><br>```<br>track_types.created_by_user.id = pages.created_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = pages.created_by_user.id<br>```<br><br>```<br>track_types.created_by_user.id = pages.group.created_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = pages.group.created_by_user.id<br>```<br><br>```<br>track_types.created_by_user.id = pages.group.last_updated_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = pages.group.last_updated_by_user.id<br>```<br><br>```<br>track_types.created_by_user.id = pages.last_updated_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = pages.last_updated_by_user.id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>track_types.id = track_events.track_type_id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>track_types.created_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = guides.created_by_user.id<br>```<br><br>```<br>track_types.created_by_user.id = guides.last_updated_by_user.id<br>```<br><br>```<br>track_types.last_updated_by_user.id = guides.last_updated_by_user.id<br>``` |

track\_types table schema

| **app\_id**<br><br><br>NUMBER |
| --- |
| **color**<br><br><br>STRING |
| **created\_at**<br><br><br>DATE-TIME |
| **created\_by\_user**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand created\_by\_user<br><br><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **dirty**<br><br><br>BOOLEAN |
| **group**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand group<br><br><table> <tr> <td> <p> <strong>								color							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								description							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								length							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								name							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **id**<br><br><br>STRING |
| **kind**<br><br><br>STRING |
| **last\_updated\_at**<br><br><br>DATE-TIME |
| **last\_updated\_by\_user**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand last\_updated\_by\_user<br><br><table> <tr> <td> <p> <strong>								first							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								last							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								role							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								username							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **name**<br><br><br>STRING |
| **root\_version\_id**<br><br><br>STRING |
| **stable\_version\_id**<br><br><br>STRING |
| **track\_type\_name**<br><br><br>BOOLEAN |
| **track\_type\_rules**<br><br>ARRAY<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes will be denested into a subtable. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;. |

### visitor\_history

The `visitor_history` table contains info about visitor activity.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Key ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | visitor\_id |
| **Replication Key ![](https://help.qlik.com/en-US/stitch/images/replication/replication-key-icon.svg)** | modified\_ts |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#visitor "Opens in new tab: Pendo documentation")<br><br><br>[visitor_history schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/visitor_history.json "Opens in new tab: visitor_history schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

visitor\_history table foreign keys

| Join visitor\_history with | on |
| --- | --- |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>visitor_history.app_id = events.app_id<br>```<br><br>```<br>visitor_history.feature_id = events.feature_id<br>```<br><br>```<br>visitor_history.page_id = events.page_id<br>```<br><br>```<br>visitor_history.visitor_id = events.visitor_id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>visitor_history.app_id = feature_events.app_id<br>```<br><br>```<br>visitor_history.feature_id = feature_events.feature_id<br>```<br><br>```<br>visitor_history.visitor_id = feature_events.visitor_id<br>``` |
| [features](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#features) | ```<br>visitor_history.app_id = features.created_by_user.app_id<br>```<br><br>```<br>visitor_history.feature_id = features.id<br>```<br><br>```<br>visitor_history.page_id = features.page_id<br>``` |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>visitor_history.app_id = guide_events.app_id<br>```<br><br>```<br>visitor_history.guide_id = guide_events.guide_id<br>```<br><br>```<br>visitor_history.visitor_id = guide_events.visitor_id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>visitor_history.app_id = page_events.app_id<br>```<br><br>```<br>visitor_history.page_id = page_events.page_id<br>```<br><br>```<br>visitor_history.visitor_id = page_events.visitor_id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>visitor_history.app_id = track_events.app_id<br>```<br><br>```<br>visitor_history.visitor_id = track_events.visitor_id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>visitor_history.guide_id = guides.id<br>```<br><br>```<br>visitor_history.guide_id = guides.steps.guide_id<br>```<br><br>```<br>visitor_history.guide_id = guides.steps.id<br>```<br><br>```<br>visitor_history.page_id = guides.steps.page_id<br>```<br><br>```<br>visitor_history.visitor_id = guides.audience.select.visitor_id<br>``` |
| [poll_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#poll-events) | ```<br>visitor_history.guide_id = poll_events.guide_id<br>```<br><br>```<br>visitor_history.visitor_id = poll_events.visitor_id<br>``` |
| [pages](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#pages) | ```<br>visitor_history.page_id = pages.id<br>``` |
| [visitors](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitors) | ```<br>visitor_history.visitor_id = visitors.visitor_id<br>``` |

visitor\_history table schema

| **app\_id**<br><br><br>NUMBER |
| --- |
| **duration**<br><br><br>INTEGER |
| **feature\_id**<br><br><br>STRING |
| **guide\_id**<br><br><br>STRING |
| **guide\_step\_id**<br><br><br>STRING |
| **last\_ts**<br><br><br>DATE-TIME |
| **modified\_ts**<br><br><br>DATE-TIME |
| **page\_id**<br><br><br>STRING |
| **parsed\_user\_agent**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand parsed\_user\_agent<br><br><table> <tr> <td> <p> <strong>								name							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								os							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								version							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **ts**<br><br><br>DATE-TIME |
| **type**<br><br><br>STRING |
| **untagged\_url**<br><br><br>STRING |
| **uri**<br><br><br>STRING |
| **visitor\_id**<br><br><br>STRING |

### visitors

The `visitors` table contains info about the visitors recorded in your Pendo account.

| **Replication Method [](https://help.qlik.com/en-US/stitch/replication/replication-methods)[the Info icon](https://help.qlik.com/en-US/stitch/replication/replication-methods)[](https://help.qlik.com/en-US/stitch/replication/replication-methods)** | Key-based Incremental |
| --- | --- |
| **Primary Key ![](https://help.qlik.com/en-US/stitch/images/replication/primary-key-icon.svg)** | visitor\_id |
| **Replication Key ![](https://help.qlik.com/en-US/stitch/images/replication/replication-key-icon.svg)** | lastupdated |
| **Useful links** | [Pendo documentation](https://developers.pendo.io/docs/?bash#visitor "Opens in new tab: Pendo documentation")<br><br><br>[visitors schema on GitHub](https://github.com/singer-io/tap-pendo/blob/master/tap_pendo/schemas/visitors.json "Opens in new tab: visitors schema on GitHub")<br><br><br>[Pendo API method](https://developers.pendo.io/docs/api/v1/aggregation/?bash#aggregation "Opens in new tab: Pendo API method") |

visitors table foreign keys

| Join visitors with | on |
| --- | --- |
| [accounts](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#accounts) | ```<br>visitors.metadata_auto.accountid = accounts.account_id<br>```<br><br>```<br>visitors.metadata_auto.accountids = accounts.account_id<br>``` |
| [events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#events) | ```<br>visitors.metadata_auto.accountid = events.account_id<br>```<br><br>```<br>visitors.metadata_auto.accountids = events.account_id<br>```<br><br>```<br>visitors.visitor_id = events.visitor_id<br>``` |
| [feature_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#feature-events) | ```<br>visitors.metadata_auto.accountid = feature_events.account_id<br>```<br><br>```<br>visitors.metadata_auto.accountids = feature_events.account_id<br>```<br><br>```<br>visitors.visitor_id = feature_events.visitor_id<br>``` |
| [guide_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guide-events) | ```<br>visitors.metadata_auto.accountid = guide_events.account_id<br>```<br><br>```<br>visitors.metadata_auto.accountids = guide_events.account_id<br>```<br><br>```<br>visitors.metadata_auto.accountid = guide_events.account_ids<br>```<br><br>```<br>visitors.metadata_auto.accountids = guide_events.account_ids<br>```<br><br>```<br>visitors.visitor_id = guide_events.visitor_id<br>``` |
| [page_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#page-events) | ```<br>visitors.metadata_auto.accountid = page_events.account_id<br>```<br><br>```<br>visitors.metadata_auto.accountids = page_events.account_id<br>```<br><br>```<br>visitors.visitor_id = page_events.visitor_id<br>``` |
| [poll_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#poll-events) | ```<br>visitors.metadata_auto.accountid = poll_events.account_id<br>```<br><br>```<br>visitors.metadata_auto.accountids = poll_events.account_id<br>```<br><br>```<br>visitors.metadata_auto.accountid = poll_events.account_ids<br>```<br><br>```<br>visitors.metadata_auto.accountids = poll_events.account_ids<br>```<br><br>```<br>visitors.visitor_id = poll_events.visitor_id<br>``` |
| [track_events](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#track-events) | ```<br>visitors.metadata_auto.accountid = track_events.account_id<br>```<br><br>```<br>visitors.metadata_auto.accountids = track_events.account_id<br>```<br><br>```<br>visitors.visitor_id = track_events.visitor_id<br>``` |
| [guides](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#guides) | ```<br>visitors.visitor_id = guides.audience.select.visitor_id<br>``` |
| [visitor_history](https://help.qlik.com/en-US/stitch/integrations/saas/pendo#visitor-history) | ```<br>visitors.visitor_id = visitor_history.visitor_id<br>``` |

visitors table schema

| **lastupdated**<br><br><br>DATE-TIME |
| --- |
| **metadata\_agent**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand metadata\_agent<br><br><table> <tr> <td> <p> <strong>								email							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								ipaddress							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								language							</strong> </p> <p>							STRING													</p> </td> </tr> </table> |
| **metadata\_auto**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.<br><br>Click to expand metadata\_auto<br><br><table> <tr> <td> <p> <strong>								accountid							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								accountids							</strong> </p> <p>							ARRAY																							</p><div><button><div>This is a nested data structure. If your destination doesn't natively support nested data, attributes will be denested into a subtable. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;.</div></button></div> <p></p> </td> </tr> <tr> <td> <p> <strong>								firstvisit							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								id							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								idhash							</strong> </p> <p>							INTEGER													</p> </td> </tr> <tr> <td> <p> <strong>								lastbrowsername							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								lastbrowserversion							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								lastoperatingsystem							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								lastservername							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								lastupdated							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								lastuseragent							</strong> </p> <p>							STRING													</p> </td> </tr> <tr> <td> <p> <strong>								lastvisit							</strong> </p> <p>							DATE-TIME													</p> </td> </tr> <tr> <td> <p> <strong>								nid							</strong> </p> <p>							INTEGER													</p> </td> </tr> </table> |
| **metadata\_custom**<br><br><br>OBJECT<br><br>This is a nested data structure. If your destination doesn't natively support nested data, attributes in this object will be flattened into the table. &lt;a href='/en-US/stitch/replication/loading/understanding-loading-row-usage-for-nested-data-structures' target='new'&gt;Learn more&lt;/a&gt;. |
| **visitor\_id**<br><br><br>STRING |