Daily ZoomInfo intent spikes to Slack with HubSpot tasks
Every weekday at 9am ET, post a Slack digest of accounts spiking on your buyer intent topics, with named decision-makers and a HubSpot task ready for the rep.
Build me an agent workflow that runs on a cron trigger every weekday (Monday through Friday) at 9:00am America/New_York. The goal is a daily sales digest of accounts that are spiking on buyer intent, with named decision-makers and a HubSpot task waiting for the rep.
Configurable inputs the user should be able to edit on the workflow page:
1) intent_topics: a list of ZoomInfo intent topic names that matter for our product. Default this to a placeholder list like ["Data Integration", "Workflow Automation", "Marketing Automation"] and tell the user to replace it with topics that match their ICP. 2) score_threshold: the minimum intent score that counts as a spike. Default 75. 3) slack_channel: the Slack channel (or channel ID) to post the digest in. Default "#sales-signals". 4) lookback_hours: how far back to look for new intent activity. Default 24. 5) max_accounts: cap on how many accounts to include in the digest. Default 15.
Each morning when the workflow fires, do the following:
Step 1: Use ZoomInfo's Search Intent operation to find buyer intent signals from the last lookback_hours across the configured intent_topics. Filter to companies whose intent score is at or above score_threshold. Sort by score descending and cap the results at max_accounts. Capture the company id, company name, primary domain, the topic(s) they are spiking on, and the score for each.
Step 2: For each spiking account, call ZoomInfo's Get Contact Recommendations to pull the top 2 to 3 recommended decision-makers. Then call ZoomInfo's Enrich Contacts in a single batch (it accepts up to 25 contacts per request) to get full names, titles, verified work emails, and LinkedIn URLs.
Step 3: For each spiking account, use HubSpot's Search Companies to find the matching company record by domain. If there is no match, mark the account as "net-new" and skip task creation for it; still include it in the Slack digest so the team knows about it.
Step 4: Compose a Slack digest and post it via Slack's Send a Message to slack_channel. Use Slack Block Kit. Start with a header block like ":zap: Intent spikes for {today's date} — {N} accounts above score {score_threshold}". Then one section block per account with: the company name (linked to its HubSpot record if matched, otherwise to its ZoomInfo URL), the intent topic(s) and score, the 2 to 3 named decision-makers with title and email, and a one-sentence "Why now" reason written from the topic + score (e.g. "Score 82 on Workflow Automation, up from baseline last week"). Use a divider between accounts. If an account is net-new to HubSpot, prefix it with a "NEW" badge so it stands out.
Step 5: For every account that did match a HubSpot company, use HubSpot's Create Task to create a follow-up task on that company record. Subject: "Intent spike: {topic} — score {score}". Body: include the named decision-makers (name, title, email) and the same "Why now" sentence used in Slack. Set the task due date to today, priority HIGH, status NOT_STARTED. Associate the task with the company record. If the HubSpot company has an owner, assign the task to that owner; if not, leave it unassigned and append "(unassigned — needs routing)" to the Slack line for that account.
If Search Intent returns zero qualifying accounts, post a single short Slack message in slack_channel that says "No accounts crossed the intent threshold today." rather than an empty digest. Do not create any HubSpot tasks in that case.
Be defensive: dedupe accounts if the same company spikes on multiple topics (group all topics under one block in Slack and one task in HubSpot). Cap decision-makers to 3 per account in the Slack message even if Get Contact Recommendations returns more. Handle ZoomInfo rate limits with retry/backoff.
Additional information
What does this prompt do?
- Watches ZoomInfo each morning for companies showing a fresh surge of interest in the topics that matter to your product.
- Pulls the most relevant decision-makers at each spiking account and looks up their names, titles, and verified work emails.
- Posts a tidy Slack digest in your sales channel with one block per account, including the topic, the score, the people to reach, and a short reason to follow up.
- Creates a HubSpot task on each matching company record so the assigned rep has the work waiting in their queue, not buried in a thread.
What do I need to use this?
- A ZoomInfo seat with API access and the intent, contact, and recommendations data enabled.
- A Slack workspace and the channel where your sales team wants the digest posted.
- A HubSpot login that can create tasks and read company records.
How can I customize it?
- Change the list of buyer intent topics so the digest tracks what your product actually sells against.
- Raise or lower the score threshold to control how many accounts make the cut each morning.
- Swap the Slack channel, change the post time, or route different topic clusters to different channels and reps.
Frequently asked questions
What counts as an intent spike?
Can I track more than one topic?
What if a spiking company is not in our HubSpot yet?
Who gets assigned the HubSpot task?
Will this work on weekends or holidays?
Stop letting buying signals go cold overnight.
Connect ZoomInfo, Slack, and HubSpot once, and every weekday at 9am your reps get a ranked list of accounts to call with the work already in their queue.