Use this article to connect Pendo Data Sync directly to BigQuery. You configure a destination service account and a required Cloud Storage staging bucket, then enter those details in Pendo.
Note: Data Sync to BigQuery is currently available for Pendo subscriptions in the US and EU regions only.
How authentication works
The recommended authentication method uses two service accounts:
- A Pendo service account, displayed in the destination form, assumes the destination service account using short-lived credentials.
- A destination service account in your Google Cloud project has the required access to BigQuery and the staging bucket.
Don't grant the Pendo service account direct access to BigQuery or Cloud Storage. Grant it permission to assume the destination service account, which holds the required destination permissions.
A service account key is also supported, but service account role authentication is recommended because it doesn't require sharing a long-lived JSON key with Pendo.
Prerequisites
Before you begin, make sure that you:
- Are a Pendo subscription admin or have the Configure Data Sync permission.
- Can create and manage service accounts and IAM bindings in the destination Google Cloud project.
- Can create or configure the destination BigQuery dataset and a dedicated Cloud Storage staging bucket.
- Know the Google Cloud project ID, dataset name, and intended dataset location.
The staging bucket is required. Your BigQuery dataset and staging bucket can use a supported BigQuery location, but both resources must use the same location. This is separate from the Pendo-region availability note above.
Step 1. Start the destination in Pendo
- Open the Data Sync setup flow and select Google BigQuery.
- Enter the Project ID and Dataset name.
- For Auth method, select Service Account Role (recommended).
- Copy the Pendo service account shown in the form. The value is specific to the Pendo connection; don't use an example address from documentation.
Keep the setup flow open while you configure Google Cloud.
Step 2. Create the destination service account
- In the Google Cloud project that owns the destination, create a dedicated service account for Pendo Data Sync.
- If the BigQuery dataset doesn't exist, grant the destination service account the BigQuery User role at the project level. This allows the connector to create the dataset, run jobs, and read project metadata.
- If the dataset already exists, grant:
-
bigquery.jobs.createat the project level. -
BigQuery Data Owner on the destination dataset, or a custom dataset-level role containing:
bigquery.datasets.getbigquery.tables.createbigquery.tables.deletebigquery.tables.getbigquery.tables.getDatabigquery.tables.listbigquery.tables.updatebigquery.tables.updateDatabigquery.routines.getbigquery.routines.list
-
Step 3. Allow Pendo to use the destination service account
On the destination service account, grant the Pendo service account copied from the form both of the following roles:
- Service Account Token Creator
- Service Account User
Scope these bindings to the dedicated destination service account where possible.
If your Google Cloud organization uses domain-restricted sharing and blocks the Pendo service account, contact Pendo Support for the customer ID required by your policy.
Step 4. Create the staging bucket
- Create a dedicated Cloud Storage bucket for Data Sync staging.
- Use the same location as the BigQuery dataset. If the dataset doesn't exist, Pendo creates it in the bucket's location.
- Keep the bucket private. We recommend uniform bucket-level access.
- Grant the destination service account Storage Admin on the bucket. For narrower access, use either:
- Storage Legacy Bucket Reader and Storage Object User on the bucket; or
- A custom bucket-level role containing:
storage.buckets.getstorage.objects.liststorage.objects.getstorage.objects.createstorage.objects.delete
Pendo deletes staged objects after they are loaded. You can add a two-day object lifecycle rule as an additional safeguard.
Step 5. Complete the destination in Pendo
- Return to the BigQuery destination form.
- Enter the Service account email for the destination service account.
- Enter the GCS bucket name and GCS bucket region.
- Validate the connection, then continue to select data.
If you use a key instead of role authentication:
- In Google Cloud, go to IAM & Admin > Service Accounts and open the destination service account.
- Open Keys, then select Add key > Create new key.
- Select JSON, create the key, and store the downloaded file securely. You can't download the same key again.
- In Pendo, select Service Account Key and provide the JSON key for the destination service account.
- Protect, rotate, and revoke the key according to your organization's credential policy.
For more information, see Create and delete service account keys.
Step 6. Select data to sync
Choose the Pendo applications to sync. You can also choose account and visitor metadata. Data selection is optional during initial setup and can be completed later.
The first recurring sync begins overnight after the destination is configured and data is selected. Subsequent syncs run approximately every 24 hours.
For the available tables and fields, see Data Sync schema definitions and the BigQuery ERD.
Troubleshooting
| Symptom | Cause | Resolution |
|---|---|---|
| Pendo can't assume the destination service account. | The Pendo service account is missing one or both required IAM roles on the destination service account. | Confirm the Service Account Token Creator and Service Account User bindings and their scope. |
| Validation reports a dataset or bucket location error. | The Cloud Storage bucket and BigQuery dataset are in different locations. | Use a bucket in the same location as the dataset, then retry. |
| Pendo connects but can't create or update tables. | The destination service account lacks a required BigQuery project or dataset permission. | Recheck bigquery.jobs.create and the dataset-level role or custom permissions. |
| A staging operation fails. | The bucket is public, inaccessible, or missing an object permission. | Keep the bucket private and confirm the destination service account can list, read, create, and delete objects. |
| A new IAM grant isn't recognized. | Google Cloud IAM propagation isn't complete. | Wait up to 10 minutes, then retry validation. |
| BigQuery doesn't appear as a destination. | The Pendo subscription isn't hosted in a supported region. | Confirm that the subscription is in the US or EU region. |