Pre-warm Census syncs before the sales day starts

Every weekday at 6:45am, kick off your sales-critical Census syncs, wait for them to finish, and drop a summary in Slack plus a row in a Google Sheet.

Deterministic Code
CensusSlackGoogle SheetsOperationsSalesData SyncNotifications & Alerts
PromptCreate

Every weekday at 6:45am, pre-warm the sales-critical Census syncs so revenue teams start the day with fresh warehouse data in the CRM and marketing tools, and drop a confirmation card in #sales-ops Slack.

Trigger: cron, Monday through Friday at 6:45am in the team's local timezone. This is a deterministic workflow (fixed sync IDs, fixed poll loop, fixed message template), so build it as a code workflow, not an agent.

Inputs to expose at the top of the workflow so they are easy to edit later:

1. A configured list of Census sync IDs to pre-warm. Seed the list with three placeholders labeled Salesforce accounts sync, HubSpot contact scores sync, and marketing suppression list sync so the user can paste in their actual sync IDs. 2. The Slack channel to notify (default #sales-ops). 3. The Google Sheet ID and tab name for the audit trail (default tab: Morning Sync Log). 4. A per-sync poll timeout (default 20 minutes) and poll interval (default 30 seconds).

For each sync ID in the list, in order:

1. Call census.Trigger Sync Run to start the run. Capture the returned sync_run_id. Important nuance from Census: this endpoint returns 200 when the run is queued, NOT when it succeeds. Do not infer success from the trigger response.

2. Poll census.Fetch Sync Run with that sync_run_id every 30 seconds until status is no longer "running". Typical terminal values are "completed" and "failed". Stop polling on any non-running status, or when the per-sync timeout is reached (record that sync as "timed_out" and move on so one hanging sync does not block the rest).

3. Collect a result row: sync_id, sync name (from the sync run response if available), final status, records_processed, records_failed, error_code and error_message (when status is "failed"), started_at and finished_at, and a direct Census URL to the run (app.getcensus.com/syncs/{sync_id}/runs/{sync_run_id}, or app-eu.getcensus.com for EU workspaces).

Once every sync in the list has reached a terminal state (or timed out), do the two writes:

A. Send one Slack message via slack.Send a Message to the configured channel. Format it as a single summary card, not one message per sync. Include: the date, total syncs run, how many completed vs failed vs timed_out, and one line per sync showing status emoji + sync name + records_processed (and records_failed if any). For every sync whose status is failed or timed_out, include the direct Census link so the on-call person can jump straight into the run. Use a green check for completed, red X for failed, and clock for timed_out.

B. For each sync result, append one row to the Morning Sync Log tab of the configured Google Sheet using google-sheets.Append Values. Columns in this order: run_date, sync_id, sync_name, status, records_processed, records_failed, duration_seconds, error_code, error_message, census_url. This gives a rolling audit trail.

Robustness rules: if census.Trigger Sync Run itself errors (400/401/403/404/422/429), record that sync as status "trigger_failed" with the error message, include it in the Slack summary and the sheet row, and keep going with the next sync — one broken sync should never abort the batch. Respect Retry-After on 429s from Census. Do not re-trigger a sync that is already running; if the trigger response indicates a run is already in progress, poll the existing run instead.

Community context: teams commonly schedule reverse-ETL syncs to fire just before the sales day starts so revenue tools always have fresh warehouse data by the time reps log in. This workflow codifies that pattern into a repeatable morning pre-warm with a visible receipt in Slack and an audit trail in Sheets.

Additional information

What does this prompt do?
  • Runs a fixed list of Census syncs (Salesforce accounts, HubSpot contact scores, marketing suppression list) on a weekday morning schedule so warehouse data is fresh before reps log in.
  • Waits for each run to actually finish (not just queue) and captures the final status, records moved, and records failed.
  • Posts one consolidated summary in #sales-ops Slack with a direct Census link for anything that failed.
  • Appends a row for each sync to a Morning Sync Log Google Sheet so you keep a rolling audit trail.
What do I need to use this?
  • A Census (Fivetran Activations) workspace with the syncs you want to warm up already configured.
  • The sync IDs for each Census sync you want to include (from the sync URL or list view).
  • A Slack workspace with a channel like #sales-ops for the confirmation card.
  • A Google Sheet with a tab called Morning Sync Log and column headers ready for the rolling audit trail.
How can I customize it?
  • Change the schedule (e.g. run at 6:00am for early West Coast teams, or twice a day).
  • Edit the list of Census sync IDs to add, remove, or reorder which syncs get pre-warmed.
  • Point the summary at a different Slack channel, or mention on-call reviewers when a sync fails.
  • Swap the destination sheet or rename the Morning Sync Log tab.

Frequently asked questions

Why does this need to poll instead of just triggering the syncs?
When you trigger a Census sync, Census only confirms that the run was queued. The actual success or failure only shows up once the run finishes. This workflow keeps checking each run until it leaves the running state so the Slack summary reflects real outcomes, not just queued jobs.
Will this work with Fivetran Activations (the Census rebrand)?
Yes. Census is now part of Fivetran and branded as Fivetran Activations, but the workspace API, sync IDs, and behaviors this workflow uses are all unchanged.
What happens if a sync takes a long time or hangs?
The workflow uses a sensible timeout so it will not wait forever. If a sync has not finished before the timeout, it is included in the Slack summary as still running so the team knows to check on it.
Can I include more than three syncs?
Yes. The list of sync IDs is a plain list in the workflow, so you can add every sync your revenue team depends on. Each one gets its own row in the Google Sheet and its own line in the Slack summary.
Does the Slack message link back to Census?
Yes. Any sync that failed gets a direct link to that sync run inside Census so whoever owns it can jump straight to the error details.

Start every sales day with fresh warehouse data.

Stop finding out at 10am that overnight data never landed in Salesforce. Pre-warm the syncs and post the receipts before reps open Slack.