
How to integrate Unify with Google BigQuery
To integrate Unify with Google BigQuery, send a Play webhook to an authenticated receiver that validates and stores the handoff before writing rows through BigQuery’s tabledata.insertAll API. The worker manages Google authorization and checks insertErrors for individual rows. A successful HTTP response alone is insufficient evidence that every row was accepted.[1][3]
- Connection
- Via webhook + endpoint
- Data storage
- Tool
- Google BigQuery
- Receiver → BigQuery table
- Data flow
- Unify → Custom receiver → Google BigQuery
- JSON payload
At a glance
- Define the decision the dataset should support
- Choose what one row represents
- Track accepted jobs and row-level write results
When this workflow makes sense
Start with the decision your team needs to make, then choose the connection that supports it.
The first analytical decision is what a row represents. If the table records handoffs, the same prospect can legitimately appear more than once. If it represents a current population, repeated delivery should not inflate the count. Write that definition down before connecting a dashboard, then make ingestion and reconciliation follow it.
A good fit when
Teams already operating BigQuery with an owner for ingestion, schema changes, and analytical definitions.
Reconsider the plan when
A spreadsheet or operational queue may be simpler when the only goal is reviewing a small set of prospects manually.
Design the handoff
Use this framework to agree on the input, the next action, and who owns the result.
Suggested workflow design, based on the documented capabilities below.
| Stage | Decision to make |
|---|---|
| Question | Define the decision the dataset should support |
| Grain | Choose what one row represents |
| Ingestion | Track accepted jobs and row-level write results |
| Reconciliation | Compare expected and stored records before reporting |
Explore the scenarios
Choose the situation that fits your team and work through the proposed plan.
Open a scenario to explore its plan. Checklists track your selections in this page only.
Analyze a selected prospect group
An analyst wants a stable dataset for a defined selection.
Define the population and row grain before calculating counts.
- Choose the selection rule
- Map a small controlled sample
- Reconcile stored rows with expected identities
Recover a rejected row
A batch contains a record that fails schema validation.
Retry the rejected work without losing successful-row identity.
- Inspect row-level errors
- Correct the invalid value
- Reconcile the retry with the job ledger
Illustrative workflow, not a preconfigured automation. Complete these checks in your own account.
Define success before launch
Inspect the data and the intended outcome separately. Connection status is only the first check.
Expected, not tested
The intended table contains the expected records under the chosen row-identity policy.
Check row-level responses and reconcile stored rows with accepted receiver jobs. Confirm that a controlled repeat does not distort the analytical question.
Documentation-based reference. This workflow has not been tested end to end. Use a record or event you control before enabling live activity.
Questions answered
Common decisions when connecting Unify and Google BigQuery.
Does BigQuery receive the raw Play body directly?
This design uses a receiver to transform it into a schema-matched API request.[3]
Why acknowledge before writing the warehouse rows?
Unify has an 8-second request timeout. The proposed receiver durably stores accepted work before acknowledging it.[2]
Does HTTP success mean every row succeeded?
Inspect insertErrors for row-level failures.[3]
Is insertId an exactly-once guarantee?
No. Its documented deduplication is best effort.[3]
Can a BigQuery query result feed the same Play?
Unify does not pass webhook response bodies to later Play steps.[2]
Limits & decisions
Check these boundaries before designing a live workflow around the connection.
- Requires implemented receiver, durable storage, and worker logic
- The table schema and row identity must be designed for the workload
- No exactly-once delivery or native bidirectional sync is claimed
- No Google credentials, table, insert, or query was created or executed
What the connection supports
Understand the connection, the data involved, and the behavior that matters for a Unify + Google BigQuery workflow.
Validate input, then write and reconcile table rows
Technical setup reference
References and requirements for the Google BigQuery connection.
Connection requirements and setup checklist
Before connecting
- A Unify Play with a Webhook action
- An owned HTTPS receiver with validation and durable job storage
- A controlled test record and a policy for repeat delivery
- A BigQuery project, dataset, and existing table schema
- A Google-authorized worker with the required table and dataset permissions
- A defined row identity and replay policy
Define what one row means
Choose between a handoff event and a current prospect snapshot. Create the intended schema separately and map only the fields needed for the analysis.[3]
Construct the destination write
Call POST https://bigquery.googleapis.com/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}/insertAll with rows containing json objects that match the schema.[3]
Request configuration
- Method
POST- URL pattern
https://YOUR_APP.vercel.app/api/unify-to-bigquery- Headers
Content-Type: application/jsonX-Unify-Webhook-Key: YOUR_WEBHOOK_SECRET- Authentication
- Validate a custom X-Unify-Webhook-Key header in your receiver. This is an example contract you implement. Keep destination credentials and token renewal in the worker.
Choose JSON as the body format. Unify sets Content-Type automatically. The receiver must respond within Unify’s 8-second timeout; request responses are not passed to later Play steps.[2]
Replace URL placeholders with the actual receiver URL from your account or deployed application. These example URLs are not working endpoints.
Example handoff payload
Start with a fictional prospect. Validate the resolved values before using a real record.
Inspect the sample payload and field mapping
{
"event": "prospect_handoff",
"prospect_name": "Alex Morgan",
"prospect_email": "alex@example.com",
"company_name": "Example Company",
"company_domain": "example.com"
}Fictional data. Replace sample values before using a real Play.
The keys are an example handoff format, not required Unify field names. Use the field mapping to distinguish record data from fixed settings. Select available fields in your Play and inspect Expand preview; do not replace configuration values with prospect data.[2]
| Payload field | Value to send |
|---|---|
event | A fixed label you choose for this workflow |
prospect_name | Use {{ person.first_name }} and {{ person.last_name }} for the prospect name |
prospect_email | Use {{ person.email }}; decide how to handle missing values |
company_name | Use {{ company.name }} |
company_domain | Use {{ company.domain }} |
The sample prospect object is receiver input. The worker converts it into {"rows":[{"json":{...}}]} using actual schema names and types. Credentials, table selection, and internal receipt metadata belong to the worker.
Troubleshooting
Start with the stage where the expected data or action stops appearing.
Only some rows appear
Inspect insertErrors and row indices, then validate schema and values for the rejected rows.[3]
Authorization fails
Check the worker identity and the documented table and dataset permissions.[3][4]
Counts increase on replay
Review the row grain and application deduplication policy; best-effort insertion IDs are not an exactly-once contract.[3]
Sources & review
Official documentation reviewed on September 15, 2026.
Technical claims link to primary documentation from Unify and the destination tool. Scenarios, field choices, and recovery plans are editorial implementation examples. Documentation review is separate from execution testing.
Documentation reviewed; end-to-end execution not tested. No named technical reviewer has signed off on these articles yet.
Content updated: . Report a correction to Unify with the tool name, source URL, and behavior you observed.
