DATA OPS

Reconcile BigQuery audience row counts against HubSpot after each sync

After a reverse-ETL job pushes a BigQuery audience to HubSpot, this counts source rows versus synced contacts and alerts Slack when the delta exceeds a tolerance.

CategoryData Ops
Enginesim
Difficultyintermediate
Triggerwebhook
Steps5
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerReverse-ETL run completes (webhook with run ID + audience)HTTP webhook
  • ActionCount source rows in BigQuery audience snapshotGoogle BigQueryBigQuery
  • ActionCount HubSpot contacts tagged with sync batch IDHubSpotHubSpot
  • LogicCompute delta and compare to tolerance threshold
  • OutputPost confirmation or row-count drift alert to SlackSlack

What it does

Verifies that every row your reverse-ETL pipeline pushed from BigQuery actually landed in HubSpot. It compares the source audience row count to the count of contacts now carrying the sync's batch label, computes the drift, and pings your data team in Slack only when the gap is real.

When to use it

Run it right after a scheduled audience export (marketing segments, churn-risk lists, product-qualified leads). Silent partial syncs are the classic reverse-ETL failure: the job reports success but 4% of contacts hit a HubSpot validation error and vanish. This catches that before campaigns go out against an incomplete list.

How it works

  1. 1A webhook from your reverse-ETL tool fires when the sync run finishes, carrying the run ID and audience name.
  2. 2Query BigQuery for the exact row count of the audience snapshot tied to that run.
  3. 3Query HubSpot for the number of contacts stamped with the matching sync batch property.
  4. 4A logic step computes the absolute and percentage delta and compares it to a configured tolerance.
  5. 5If within tolerance, post a quiet confirmation; if not, post a red-flagged Slack alert with both counts, the delta, and the run ID for triage.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect BigQueryDatasets, queries, schemas.
  2. 2
    Connect HubSpotCRM, deals, marketing, support.
  3. 3
    Connect SlackChannels, DMs, threads, mentions.
  4. 4
    Connect HTTP webhookTrigger any URL on agent actions.
  5. 5
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  6. 6
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  7. 7
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.