Daily churn-risk alerts from PostHog to HubSpot and Slack

Catch paid users going quiet before they cancel. Each weekday morning, surface drop-offs from product usage and route them to the right account owner.

Agentic Task
PostHogHubSpotSlackSalesCustomer SupportDaily DigestsNotifications & AlertsData Sync
PromptCreate

Every weekday at 9am, run an agent workflow that finds paid users at risk of churn and routes them to my Customer Success team. The trigger is a cron schedule.

Step 1. Pull churn signals from PostHog. Use the PostHog Execute HogQL Query operation to find paid users where both of these are true: (a) their count of key product events over the last 14 days dropped by 50% or more compared to the prior 14-day window, and (b) their last_seen is more than 7 days ago. Treat 'key product events' as logins plus core feature usage events (the agent should ask me which events to use during setup if not obvious from the project). Return at least: user distinct_id, email, name, current 14-day event count, prior 14-day event count, drop percentage, and last_seen timestamp. Only include users on a paid plan (filter on a person property like plan, tier, or is_paid).

Step 2. Decide who is really at risk. The HogQL result is the candidate set, not the final list. Have the agent reason about each candidate and drop obvious noise: brand-new users with tiny baselines, users who churned long ago, users where the drop is one missing day rather than a sustained pattern. Keep the ones that look like a real fade. Rank the survivors by severity (bigger drop and longer silence is worse).

Step 3. Update HubSpot for each at-risk user. For each user that survived step 2, use HubSpot Search Contacts to look up the contact by email. If a contact is found, use HubSpot Update Contact to set a churn_risk property (value should reflect severity, for example 'high' or 'medium'), and use HubSpot Create Task to assign a check-in task to the contact's owner with a clear subject like 'Check in with {name} — usage dropped {X}%', due in 1 business day. If no contact is found, skip the HubSpot writes for that user but keep them in the summary.

Step 4. Post a ranked summary to Slack. Use Slack Send a Message to post to the Customer Success channel (the agent should ask me which channel during setup). The message should list at-risk users ranked by severity, one line each, including: name (or email if name missing), drop percentage, last session timestamp in human-friendly form (for example '9 days ago'), and a direct PostHog person URL so the CSM can jump straight into the user's activity. Call out any users that had no HubSpot match so the team can fix the data. If zero users are at risk, post a short 'No churn risks today' message instead so the team knows it ran.

Tone for the Slack message: concise, scannable, no emoji walls. Lead with the count, then the ranked list. The CSM should be able to act on the message without opening a doc.

Ask me during setup for: the PostHog project to query, which events count as key usage, the paid-user filter to apply, the HubSpot churn_risk property name, and the Slack channel to post into.

What does this prompt do?

  • Scans your PostHog data every weekday morning for paid users whose activity has dropped or who haven't come back in over a week.
  • Flags the riskiest accounts inside HubSpot by tagging the contact and assigning a check-in task to the account owner.
  • Posts a ranked summary to your Customer Success Slack channel with the user, drop percentage, last session time, and a one-click link back into PostHog.

What do I need to use this?

  • A PostHog account with product events for your paid users.
  • A HubSpot login that can read contacts and create tasks, with a churn risk property on the contact record (or willingness to add one).
  • A Slack workspace and the channel where your Customer Success team handles at-risk accounts.

How can I customize it?

  • Change the schedule. Run it every weekday at 9am, once a week on Monday, or twice a week, whatever rhythm your CS team works on.
  • Tune what counts as 'at risk'. Pick the events that represent real usage in your product, the drop threshold (for example 50% vs 70%), and how many days of silence trigger a flag.
  • Change the destination. Post to a different Slack channel, only ping the account owner directly, or skip the HubSpot task and just send a Slack digest.

FAQs

Do I need a paid PostHog plan to use this?
Any PostHog plan that lets you run product analytics queries will work. The workflow uses your standard query access, so as long as you can pull event data inside PostHog you can pull it here.
Does it have to be HubSpot?
The starter is built around HubSpot, but the pattern fits any CRM. Tell the agent you use Salesforce, Pipedrive, or Attio during setup and it will adjust the CRM steps.
How does it pick who to assign the check-in task to?
It reads the contact owner field on the matching HubSpot contact and assigns the task to that person. If no owner is set, the task is unassigned and called out in the Slack summary so your team can route it.
What happens if an at-risk user has no matching HubSpot contact?
They are still included in the Slack summary so your team can triage them manually. No HubSpot updates are attempted for users we can't match by email.
Can I change which events count as 'activity'?
Yes. Tell the agent which events represent meaningful usage for your product (logins, core actions, AI calls, key clicks) and it will build the churn signal around those.

Related templates

Client-by-client cold email pipeline review for agencies

Pick a client and a date range to see sent, replies, meetings booked and the real deal value your cold email produced, campaign by campaign.

Instantly
HubSpot
Slack Bot
App
Partner tier review board for quarterly promotion calls

Work every partner tier decision from one board, with the revenue and commission numbers, clear promotion thresholds, and AI review briefs.

Introw
HubSpot
Slack
App
Reconcile partner commissions between HubSpot and Introw

Open one board at month end to find every closed deal missing a commission, every commission with no deal behind it, and every amount that does not add up.

Introw
HubSpot
Slack
App
One control room for every Instantly sending mailbox

See warmup status, daily send volume, and bounce risk for every sending account in one grid, with the riskiest mailboxes floating to the top.

Instantly
Slack
App
Hiring signal board for your customers and open pipeline

Open one board each morning to see which of your accounts are hiring, what they are building, and where your product fits the roles they just opened.

JobsPipe
HubSpot
App
Partner payout approval queue with Xero bill handoff

Review Introw partner payouts line by line, approve them from one board, raise the matching bill in Xero, and post every approval to Slack.

Introw
Xero
Slack
App

Spot churn before it happens.

Connect PostHog, HubSpot, and Slack once, and Geni runs this check every weekday morning so your team can save accounts before they leave.