DATA OPS
Pre-campaign audience gate: block sends until BigQuery and HubSpot agree
Before a campaign launches, verifies the BigQuery audience and the HubSpot list match on both row count and freshness, and either approves the launch in Slack or holds it.
How it runs
The automated pipeline, trigger to output.
- TriggerCampaign moved to queued (webhook with list IDs)HTTP webhook
- ActionGet BigQuery audience count and refresh timestampBigQuery
- ActionGet HubSpot list member countHubSpot
- LogicRun count-parity and freshness gates
- OutputPost approve-to-send or hold decision to SlackSlack
What it does
Acts as a go/no-go gate the moment a campaign is queued. It confirms the HubSpot list driving the send matches its BigQuery source on count and that the underlying data was refreshed recently enough to be trustworthy, then either greenlights or blocks the launch with a clear reason.
When to use it
Use it on high-stakes sends where mailing a stale or truncated audience costs real money or reputation, such as renewal pushes or win-back blasts. Instead of discovering a bad sync in the post-mortem, the operator gets an explicit approve-or-hold decision before a single email goes out.
How it works
- 1A webhook fires when a campaign is moved into the queued state, passing the audience and HubSpot list IDs.
- 2Query BigQuery for the source audience count and its latest refresh timestamp.
- 3Query HubSpot for the list's current member count.
- 4A logic step runs two gates: count parity within tolerance, and refresh recency within the freshness window.
- 5If both pass, post an approved-to-send message to Slack with the verified counts.
- 6If either fails, post a hold notice naming the failed gate so the operator can requeue after a resync.
Set it up
What you configure once, before turning it on.
- 1Connect BigQueryDatasets, queries, schemas.
- 2Connect HubSpotCRM, deals, marketing, support.
- 3Connect SlackChannels, DMs, threads, mentions.
- 4Connect HTTP webhookTrigger any URL on agent actions.
- 5Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
- 6Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
- 7Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.
More Data Ops workflows
Snowflake column type-drift sentinel with Linear fix ticket
Snapshots the data types of every column in your tracked Snowflake schemas on a schedule, diffs against the last snapshot.
Daily BigQuery Scheduled-Query Cost Attribution to Owners
Each morning, totals the prior day's on-demand bytes-billed per scheduled query, maps each query to its owner from a label, and posts a per-owner cost leaderboard to Slack.
BigQuery dropped/renamed column sentinel with PagerDuty incident
Detects when a column is dropped or renamed in your governed BigQuery datasets and, because that breaks downstream queries hard, pages the on-call via PagerDuty and posts…
PR-time Snowflake schema contract check on dbt model changes
When a pull request changes a dbt model, it compares the model's declared output columns against the live Snowflake table it will replace and blocks the merge with a GitHub check…
Agent-triaged warehouse drift with impact analysis and runbook update
On a webhook from your warehouse audit log, an agent investigates the changed column, traces which downstream models and dashboards depend on it.
Cross-warehouse replication schema mismatch reconciler
Compares the column shape of mirrored tables between BigQuery and Snowflake and, when a replicated table has drifted out of sync between the two, opens an Asana task for the data…
Run it inside a business
This workflow drops into a full company template. Import the org, and this is one of the playbooks its agents run.

Run this workflow in your colony.
14-day trial. No DevOps. No Sales call. Provisioned in under a minute.
