Skip to main content
Connectors

Pendo connector

Set up the Pendo connector in Kaivo: authentication, configuration, the 6 BigQuery tables it syncs, and answers to common questions.

Written By Lauri Raivio

Last updated 15 days ago

Kaivo is a fully managed data platform that syncs your Pendo data into a Google BigQuery warehouse and keeps it up to date automatically. There is no pipeline to build and no infrastructure to run, so you can spend your time analysing your customer support data instead of moving it.

What is the Pendo connector

Sync your Pendo product analytics into BigQuery with Kaivo to analyse feature usage, guides, and accounts alongside the rest of your data.

CategoryCustomer Service, Tech
AuthenticationAPI key
SetupSelf-service

Getting started with the Pendo connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your Pendo account.
  3. Choose which tables to sync.
  4. Wait for the initial sync to finish.
  5. Query your data in BigQuery or your favourite AI or BI tool.

Authenticating Pendo

Authenticate with your API Key.

FieldDescription
API Key

Your Pendo integration key. You can generate one in Pendo under Settings → Integrations → Integration Keys.

Tables and columns synced from Pendo

Kaivo syncs 6 tables from Pendo into a dedicated dataset in your BigQuery warehouse. Click any table to see its columns and types.

ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
agent__id__dirtyBOOLFlag indicating if the data is dirty or not.
agent__id__display_nameSTRINGDisplay name of the ID.
agent__id__element_formatSTRINGFormat of the element.
agent__id__element_typeSTRINGType of the element.
agent__id__typeSTRINGType of the ID.
agent__id__is_calculatedBOOLFlag indicating if the ID is calculated or not.
agent__id__is_deletedBOOLFlag indicating if the ID is deleted or not.
agent__id__is_hiddenBOOLFlag indicating if the ID is hidden or not.
agent__id__is_per_appBOOLFlag indicating if the ID is specific to an app or not.
agent__id__is_promotedBOOLFlag indicating if the ID is promoted or not.
agent__id__never_indexBOOLFlag indicating if the ID should never be indexed.
agent__name__dirtyBOOLFlag indicating if the data is dirty or not.
agent__name__display_nameSTRINGDisplay name of the agent's name.
agent__name__element_formatSTRINGFormat of the element.
agent__name__element_typeSTRINGType of the element.
agent__name__typeSTRINGType of the agent's name.
agent__name__is_calculatedBOOLFlag indicating if the agent's name is calculated or not.
agent__name__is_deletedBOOLFlag indicating if the agent's name is deleted or not.
agent__name__is_hiddenBOOLFlag indicating if the agent's name is hidden or not.
agent__name__is_per_appBOOLFlag indicating if the agent's name is specific to an app or not.
agent__name__is_promotedBOOLFlag indicating if the agent's name is promoted or not.
agent__name__never_indexBOOLFlag indicating if the agent's name should never be indexed.
agent__name__sampleSTRINGSample data for the agent's name.
agent__size__dirtyBOOLFlag indicating if the data is dirty or not.
agent__size__display_nameSTRINGDisplay name of the agent's size.
agent__size__element_formatSTRINGFormat of the element.
agent__size__element_typeSTRINGType of the element.
agent__size__typeSTRINGType of the agent's size.
agent__size__is_calculatedBOOLFlag indicating if the agent's size is calculated or not.
agent__size__is_deletedBOOLFlag indicating if the agent's size is deleted or not.
agent__size__is_hiddenBOOLFlag indicating if the agent's size is hidden or not.
agent__size__is_per_appBOOLFlag indicating if the agent's size is specific to an app or not.
agent__size__is_promotedBOOLFlag indicating if the agent's size is promoted or not.
agent__size__never_indexBOOLFlag indicating if the agent's size should never be indexed.
agent__size__sampleSTRINGSample data for the agent's size.
agent__tier__dirtyBOOLFlag indicating if the data is dirty or not.
agent__tier__display_nameSTRINGDisplay name of the agent's tier.
agent__tier__element_formatSTRINGFormat of the element.
agent__tier__element_typeSTRINGType of the element.
agent__tier__typeSTRINGType of the agent's tier.
agent__tier__is_calculatedBOOLFlag indicating if the agent's tier is calculated or not.
agent__tier__is_deletedBOOLFlag indicating if the agent's tier is deleted or not.
agent__tier__is_hiddenBOOLFlag indicating if the agent's tier is hidden or not.
agent__tier__is_per_appBOOLFlag indicating if the agent's tier is specific to an app or not.
agent__tier__is_promotedBOOLFlag indicating if the agent's tier is promoted or not.
agent__tier__never_indexBOOLFlag indicating if the agent's tier should never be indexed.
agent__tier__sampleSTRINGSample data for the agent's tier.
agent__timezone__dirtyBOOLFlag indicating if the data is dirty or not.
agent__timezone__display_nameSTRINGDisplay name of the agent's timezone.
agent__timezone__element_formatSTRINGFormat of the element.
agent__timezone__element_typeSTRINGType of the element.
agent__timezone__typeSTRINGType of the agent's timezone.
agent__timezone__is_calculatedBOOLFlag indicating if the agent's timezone is calculated or not.
agent__timezone__is_deletedBOOLFlag indicating if the agent's timezone is deleted or not.
agent__timezone__is_hiddenBOOLFlag indicating if the agent's timezone is hidden or not.
agent__timezone__is_per_appBOOLFlag indicating if the agent's timezone is specific to an app or not.
agent__timezone__is_promotedBOOLFlag indicating if the agent's timezone is promoted or not.
agent__timezone__never_indexBOOLFlag indicating if the agent's timezone should never be indexed.
agent__timezone__sampleSTRINGSample data for the agent's timezone.
auto__firstvisit__dirtyBOOLFlag indicating if the data is dirty or not.
auto__firstvisit__display_nameSTRINGDisplay name of the first visit.
auto__firstvisit__element_formatSTRINGFormat of the element.
auto__firstvisit__element_typeSTRINGType of the element.
auto__firstvisit__typeSTRINGType of the first visit.
auto__firstvisit__is_calculatedBOOLFlag indicating if the first visit is calculated or not.
auto__firstvisit__is_deletedBOOLFlag indicating if the first visit is deleted or not.
auto__firstvisit__is_hiddenBOOLFlag indicating if the first visit is hidden or not.
auto__firstvisit__is_per_appBOOLFlag indicating if the first visit is specific to an app or not.
auto__firstvisit__is_promotedBOOLFlag indicating if the first visit is promoted or not.
auto__firstvisit__never_indexBOOLFlag indicating if the first visit should never be indexed.
auto__id__dirtyBOOLFlag indicating if the data is dirty or not.
auto__id__display_nameSTRINGDisplay name of the auto ID.
auto__id__element_formatSTRINGFormat of the element.
auto__id__element_typeSTRINGType of the element.
auto__id__typeSTRINGType of the auto ID.
auto__id__is_calculatedBOOLFlag indicating if the auto ID is calculated or not.
auto__id__is_deletedBOOLFlag indicating if the auto ID is deleted or not.
auto__id__is_hiddenBOOLFlag indicating if the auto ID is hidden or not.
auto__id__is_per_appBOOLFlag indicating if the auto ID is specific to an app or not.
auto__id__is_promotedBOOLFlag indicating if the auto ID is promoted or not.
auto__id__never_indexBOOLFlag indicating if the auto ID should never be indexed.
auto__lastvisit__dirtyBOOLFlag indicating if the data is dirty or not.
auto__lastvisit__display_nameSTRINGDisplay name of the last visit.
auto__lastvisit__element_formatSTRINGFormat of the element.
auto__lastvisit__element_typeSTRINGType of the element.
auto__lastvisit__typeSTRINGType of the last visit.
auto__lastvisit__is_calculatedBOOLFlag indicating if the last visit is calculated or not.
auto__lastvisit__is_deletedBOOLFlag indicating if the last visit is deleted or not.
auto__lastvisit__is_hiddenBOOLFlag indicating if the last visit is hidden or not.
auto__lastvisit__is_per_appBOOLFlag indicating if the last visit is specific to an app or not.
auto__lastvisit__is_promotedBOOLFlag indicating if the last visit is promoted or not.
auto__lastvisit__never_indexBOOLFlag indicating if the last visit should never be indexed.
pendo__blacklistguides__dirtyBOOLFlag indicating if the data is dirty or not.
pendo__blacklistguides__display_nameSTRINGDisplay name of the blacklisted guides.
pendo__blacklistguides__element_formatSTRINGFormat of the element.
pendo__blacklistguides__element_typeSTRINGType of the element.
pendo__blacklistguides__typeSTRINGType of the blacklisted guides.
pendo__blacklistguides__is_calculatedBOOLFlag indicating if the blacklisted guides are calculated or not.
pendo__blacklistguides__is_deletedBOOLFlag indicating if the blacklisted guides are deleted or not.
pendo__blacklistguides__is_hiddenBOOLFlag indicating if the blacklisted guides are hidden or not.
pendo__blacklistguides__is_per_appBOOLFlag indicating if the blacklisted guides are specific to an app or not.
pendo__blacklistguides__is_promotedBOOLFlag indicating if the blacklisted guides are promoted or not.
pendo__blacklistguides__never_indexBOOLFlag indicating if the blacklisted guides should never be indexed.
pendo__donotprocess__dirtyBOOLFlag indicating if the data is dirty or not.
pendo__donotprocess__display_nameSTRINGDisplay name of the data not to process.
pendo__donotprocess__element_formatSTRINGFormat of the element.
pendo__donotprocess__element_typeSTRINGType of the element.
pendo__donotprocess__typeSTRINGType of the data not to process.
pendo__donotprocess__is_calculatedBOOLFlag indicating if the data not to process is calculated or not.
pendo__donotprocess__is_deletedBOOLFlag indicating if the data not to process is deleted or not.
pendo__donotprocess__is_hiddenBOOLFlag indicating if the data not to process is hidden or not.
pendo__donotprocess__is_per_appBOOLFlag indicating if the data not to process is specific to an app or not.
pendo__donotprocess__is_promotedBOOLFlag indicating if the data not to process is promoted or not.
pendo__donotprocess__never_indexBOOLFlag indicating if the data not to process should never be indexed.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
app_idINT64The unique identifier of the application to which the feature belongs.
app_wideBOOLIndicates whether the feature is applicable across the entire application.
colorSTRINGThe color associated with the feature for visual identification.
created_atINT64The timestamp when the feature was created.
created_by_user__deleted_atINT64Timestamp when the user was deleted.
created_by_user__firstSTRINGThe first name of the user.
created_by_user__has_logged_inBOOLFlag indicating if the user has logged in.
created_by_user__idSTRINGThe unique identifier of the user.
created_by_user__lastSTRINGThe last name of the user.
created_by_user__last_loginINT64Timestamp of the user's last login.
created_by_user__roleINT64The role of the user.
created_by_user__user_typeSTRINGThe type of user.
created_by_user__usernameSTRINGThe username of the user.
created_designer_versionSTRINGThe version of the designer tool used during feature creation.
daily_merge_firstINT64Timestamp of the first daily merge process for the feature.
daily_rollup_firstINT64Timestamp of the first daily rollup process for the feature.
dirtyBOOLIndicates if the feature is marked as 'dirty' for updates.
element_initial_tagSTRINGThe initial tag associated with the feature element.
element_selection_typeSTRINGType of selection method used for elements.
group__typeSTRINGThe type of the group.
group__colorSTRINGColor assigned to the group.
group__created_atINT64Timestamp of group creation.
group__created_by_user__deleted_atINT64Timestamp when the user was deleted.
group__created_by_user__firstSTRINGThe first name of the user.
group__created_by_user__has_logged_inBOOLFlag indicating if the user has logged in.
group__created_by_user__idSTRINGThe unique identifier of the user.
group__created_by_user__lastSTRINGThe last name of the user.
group__created_by_user__last_loginINT64Timestamp of the user's last login.
group__created_by_user__roleINT64The role of the user.
group__created_by_user__user_typeSTRINGThe type of user.
group__created_by_user__usernameSTRINGThe username of the user.
group__descriptionSTRINGDescription of the group.
group__idSTRINGThe unique identifier of the group.
group__last_updated_atINT64Timestamp of the last group update.
group__last_updated_by_user__firstSTRINGThe first name of the user.
group__last_updated_by_user__has_logged_inBOOLFlag indicating if the user has logged in.
group__last_updated_by_user__idSTRINGThe unique identifier of the user.
group__last_updated_by_user__lastSTRINGThe last name of the user.
group__last_updated_by_user__last_loginINT64Timestamp of the user's last login.
group__last_updated_by_user__roleINT64The role of the user.
group__last_updated_by_user__user_typeSTRINGThe type of user.
group__last_updated_by_user__usernameSTRINGThe username of the user.
group__lengthINT64The number of items in the group.
group__nameSTRINGThe name of the group.
idSTRINGThe unique identifier of the feature.
is_core_eventBOOLIndicates if the feature is a core event.
kindSTRINGThe kind of feature.
last_updated_atINT64Timestamp of the last feature update.
last_updated_by_user__deleted_atINT64Timestamp when the user was deleted.
last_updated_by_user__firstSTRINGThe first name of the user.
last_updated_by_user__has_logged_inBOOLFlag indicating if the user has logged in.
last_updated_by_user__idSTRINGThe unique identifier of the user.
last_updated_by_user__lastSTRINGThe last name of the user.
last_updated_by_user__last_loginINT64Timestamp of the user's last login.
last_updated_by_user__roleINT64The role of the user.
last_updated_by_user__user_typeSTRINGThe type of user.
last_updated_by_user__usernameSTRINGThe username of the user.
nameSTRINGThe name of the feature.
page_idSTRINGThe unique identifier of the page associated with the feature.
root_version_idSTRINGThe unique identifier of the root version of the feature.
stable_version_idSTRINGThe unique identifier of the stable version of the feature.
suggested_matchSTRINGIndicates if there is a suggested match for the feature.
valid_throughINT64The timestamp until which the feature is valid.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • Feature__created_by_user__visitor_ids (4 columns)
  • Feature__element_path_rules (4 columns)
  • Feature__event_property_configurations (10 columns)
  • Feature__group__created_by_user__visitor_ids (4 columns)
  • Feature__group__items (4 columns)
  • Feature__group__last_updated_by_user__visitor_ids (4 columns)
  • Feature__last_updated_by_user__visitor_ids (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
app_idINT64The unique identifier of the application associated with the guide data.
attributes__typeSTRINGType of guide.
attributes__activationJSONInformation related to guide activation.
attributes__badgeJSONBadge details associated with the guide.
attributes__capping__max_impressionsINT64Maximum number of times the guide is allowed to be displayed.
attributes__capping__max_session_impressionsINT64Maximum number of times the guide can be displayed in a single session.
attributes__dates__en_usSTRING
attributes__dates__esSTRING
attributes__dates__jaSTRING
attributes__device__typeSTRINGType of device the guide is optimized for.
attributes__dom__is_only_show_onceBOOLIndicates if the guide should be shown only once.
attributes__dom__show_guide_only_on_element_clickBOOLSpecifies if the guide is triggered by clicking on an element.
attributes__element_selection_typeSTRINGType of selection for guide elements.
attributes__emailBOOLConfiguration details for email notifications related to the guide.
attributes__is_announcementBOOLIndicates if the guide is an announcement.
attributes__notification_bubble__background_colorSTRING
attributes__notification_bubble__colorSTRING
attributes__notification_bubble__font_familySTRING
attributes__notification_bubble__font_weightINT64
attributes__override_auto_throttlingBOOLFlag to override automatic throttle settings.
attributes__priorityINT64Priority level of the guide.
attributes__resource_center__home_view_idSTRING
attributes__resource_center__integration_nameSTRING
attributes__resource_center__integration_providerSTRING
attributes__resource_center__is_moduleBOOL
attributes__resource_center__is_top_levelBOOL
attributes__resource_center__module_idSTRING
attributes__resource_center__origin_idSTRING
attributes__shared_service_versionSTRINGVersion of the shared service used by the guide.
authored_languageSTRINGLanguage in which the guide is authored.
conversion__attribution_windowINT64Time window for attributing conversions to the guide.
conversion__item_idSTRINGIdentifier of the item associated with the conversion.
conversion__item_typeSTRINGType of item that triggers the conversion.
created_atINT64Timestamp indicating when the guide was created.
created_by_user__deleted_atINT64
created_by_user__firstSTRING
created_by_user__has_logged_inBOOL
created_by_user__idSTRING
created_by_user__lastSTRING
created_by_user__last_loginINT64
created_by_user__roleINT64
created_by_user__user_typeSTRING
created_by_user__usernameSTRING
current_first_eligible_to_be_seen_atINT64Timestamp for the first eligibility of the guide to be shown.
descriptionSTRINGDescription of the guide.
editor_typeSTRINGType of editor used to create the guide.
email_configuration__email_metadata_property_nameSTRING
email_configuration__subjectSTRING
email_stateSTRINGState of email notifications for the guide.
experiment__end_timeINT64
experiment__group_sizeINT64
experiment__notification_durationINT64
experiment__start_timeINT64
idSTRINGUnique identifier of the guide.
is_moduleBOOLIndicates if the guide is a module.
is_multi_stepBOOLFlag to indicate if the guide has multiple steps.
is_top_levelBOOLSpecifies if the guide is at the top level.
is_trainingBOOLIndicates if the guide is for training purposes.
kindSTRINGType or category of the guide.
last_updated_atINT64Timestamp indicating the last update time for the guide.
last_updated_by_user__deleted_atINT64
last_updated_by_user__firstSTRING
last_updated_by_user__has_logged_inBOOL
last_updated_by_user__idSTRING
last_updated_by_user__lastSTRING
last_updated_by_user__last_loginINT64
last_updated_by_user__roleINT64
last_updated_by_user__user_typeSTRING
last_updated_by_user__usernameSTRING
launch_methodSTRINGMethod used to launch the guide.
min_agent_versionSTRINGMinimum agent version required for guide compatibility.
nameSTRINGName of the guide.
origin_idSTRINGOriginal identifier of the guide.
published_atINT64Timestamp indicating when the guide was published.
published_everBOOLIndicates if the guide has ever been published.
recurrenceINT64Recurrence settings for the guide.
recurrence_eligibility_windowINT64Time window for recurrence eligibility.
reset_atINT64Timestamp indicating when the guide is reset.
resource_center_idSTRINGIdentifier of the resource center associated with the guide.
root_version_idSTRINGIdentifier of the root version of the guide.
shows_afterINT64Time duration after which the guide is displayed.
stable_version_idSTRINGIdentifier of the stable version of the guide.
stateSTRINGCurrent state of the guide.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • Guide__app_ids (4 columns)
  • Guide__attributes__resource_center__children (4 columns)
  • Guide__audience (11 columns)
  • Guide__audience_ui_hint__filters (16 columns)
  • Guide__children (4 columns)
  • Guide__created_by_user__visitor_ids (4 columns)
  • Guide__last_updated_by_user__visitor_ids (4 columns)
  • Guide__polls (11 columns)
  • Guide__polls__numeric_responses (4 columns)
  • Guide__steps (65 columns)
  • Guide__steps__poll_ids (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
app_idINT64The ID of the Pendo application to which the page belongs.
colorSTRINGThe color associated with the page.
created_atINT64The date and time when the page was created.
created_by_user__deleted_atINT64The date and time when the user was deleted.
created_by_user__firstSTRINGThe first name of the user.
created_by_user__has_logged_inBOOLFlag indicating if the user has logged in.
created_by_user__idSTRINGThe unique ID of the user.
created_by_user__lastSTRINGThe last name of the user.
created_by_user__last_loginINT64The date and time of the user's last login.
created_by_user__roleINT64The role of the user.
created_by_user__user_typeSTRINGThe type of user.
created_by_user__usernameSTRINGThe username of the user.
daily_merge_firstINT64Placeholder for daily merge information.
daily_rollup_firstINT64Placeholder for daily rollup information.
dirtyBOOLFlag indicating if the page data is dirty or needs updating.
group__typeSTRINGThe type of the group.
group__colorSTRINGThe color associated with the group.
group__created_atINT64The date and time when the group was created.
group__created_by_user__deleted_atINT64The date and time when the user was deleted.
group__created_by_user__firstSTRINGThe first name of the user.
group__created_by_user__has_logged_inBOOLFlag indicating if the user has logged in.
group__created_by_user__idSTRINGThe unique ID of the user.
group__created_by_user__lastSTRINGThe last name of the user.
group__created_by_user__last_loginINT64The date and time of the user's last login.
group__created_by_user__roleINT64The role of the user.
group__created_by_user__user_typeSTRINGThe type of user.
group__created_by_user__usernameSTRINGThe username of the user.
group__descriptionSTRINGThe description of the group.
group__idSTRINGThe unique ID of the group.
group__last_updated_atINT64The date and time of the last update to the group.
group__last_updated_by_user__firstSTRINGThe first name of the user.
group__last_updated_by_user__has_logged_inBOOLFlag indicating if the user has logged in.
group__last_updated_by_user__idSTRINGThe unique ID of the user.
group__last_updated_by_user__lastSTRINGThe last name of the user.
group__last_updated_by_user__last_loginINT64The date and time of the user's last login.
group__last_updated_by_user__roleINT64The role of the user.
group__last_updated_by_user__user_typeSTRINGThe type of user.
group__last_updated_by_user__usernameSTRINGThe username of the user.
group__lengthINT64The length of the group.
group__nameSTRINGThe name of the group.
idSTRINGThe unique ID of the page.
is_auto_taggedBOOLFlag indicating if the page is automatically tagged.
is_core_eventBOOLFlag indicating if the page is a core event.
kindSTRINGThe kind of page data.
last_updated_atINT64The date and time of the last update to the page.
last_updated_by_user__deleted_atINT64The date and time when the user was deleted.
last_updated_by_user__firstSTRINGThe first name of the user.
last_updated_by_user__has_logged_inBOOLFlag indicating if the user has logged in.
last_updated_by_user__idSTRINGThe unique ID of the user.
last_updated_by_user__lastSTRINGThe last name of the user.
last_updated_by_user__last_loginINT64The date and time of the user's last login.
last_updated_by_user__roleINT64The role of the user.
last_updated_by_user__user_typeSTRINGThe type of user.
last_updated_by_user__usernameSTRINGThe username of the user.
nameSTRINGThe name of the page.
root_version_idSTRINGThe ID of the root version of the page.
rulesjsonSTRINGThe JSON representation of rules associated with the page.
stable_version_idSTRINGThe ID of the stable version of the page.
suggested_nameSTRINGThe suggested name for the page.
valid_throughINT64The date until which the page data is valid.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • Page__created_by_user__visitor_ids (4 columns)
  • Page__group__created_by_user__visitor_ids (4 columns)
  • Page__group__items (4 columns)
  • Page__group__last_updated_by_user__visitor_ids (4 columns)
  • Page__last_updated_by_user__visitor_ids (4 columns)
  • Page__rules (6 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRINGThe type or category of the report data.
created_atINT64Timestamp when the report was created
created_by_user__deleted_atINT64
created_by_user__firstSTRING
created_by_user__has_logged_inBOOL
created_by_user__idSTRING
created_by_user__lastSTRING
created_by_user__last_loginINT64
created_by_user__roleINT64
created_by_user__user_typeSTRING
created_by_user__usernameSTRING
definition__typeSTRING
definition__attributeSTRING
definition__config__across_appsBOOL
definition__config__app_idSTRING
definition__config__collapse_dupsBOOL
definition__config__featuresBOOL
definition__config__max_intervalINT64
definition__config__max_lengthINT64
definition__config__omit_pagesBOOL
definition__config__page_idSTRING
definition__config__predecessorsBOOL
definition__config__segment_idSTRING
definition__config__selected_account__class_nameSTRING
definition__config__selected_account__idSTRING
definition__config__selected_account__textSTRING
definition__config__track_eventsBOOL
definition__config__unique_visitorsBOOL
definition__date_ranges__primary_date_range__typeSTRING
definition__date_ranges__secondary_date_rangeJSON
definition__date_ranges__use_secondary_date_rangeBOOL
definition__generatorSTRING
definition__graph_typeSTRING
definition__is_comparing_segmentsBOOL
definition__is_comparing_sourcesBOOL
definition__kindSTRING
definition__minimumINT64
definition__multi_source_typeSTRING
definition__periodSTRING
definition__single_source__idSTRING
definition__single_source__kindSTRING
definition__single_source_typeSTRING
definition__table_typeSTRING
definition__time_series__typeSTRING
definition__time_series__endSTRING
definition__time_series__primary_time_series__countINT64
definition__time_series__primary_time_series__firstINT64
definition__time_series__primary_time_series__periodSTRING
definition__time_series__secondary_time_seriesJSON
definition__time_series__startSTRING
idSTRINGUnique ID of the report
kindSTRINGKind of the report
last_run_atINT64Timestamp of the last run of the report
last_success_run_atINT64Timestamp of the last successful run of the report
last_success_run_objSTRINGThe object containing information about the last successful run.
last_updated_atINT64Timestamp of the last update of the report
last_updated_by_user__deleted_atINT64
last_updated_by_user__firstSTRING
last_updated_by_user__has_logged_inBOOL
last_updated_by_user__idSTRING
last_updated_by_user__lastSTRING
last_updated_by_user__last_loginINT64
last_updated_by_user__roleINT64
last_updated_by_user__user_typeSTRING
last_updated_by_user__usernameSTRING
levelSTRINGThe level at which the report data is generated or accessed.
nameSTRINGName of the report
owned_by_user__firstSTRING
owned_by_user__has_logged_inBOOL
owned_by_user__idSTRING
owned_by_user__lastSTRING
owned_by_user__roleINT64
owned_by_user__user_typeSTRING
owned_by_user__usernameSTRING
root_version_idSTRINGThe identifier for the root version of the report.
scopeSTRINGThe scope or range of data to include in the report.
shareSTRINGInformation about sharing settings or permissions for the report.
sharedBOOLFlag indicating whether the report is shared with others.
stable_version_idSTRINGThe identifier for the stable version of the report.
targetSTRINGThe target or audience for which the report is intended.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • Report__aggregation__fields (6 columns)
  • Report__aggregation__pipeline (31 columns)
  • Report__aggregation__pipeline__fork (3 columns)
  • Report__aggregation__pipeline__fork__list (7 columns)
  • Report__aggregation__pipeline__fork__list__group__fields (4 columns)
  • Report__aggregation__pipeline__fork__list__group__group (4 columns)
  • Report__aggregation__pipeline__group__fields (12 columns)
  • Report__aggregation__pipeline__group__group (4 columns)
  • Report__aggregation__pipeline__merge__fields (4 columns)
  • Report__aggregation__pipeline__merge__pipeline (25 columns)
  • Report__aggregation__pipeline__merge__pipeline__group__fields (4 columns)
  • Report__aggregation__pipeline__merge__pipeline__group__group (4 columns)
  • Report__aggregation__pipeline__merge__pipeline__join__fields (4 columns)
  • Report__aggregation__pipeline__merge__pipeline__spawn (3 columns)
  • Report__aggregation__pipeline__merge__pipeline__spawn__list (9 columns)
  • Report__aggregation__pipeline__merge__pipeline__spawn__list__group__fields (5 columns)
  • Report__aggregation__pipeline__merge__pipeline__spawn__list__group__group (4 columns)
  • Report__aggregation__pipeline__merge__pipeline__switch__response__response (5 columns)
  • Report__aggregation__pipeline__source__single_events__event_class (4 columns)
  • Report__created_by_user__visitor_ids (4 columns)
  • Report__definition__config__columns (17 columns)
  • Report__definition__config__columns__primary_keys (4 columns)
  • Report__definition__config__filters (4 columns)
  • Report__definition__config__segments (4 columns)
  • Report__definition__history (4 columns)
  • Report__definition__segments (4 columns)
  • Report__definition__sources__alls (4 columns)
  • Report__last_updated_by_user__visitor_ids (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
agent__age__dirtyBOOL
agent__age__display_nameSTRING
agent__age__element_formatSTRING
agent__age__element_typeSTRING
agent__age__typeSTRING
agent__age__is_calculatedBOOL
agent__age__is_deletedBOOL
agent__age__is_hiddenBOOL
agent__age__is_per_appBOOL
agent__age__is_promotedBOOL
agent__age__never_indexBOOL
agent__age__sampleSTRING
agent__country__dirtyBOOL
agent__country__display_nameSTRING
agent__country__element_formatSTRING
agent__country__element_typeSTRING
agent__country__typeSTRING
agent__country__is_calculatedBOOL
agent__country__is_deletedBOOL
agent__country__is_hiddenBOOL
agent__country__is_per_appBOOL
agent__country__is_promotedBOOL
agent__country__never_indexBOOL
agent__country__sampleSTRING
agent__displayname__dirtyBOOL
agent__displayname__display_nameSTRING
agent__displayname__element_formatSTRING
agent__displayname__element_typeSTRING
agent__displayname__typeSTRING
agent__displayname__is_calculatedBOOL
agent__displayname__is_deletedBOOL
agent__displayname__is_hiddenBOOL
agent__displayname__is_per_appBOOL
agent__displayname__is_promotedBOOL
agent__displayname__never_indexBOOL
agent__displayname__sampleSTRING
agent__email__dirtyBOOL
agent__email__display_nameSTRING
agent__email__element_formatSTRING
agent__email__element_typeSTRING
agent__email__typeSTRING
agent__email__is_calculatedBOOL
agent__email__is_deletedBOOL
agent__email__is_hiddenBOOL
agent__email__is_per_appBOOL
agent__email__is_promotedBOOL
agent__email__never_indexBOOL
agent__email__sampleSTRING
agent__firstname__dirtyBOOL
agent__firstname__display_nameSTRING
agent__firstname__element_formatSTRING
agent__firstname__element_typeSTRING
agent__firstname__typeSTRING
agent__firstname__is_calculatedBOOL
agent__firstname__is_deletedBOOL
agent__firstname__is_hiddenBOOL
agent__firstname__is_per_appBOOL
agent__firstname__is_promotedBOOL
agent__firstname__never_indexBOOL
agent__firstname__sampleSTRING
agent__gender__dirtyBOOL
agent__gender__display_nameSTRING
agent__gender__element_formatSTRING
agent__gender__element_typeSTRING
agent__gender__typeSTRING
agent__gender__is_calculatedBOOL
agent__gender__is_deletedBOOL
agent__gender__is_hiddenBOOL
agent__gender__is_per_appBOOL
agent__gender__is_promotedBOOL
agent__gender__never_indexBOOL
agent__gender__sampleSTRING
agent__language__dirtyBOOL
agent__language__display_nameSTRING
agent__language__element_formatSTRING
agent__language__element_typeSTRING
agent__language__typeSTRING
agent__language__is_calculatedBOOL
agent__language__is_deletedBOOL
agent__language__is_hiddenBOOL
agent__language__is_per_appBOOL
agent__language__is_promotedBOOL
agent__language__never_indexBOOL
agent__language__sampleSTRING
agent__loccomplete__dirtyBOOL
agent__loccomplete__display_nameSTRING
agent__loccomplete__element_formatSTRING
agent__loccomplete__element_typeSTRING
agent__loccomplete__typeSTRING
agent__loccomplete__is_calculatedBOOL
agent__loccomplete__is_deletedBOOL
agent__loccomplete__is_hiddenBOOL
agent__loccomplete__is_per_appBOOL
agent__loccomplete__is_promotedBOOL
agent__loccomplete__never_indexBOOL
agent__loccomplete__sampleSTRING
agent__name__dirtyBOOL
agent__name__display_nameSTRING
agent__name__element_formatSTRING
agent__name__element_typeSTRING
agent__name__typeSTRING
agent__name__is_calculatedBOOL
agent__name__is_deletedBOOL
agent__name__is_hiddenBOOL
agent__name__is_per_appBOOL
agent__name__is_promotedBOOL
agent__name__never_indexBOOL
agent__name__sampleSTRING
agent__role__dirtyBOOL
agent__role__display_nameSTRING
agent__role__element_formatSTRING
agent__role__element_typeSTRING
agent__role__typeSTRING
agent__role__is_calculatedBOOL
agent__role__is_deletedBOOL
agent__role__is_hiddenBOOL
agent__role__is_per_appBOOL
agent__role__is_promotedBOOL
agent__role__never_indexBOOL
agent__role__sampleSTRING
agent__tags__dirtyBOOL
agent__tags__display_nameSTRING
agent__tags__element_formatSTRING
agent__tags__element_typeSTRING
agent__tags__typeSTRING
agent__tags__is_calculatedBOOL
agent__tags__is_deletedBOOL
agent__tags__is_hiddenBOOL
agent__tags__is_per_appBOOL
agent__tags__is_promotedBOOL
agent__tags__never_indexBOOL
auto__accountid__dirtyBOOL
auto__accountid__display_nameSTRING
auto__accountid__element_formatSTRING
auto__accountid__element_typeSTRING
auto__accountid__typeSTRING
auto__accountid__is_calculatedBOOL
auto__accountid__is_deletedBOOL
auto__accountid__is_hiddenBOOL
auto__accountid__is_per_appBOOL
auto__accountid__is_promotedBOOL
auto__accountid__never_indexBOOL
auto__accountids__dirtyBOOL
auto__accountids__display_nameSTRING
auto__accountids__element_formatSTRING
auto__accountids__element_typeSTRING
auto__accountids__typeSTRING
auto__accountids__is_calculatedBOOL
auto__accountids__is_deletedBOOL
auto__accountids__is_hiddenBOOL
auto__accountids__is_per_appBOOL
auto__accountids__is_promotedBOOL
auto__accountids__never_indexBOOL
auto__firstvisit__dirtyBOOL
auto__firstvisit__display_nameSTRING
auto__firstvisit__element_formatSTRING
auto__firstvisit__element_typeSTRING
auto__firstvisit__typeSTRING
auto__firstvisit__is_calculatedBOOL
auto__firstvisit__is_deletedBOOL
auto__firstvisit__is_hiddenBOOL
auto__firstvisit__is_per_appBOOL
auto__firstvisit__is_promotedBOOL
auto__firstvisit__never_indexBOOL
auto__id__dirtyBOOL
auto__id__display_nameSTRING
auto__id__element_formatSTRING
auto__id__element_typeSTRING
auto__id__typeSTRING
auto__id__is_calculatedBOOL
auto__id__is_deletedBOOL
auto__id__is_hiddenBOOL
auto__id__is_per_appBOOL
auto__id__is_promotedBOOL
auto__id__never_indexBOOL
auto__lastbrowsername__dirtyBOOL
auto__lastbrowsername__display_nameSTRING
auto__lastbrowsername__element_formatSTRING
auto__lastbrowsername__element_typeSTRING
auto__lastbrowsername__typeSTRING
auto__lastbrowsername__is_calculatedBOOL
auto__lastbrowsername__is_deletedBOOL
auto__lastbrowsername__is_hiddenBOOL
auto__lastbrowsername__is_per_appBOOL
auto__lastbrowsername__is_promotedBOOL
auto__lastbrowsername__never_indexBOOL
auto__lastbrowserversion__dirtyBOOL
auto__lastbrowserversion__display_nameSTRING
auto__lastbrowserversion__element_formatSTRING
auto__lastbrowserversion__element_typeSTRING
auto__lastbrowserversion__typeSTRING
auto__lastbrowserversion__is_calculatedBOOL
auto__lastbrowserversion__is_deletedBOOL
auto__lastbrowserversion__is_hiddenBOOL
auto__lastbrowserversion__is_per_appBOOL
auto__lastbrowserversion__is_promotedBOOL
auto__lastbrowserversion__never_indexBOOL
auto__lastoperatingsystem__dirtyBOOL
auto__lastoperatingsystem__display_nameSTRING
auto__lastoperatingsystem__element_formatSTRING
auto__lastoperatingsystem__element_typeSTRING
auto__lastoperatingsystem__typeSTRING
auto__lastoperatingsystem__is_calculatedBOOL
auto__lastoperatingsystem__is_deletedBOOL
auto__lastoperatingsystem__is_hiddenBOOL
auto__lastoperatingsystem__is_per_appBOOL
auto__lastoperatingsystem__is_promotedBOOL
auto__lastoperatingsystem__never_indexBOOL
auto__lastservername__dirtyBOOL
auto__lastservername__display_nameSTRING
auto__lastservername__element_formatSTRING
auto__lastservername__element_typeSTRING
auto__lastservername__typeSTRING
auto__lastservername__is_calculatedBOOL
auto__lastservername__is_deletedBOOL
auto__lastservername__is_hiddenBOOL
auto__lastservername__is_per_appBOOL
auto__lastservername__is_promotedBOOL
auto__lastservername__never_indexBOOL
auto__lastvisit__dirtyBOOL
auto__lastvisit__display_nameSTRING
auto__lastvisit__element_formatSTRING
auto__lastvisit__element_typeSTRING
auto__lastvisit__typeSTRING
auto__lastvisit__is_calculatedBOOL
auto__lastvisit__is_deletedBOOL
auto__lastvisit__is_hiddenBOOL
auto__lastvisit__is_per_appBOOL
auto__lastvisit__is_promotedBOOL
auto__lastvisit__never_indexBOOL
custom__practicumtest__dirtyBOOL
custom__practicumtest__display_nameSTRING
custom__practicumtest__element_formatSTRING
custom__practicumtest__element_typeSTRING
custom__practicumtest__typeSTRING
custom__practicumtest__is_calculatedBOOL
custom__practicumtest__is_deletedBOOL
custom__practicumtest__is_hiddenBOOL
custom__practicumtest__is_per_appBOOL
custom__practicumtest__is_promotedBOOL
custom__practicumtest__never_indexBOOL
custom__rmlsurveytest__dirtyBOOL
custom__rmlsurveytest__display_nameSTRING
custom__rmlsurveytest__element_formatSTRING
custom__rmlsurveytest__element_typeSTRING
custom__rmlsurveytest__typeSTRING
custom__rmlsurveytest__is_calculatedBOOL
custom__rmlsurveytest__is_deletedBOOL
custom__rmlsurveytest__is_hiddenBOOL
custom__rmlsurveytest__is_per_appBOOL
custom__rmlsurveytest__is_promotedBOOL
custom__rmlsurveytest__never_indexBOOL
custom__special__dirtyBOOL
custom__special__display_nameSTRING
custom__special__element_formatSTRING
custom__special__element_typeSTRING
custom__special__typeSTRING
custom__special__is_calculatedBOOL
custom__special__is_deletedBOOL
custom__special__is_hiddenBOOL
custom__special__is_per_appBOOL
custom__special__is_promotedBOOL
custom__special__never_indexBOOL
pendo__blacklistguides__dirtyBOOL
pendo__blacklistguides__display_nameSTRING
pendo__blacklistguides__element_formatSTRING
pendo__blacklistguides__element_typeSTRING
pendo__blacklistguides__typeSTRING
pendo__blacklistguides__is_calculatedBOOL
pendo__blacklistguides__is_deletedBOOL
pendo__blacklistguides__is_hiddenBOOL
pendo__blacklistguides__is_per_appBOOL
pendo__blacklistguides__is_promotedBOOL
pendo__blacklistguides__never_indexBOOL
pendo__designerenabled__dirtyBOOL
pendo__designerenabled__display_nameSTRING
pendo__designerenabled__element_formatSTRING
pendo__designerenabled__element_typeSTRING
pendo__designerenabled__typeSTRING
pendo__designerenabled__is_calculatedBOOL
pendo__designerenabled__is_deletedBOOL
pendo__designerenabled__is_hiddenBOOL
pendo__designerenabled__is_per_appBOOL
pendo__designerenabled__is_promotedBOOL
pendo__designerenabled__never_indexBOOL
pendo__donotprocess__dirtyBOOL
pendo__donotprocess__display_nameSTRING
pendo__donotprocess__element_formatSTRING
pendo__donotprocess__element_typeSTRING
pendo__donotprocess__typeSTRING
pendo__donotprocess__is_calculatedBOOL
pendo__donotprocess__is_deletedBOOL
pendo__donotprocess__is_hiddenBOOL
pendo__donotprocess__is_per_appBOOL
pendo__donotprocess__is_promotedBOOL
pendo__donotprocess__never_indexBOOL
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • Visitor Metadata__agent__tags__sample (4 columns)

How the Pendo sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Pendo supports it, each sync pulls only new and changed records so it stays fast; otherwise it refreshes the whole table. Every record keeps its original ID, so you won't get duplicate rows.

Frequently asked questions

How long does the initial sync take for Pendo?

It depends on how much history is in your Pendo account. Most initial syncs finish within minutes, while large accounts can take a few hours. After that, syncs only fetch new and changed records, so they're much faster.

Can I sync only some tables or columns?

Yes. You pick which tables to sync when you set up the connection and can change the selection later. Tables you don't select are never copied to your warehouse.

What happens when Pendo's schema changes?

New fields are never added automatically. You choose which fields to sync, so data you haven't selected (sensitive personal data, for example) never lands in your warehouse. When a new field appears, it becomes available for you to add. What happens to removed or renamed fields depends on a table's sync mode: full-refresh tables always match what's currently in Pendo, so dropped fields disappear, while incremental tables keep their existing columns and history, so an old field stays and newly added fields fill in over time.

How do I handle GDPR or data deletion requests?

Your data lives in your own Kaivo-managed BigQuery warehouse, so the most direct option is to delete or anonymise specific records right in BigQuery. If you delete data in Pendo instead, full-refresh tables drop it on the next sync, while incremental tables keep it, so you would remove the row in BigQuery or ask us to run a full refresh. To remove everything, delete the Pendo connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Pendo data

Feature adoption

Use Feature and Page data to see which parts of your product get used.

Guide performance

Bring Guide data into BigQuery to measure how in-app guidance lands.

Account health

Join Account Metadata with usage to spot accounts at risk or ready to expand.

Combine with revenue

Connect Pendo usage with your billing data to link product use to revenue.

Use Pendo data in your AI and BI tools

Once Pendo data lands in your Kaivo-managed BigQuery warehouse, you can explore it with AI tools or any BI tool that connects to BigQuery. Here's how the most common destinations work with Pendo data.

Claude

Use Kaivo's MCP server to give Claude secure, workspace-scoped access to your data. Setup guide →

Power BI

Microsoft's BI tool with a native BigQuery connector. Supports direct query and scheduled refresh. Setup guide →

Data Studio

Free Google BI tool with native BigQuery support. One-click connection to your Kaivo warehouse; great for SMB teams on Google Workspace. Setup guide →

Tableau

The premium analytics standard, with native BigQuery integration. Setup guide →

Google Sheets

Use Connected Sheets to query BigQuery directly from a spreadsheet, with no SQL. Setup guide →

Excel

Connect via Power Query's BigQuery connector. Setup guide →

Metabase

Open-source BI tool with strong BigQuery support. Setup guide →

See our pricing page for Pendo connector pricing and plan details.

  • HubSpot: Sync HubSpot to BigQuery.
  • Adform: Sync Adform to BigQuery.
  • Amplitude: Sync Amplitude to BigQuery.
  • Auth0: Sync Auth0 to BigQuery.
  • Convex: Sync Convex to BigQuery.
  • Dixa: Sync Dixa to BigQuery.

Was this helpful?

Still need help? Share an idea