Weekly Product Metrics Digest: Mixpanel + Google Analytics → Slack via n8n
Every Monday at 8 AM, your team gets last week's activation, retention, and traffic numbers in Slack — without anyone opening a dashboard.
The stack in the order it runs — data flows from the source through to where it lands.
The problem isn't access to Mixpanel or GA4. Every founder has both open in a tab somewhere. The problem is nobody opens them on a schedule. Dashboards are pull. Slack is push. When the number appears in the channel where your team already makes decisions, it gets read, debated, and acted on. Without this, metrics get checked reactively — after something already broke.
Mixpanel's Query API (JQL or Insights API) and GA4's Data API are both straightforward REST endpoints. n8n hits both in the same workflow, no middleware needed. Use Mixpanel for behavioral funnel data — activation, feature adoption, retention cohorts. Use GA4 for acquisition and traffic. Combining them in one digest kills the split-brain problem: your PM quoting Mixpanel numbers and your growth person quoting GA numbers in the same meeting, neither of them wrong, both of them confused.
Use n8n over Zapier here. Zapier's GA4 integration as of 2024 is still limited to basic triggers — it doesn't expose the GA4 Data API's dimension+metric query interface. n8n's HTTP Request node gives you full API access. Slack is delivery. Google Sheets is optional but worth it as a historical log for week-over-week trend calculations.
Skip this if your team is already disciplined about opening Mixpanel and your Slack is noisy — one more automated message will get muted inside a week. Validate first that your team actually reads bot messages. Also skip GA4 if your product is a mobile app with no web component. Substitute Amplitude or PostHog instead — both have cleaner REST APIs than GA4.
The stack (5)
Web analytics most teams already run.
The Data API makes traffic a free input for weekly ops digests.
The universal data scratchpad.
Still the fastest place to land tabular data everyone can read.
How it runs
- 1
Set up a Monday 8 AM Schedule Trigger in n8n
Create a new n8n workflow. Add a Schedule Trigger with cron '0 8 * * 1' — every Monday at 8 AM. All date calculations in downstream nodes are relative to this trigger time: last week = the 7 days ending at midnight Sunday. Use n8n expressions $now.minus({days:7}).startOf('day') and $now.startOf('day') as your date range boundaries.
- 2
Query Mixpanel Insights API for activation and retention
Add an HTTP Request node. URL: 'https://mixpanel.com/api/2.0/insights' — or use the segmentation endpoint for event counts. Auth: Basic Auth with your Mixpanel Service Account username and secret. Build a JSON body requesting new user signups, activation event completions (e.g. 'project_created'), and DAU/WAU for the trailing 7 days. If you need funnel step data, use Mixpanel's JQL endpoint at 'https://mixpanel.com/api/2.0/jql' and pass your script as a 'script' POST param — it gives you more control. Parse the response in a Code node and pull out the 3–5 KPIs you actually care about.
- 3
Query GA4 Data API for traffic and acquisition
Add another HTTP Request node. URL: 'https://analyticsdata.googleapis.com/v1beta/properties/YOUR_PROPERTY_ID:runReport'. Auth: OAuth2 using a Google Service Account — generate a JSON key, add it to n8n's Google credentials. Request body: dimensions ['sessionSource', 'sessionMedium'], metrics ['sessions', 'newUsers', 'bounceRate', 'averageSessionDuration'], dateRanges [{ startDate: 'NdaysAgo', endDate: 'yesterday' }] where N=7. Limit to top 5 rows by sessions. Anything more and the digest stops being scannable.
- 4
Transform both payloads in a single Code node
Use n8n's Merge node to combine both API responses into one item, then feed that into a Code node. Compute: total sessions, new users, top acquisition source, Mixpanel WAU, activation rate (activations/signups as %), and week-over-week delta if you stored last week's numbers in Google Sheets. Output a clean object with human-readable labels — not raw API keys. Round all percentages to one decimal place.
- 5
Log to Google Sheets for historical tracking
Add a Google Sheets 'Append Row' node before you post to Slack. Store: week_start_date, sessions, new_users, top_source, wau, activation_rate, and all other KPIs. This sheet is your source of truth for WoW trend calculations on future runs. To get last week's row for comparison, add a Google Sheets 'Get Rows' node at the very start of the workflow and reference it inside the Code node.
- 6
Build and post the Slack digest
Add a Slack 'Send Message' node targeting your #product or #weekly-metrics channel. Use Block Kit: a header block ('📊 Weekly Product Metrics — Week of [date]'), a section block with a bullet list of each KPI and its WoW delta (green ↑ / red ↓ emoji based on direction), then a divider followed by a context block linking to your Mixpanel dashboard and GA4 property. Keep the total message under 10 bullets. If you're posting more than that, you've lost the plot on what actually matters.
- 7
Add a WoW regression alert
After the Slack digest node, add an IF node. Condition: activation_rate dropped more than 5 percentage points WoW, or WAU dropped more than 15%. If true, post a separate message to #alerts tagging your product lead: '⚠️ Activation rate dropped from X% to Y% this week. Check funnel.' The digest is for awareness. This alert is for action. Those are two different things and they belong in two different messages.
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.
Outlook Calendar Load + HubSpot Deal Velocity: Weekly Ops Digest to Microsoft Teams
Every Monday at 07:30, your revenue team gets one Teams card: last week's deal pipeline movement next to each rep's actual meeting load — so you stop guessing whether low close rates are a pipeline problem or a capacity problem.