Catch HubSpot champion job changes every Monday

Every Monday morning, see which of your HubSpot champions changed jobs, update their record, assign a follow-up, and post a digest to Slack.

Agentic Task
HubSpotWaterfall.ioSlackSalesOperationsNotifications & AlertsLead EnrichmentData Sync

Every Monday at 8am ET, run this workflow as an autonomous agent.

Step 1. Pull every HubSpot contact flagged as a champion using HubSpot Search Contacts. The champion signal is a custom property like is_champion equals true. If that property does not exist, fall back to lifecyclestage equals customer with a specific tag, or membership in a 'Champions' static list. Page through all results so no contact is missed. For each contact, capture the HubSpot contact id, full name, email, current company, current job title, and the account owner id.

Step 2. For each champion, call Waterfall.io Job Change Detection with their email and current company. This endpoint is synchronous and returns a status of moved, left, no_change, or unknown plus an updated profile snapshot with the new company and title when applicable.

Step 3. For contacts whose status comes back as moved, do all three of the following: (a) Update the HubSpot contact record using HubSpot Update Contact, setting the company field to the new company name and jobtitle to the new title. Do not overwrite any other fields. (b) Create a follow-up task using HubSpot Create Task. Assign it to the original account owner (hubspot_owner_id) captured in step 1. Subject: 'Reach out, champion moved to {new_company}'. Due date one business day from now. Associate it with the contact. (c) Add the mover to an in-memory digest buffer with: name, old company, new company, new title, and a HubSpot deep link to the contact record (https://app.hubspot.com/contacts/<portalId>/contact/<contactId>).

Step 4. For contacts whose status is no_change or unknown, skip them entirely. Do not write back to HubSpot, do not create a task, do not add them to the digest.

Step 5. After processing every champion, post ONE grouped digest message to the #champion-moves Slack channel using Slack Send a Message. The digest should: lead with a one-line header showing total champions checked and number of movers found; list each mover on its own line with name, old company arrow new company, new title, and the HubSpot deep link; order movers by likely value (use agent judgment, for example champions moving into ICP-fit companies, larger orgs, or named target accounts go to the top); be written in plain English with a friendly tone, not a robotic table.

Step 6. If zero movers are found, skip the Slack post entirely. Do not send an empty digest.

Make the champion-identifier signal, the Slack channel, and the ICP-fit criteria configurable inputs at setup time so a non-technical user can tune them without editing the workflow.

Additional information

What does this prompt do?
  • Checks every HubSpot contact you flag as a champion to see if they moved to a new company.
  • Updates the contact record with the new company and job title, and assigns a follow-up task to the original account owner.
  • Posts one grouped digest to your champion moves Slack channel with each mover's name, old company, new company, new title, and a link to the HubSpot record.
  • Skips anyone whose job status has not changed, so the channel only lights up when there's a real warm intro to chase.
What do I need to use this?
  • A HubSpot account with a way to mark champions (a custom property like is_champion, a static list, or a lifecycle stage tag).
  • A Waterfall.io account with an API key for job change detection.
  • A Slack workspace with a channel where the weekly digest should land.
How can I customize it?
  • Change the schedule, daily, twice a week, or the first Monday of every month.
  • Adjust how you define a champion, by custom property, static list, or lifecycle stage.
  • Pick the Slack channel and tweak the digest tone, ordering rules, or fields shown for each mover.

Frequently asked questions

How does it know who my champions are?
It reads from HubSpot using whichever champion signal you already use. That can be a custom property like is_champion equals true, membership in a 'Champions' static list, or a specific lifecycle stage. You tell the workflow which signal to use during setup.
What happens if a champion has not changed jobs?
Nothing. We skip contacts whose job status comes back as unchanged or unknown, so the Slack digest only fills up with real movers and your CRM is not touched.
Does it create a follow-up automatically?
Yes. For each mover, the workflow creates a HubSpot task assigned to the original account owner with a subject like 'Reach out, champion moved to Acme'. The owner sees it in their task queue the same day.
How are movers prioritized in the digest?
The agent ranks movers so the highest-value ones surface first, for example a champion moving into an ICP-fit company or a named target account, and writes the recap in plain English instead of a robotic table.
Can I run this more often than weekly?
Yes. Change the trigger to daily or any cadence you want. Most teams pick weekly because job changes are relatively rare and weekly keeps the signal high.

Turn customer job changes into your next deal.

Connect HubSpot, Waterfall.io, and Slack once, and Geni catches champion moves for you every Monday morning.