Skip to main content
Connectors

SurveySparrow connector

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

Written By Lauri Raivio

Last updated 16 days ago

Kaivo is a fully managed data platform that syncs your SurveySparrow 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 survey and email data instead of moving it.

What is the SurveySparrow connector

Sync your SurveySparrow data into BigQuery with Kaivo to analyse survey responses, question-level trends, and respondent context.

CategorySurveys & Email
AuthenticationAPI key
SetupSelf-service

Getting started with the SurveySparrow connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your SurveySparrow 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 SurveySparrow

Authenticate with your Access Token.

FieldDescription
Access Token

Your SurveySparrow access token. See here for how to generate one. The key is case sensitive.

Configuring the SurveySparrow connector

When you set up the connector, you provide:

FieldDescription
Survey IDs

A list of survey IDs to replicate data for survey-specific streams. If left empty, survey-specific streams will not return any data.

Tables and columns synced from SurveySparrow

Kaivo syncs 8 tables from SurveySparrow 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.
created_atTIMESTAMPThe date and time when the contact list was created.
descriptionSTRINGThe description or details about the contact list.
idINT64The unique identifier for the contact list.
nameSTRINGThe name or title of the contact list.
_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.
activeBOOLIndicates whether the contact is currently active or not.
createddateSTRINGThe date when the contact was created.
emailSTRINGThe email address of the contact.
first_nameSTRINGThe first name of the contact.
idINT64Unique identifier for the contact.
job_titleSTRINGThe job title of the contact.
last_nameSTRINGThe last name of the contact.
mobileSTRINGThe mobile phone number of the contact.
nameSTRINGThe full name of the contact.
unsubscribedBOOLIndicates whether the contact has unsubscribed from communications.
_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.
typeSTRINGType of question such as multiple choice, text, etc.
created_atTIMESTAMPDate and time when the question was created
idINT64Unique identifier for the question
is_requiredBOOLIndicates if the question is required to be answered
multiple_answersBOOLAllows multiple answers to the question
parent_question_idINT64ID of the parent question in case of a dependent question
positionSTRINGOrder in which the question appears in the survey
rtxtSTRINGText input for the question
updated_atTIMESTAMPDate and time when the question was last updated
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: questions__annotations

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: questions__choices

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: questions__scale_points

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: questions__tags

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_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.
channel_idINT64ID of the channel used for conducting the survey.
completed_timeTIMESTAMPTimestamp indicating when the respondent completed the survey.
contactSTRINGContact information of the respondent who took the survey.
idINT64Unique identifier for the response data.
languageSTRINGLanguage used in the survey responses.
start_timeTIMESTAMPTimestamp indicating when the respondent started the survey.
stateSTRINGCurrent state of the response data (e.g., in progress, completed).
survey_idINT64ID of the survey to which the response data belongs.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: responses__answers

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: responses__expressions

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: responses__variables

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_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.
account_idINT64The unique identifier for the account to which the role belongs.
created_atTIMESTAMPThe date and time when the role was created.
deleted_atTIMESTAMPThe date and time when the role was deleted.
descriptionSTRINGA brief description of the role and its responsibilities.
idINT64The unique identifier for the role.
labelSTRINGThe label or name used to identify the role.
nameSTRINGThe name of the role.
updated_atTIMESTAMPThe date and time when the role was last updated.
_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.
auto_createdBOOLIndicates if the survey folder was auto-created by the system or manually created by a user.
created_atTIMESTAMPTimestamp indicating the date and time when the survey folder was created.
descriptionSTRINGA text description or summary of the survey folder content.
idINT64Unique identifier for the survey folder.
nameSTRINGName or title of the survey folder.
visibilitySTRINGDefines the visibility settings for the survey folder, such as public, private, or shared.
_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.
archivedBOOLFlag indicating if the survey is archived or active.
created_atTIMESTAMPDateTime when the survey was created.
idINT64The unique identifier for the survey.
nameSTRINGName or title of the survey.
survey_typeSTRINGType of survey such as customer satisfaction, feedback, etc.
_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.
adminBOOLIndicates if the user is an admin or not.
agency_ownerBOOLIndicates if the user is an agency owner.
created_atTIMESTAMPThe timestamp when the user account was created.
emailSTRINGThe email address of the user.
idINT64The unique identifier of the user.
nameSTRINGThe name of the user.
ownerBOOLIndicates if the user is an owner.
phoneSTRINGThe phone number of the user.
role_idINT64The role identifier associated with the user.
verifiedBOOLIndicates if the user account is verified.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the SurveySparrow sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where SurveySparrow 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 SurveySparrow?

It depends on how much history is in your SurveySparrow 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 SurveySparrow'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 SurveySparrow, 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 SurveySparrow 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 SurveySparrow connector in Kaivo and all of its synced data is deleted with it.

Common use cases for SurveySparrow data

Response analysis

Use surveys and responses to summarise answers and trends over time.

Question view

Join questions with responses to see how people answer.

Contact context

Use contacts and contact_lists to connect responses to your audience.

Use SurveySparrow data in your AI and BI tools

Once SurveySparrow 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 SurveySparrow 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 SurveySparrow connector pricing and plan details.

Was this helpful?

Still need help? Share an idea