Intercom Conversation Volume + Mixpanel Activation Rate: Correlated Weekly Health Score to Slack via Zapier
One number every Monday that tells you whether support is up because you're growing or because something broke.
The stack in the order it runs — data flows from the source through to where it lands.
Support volume going up is ambiguous on its own. Could mean growth. Could mean a bad release. Activation rate going down is the same — worse-fit users, or a broken flow. Correlate both signals together weekly and the pattern becomes readable: volume up + activation down = product problem. Volume up + activation stable = growth. Volume down + activation up = product getting better.
Zapier is here because its Mixpanel and Intercom integrations are mature and handle auth reliably. This is a weekly scheduled workflow a non-engineer needs to own and maintain. If you're already running n8n or Make, swap Zapier out — the logic is identical. The real tradeoff with Zapier is cost at scale. At high task volume, self-hosted n8n is cheaper.
Mixpanel's Data Export API (`/api/2.0/insights`) lets you pull a weekly funnel report by passing your funnel ID. You need to have already built your activation funnel in Mixpanel's UI — this workflow reads it, it doesn't define it. Intercom's Reports API (`/reports/conversation_totals`) returns opened, closed, and unanswered conversation counts for a date range.
Don't use this as a replacement for looking at the underlying data. This is a triage signal — a weekly 'should I dig in?' indicator. When the health score flags red, you still need to open Mixpanel and Intercom to understand why. The automation gets you to the right question faster. It doesn't answer it.
The stack (4)
How it runs
- 1
Set up a Zapier Schedule trigger for Monday mornings
Create a new Zap. Set the trigger to 'Schedule by Zapier' — choose 'Every Week' on Monday at 8:00 AM. It fires once weekly regardless of what else has changed. Name the Zap `Support-Activation Health Score`. You'll need Zapier's Webhooks and Code by Zapier steps — both are on paid plans — for the API calls and computation ahead.
- 2
Pull last week's Intercom conversation totals
Add a 'Webhooks by Zapier' step set to GET. URL: `https://api.intercom.io/reports/conversation_totals?start={last_monday_unix}&end={last_sunday_unix}`. Add an Authorization header: `Bearer YOUR_INTERCOM_ACCESS_TOKEN`. Use 'Code by Zapier' (Python) to compute `last_monday_unix` and `last_sunday_unix` dynamically — don't hardcode dates. The response includes `total_count`, `open`, `closed`, and `resolved_rate`. Capture `total_count` and `resolved_rate`.
- 3
Pull last week's activation funnel from Mixpanel
Add another 'Webhooks by Zapier' GET step. URL: `https://mixpanel.com/api/2.0/funnels/?funnel_id={YOUR_FUNNEL_ID}&from_date={last_monday}&to_date={last_sunday}&unit=week`. Authenticate with HTTP Basic Auth using your Mixpanel Service Account username and secret. The response returns `data.values` — extract the overall funnel conversion rate from step 1 to your final activation step. That's your `activation_rate` for the week.
- 4
Fetch the prior week's baseline values for comparison
Repeat steps 2 and 3 with date ranges shifted back 7 days — the week before last. This gives you `prior_conversation_count` and `prior_activation_rate`. You're computing week-over-week deltas, not comparing against a static hardcoded baseline. That's intentional — it makes the health score adaptive to your growth stage. Store all four values in Zapier's 'Storage by Zapier' key-value store, keyed by date, so you have a lightweight history.
- 5
Compute the health score in a Code step
Add a 'Code by Zapier' step in JavaScript. Compute `volume_delta_pct = ((current_conversations - prior_conversations) / prior_conversations) * 100` and `activation_delta_pp = current_activation_rate - prior_activation_rate`. Health score logic: GREEN if volume_delta < 20% AND activation_delta > -2pp; YELLOW if volume_delta > 20% OR activation_delta is between -5pp and -2pp; RED if volume_delta > 40% AND activation_delta < -2pp, or if activation_delta < -5pp regardless of volume. Output `{ health_score, volume_delta_pct, activation_delta_pp, current_conversations, current_activation_rate }`.
- 6
Post the health score to Slack with emoji-coded severity
Add a Slack 'Send Channel Message' step. Post to `#product-ops`. Message format: '**Weekly Product Health — {date_range}** 🟢/🟡/🔴 {health_score} Support Volume: {current_conversations} convos ({volume_delta_pct}% WoW) Activation Rate: {current_activation_rate}% ({activation_delta_pp}pp WoW) Support Resolution Rate: {resolved_rate}% {interpretation}' For the interpretation field: hardcode three short strings based on the health score state. Don't call Claude or any LLM for this. It adds latency and cost for what is just a conditional string.
- 7
Add a Slack alert-only message when the score is RED
Add a Zapier 'Filter' step after the health score computation: only continue if `health_score === 'RED'`. After the filter, add a second Slack step that posts to `#alerts` — not just `#product-ops` — in a more urgent format: '🚨 Product Health RED this week — Support volume up {X}% while activation dropped {Y}pp. Review Mixpanel funnel and Intercom conversation tags immediately.' Tag the relevant PM and support lead by Slack user ID directly in this message.
Want me to build this for you instead?
Product Audit and CTO Mode run out of this same thinking. If you’re reading this thinking “I want this, but in my product” — let’s talk.
See servicesMore like this
Google Analytics 4 + HubSpot Lifecycle Stage: Weekly Acquisition-Quality Digest to Slack via Pipedream with Claude Narrative
Stop reporting traffic numbers. Report whether the traffic you paid for last week actually became pipeline — with a one-paragraph executive summary written by Claude.
Gmail Thread Aging + Stripe Invoice Overdue: Unified AR Follow-Up Digest to Slack via Zapier
Surface overdue Stripe invoices and the exact age of your last Gmail thread with that customer — every morning at 8:30, automatically — so AR follow-up stops living in someone's head.
Intercom Ticket Volume + Razorpay Failed Payments: Daily Support-Cost-per-Revenue Alert to Slack via Zapier
Catch the support cost blowout from Razorpay failed payments before your agents are already buried.