Weekly Mixpanel funnel regression audit into Linear
Every Monday at 9am, audit your Mixpanel funnels for week-over-week drops, file Linear tickets for each regression, and post a summary to Slack.
Build an agent workflow that runs every Monday at 9am in my local timezone and audits my Mixpanel funnels for week-over-week regressions, then files fix-it tickets in Linear so the product team walks into standup with a punch list.
Trigger: cron, weekly on Monday at 9:00 (default timezone America/Los_Angeles, expose it as an input).
Inputs to expose on the workflow:
- funnel_ids: optional list of Mixpanel funnel IDs. If empty, audit every saved funnel in the project.
- absolute_threshold_pp: default 5 (percentage points).
- relative_threshold_pct: default 15 (percent). A step is flagged if EITHER threshold is crossed.
- min_prior_step_entries: default 200. Skip funnels or steps below this to avoid statistical noise.
- linear_team_id: which Linear team the tickets get filed in.
- slack_channel: the product channel to post the summary to.
- dedupe_open_issues: default true. If an open Linear issue already exists for the same funnel + step, add a comment with this week's numbers instead of creating a duplicate.
What the agent should do each run:
1. Use Mixpanel List Saved Funnels to resolve the set of funnels to audit (either the configured list or every saved funnel).
2. For each funnel, call Mixpanel Query Saved Funnel twice: once for the last 7 completed days (current window) and once for the 7 days before that (prior window). Use the funnel's project timezone.
3. For each step, compute current step-conversion, prior step-conversion, absolute change in percentage points, and relative change. Skip the funnel entirely if prior-window entries into the funnel are below min_prior_step_entries. Skip individual steps whose prior entries are below min_prior_step_entries.
4. Flag any step where step-conversion dropped by more than absolute_threshold_pp OR by more than relative_threshold_pct in relative terms.
5. For each flagged step, call Mixpanel Query Segmentation on the entry event of that step for the current 7-day window, broken down separately by device, browser, referrer, and app version. Identify the top 3 segments where the conversion drop is most concentrated (compare each segment's current-window rate to the prior-window rate; require enough volume per segment).
6. For each meaningful regression, create a Linear issue in linear_team_id using Linear Create Issue with:
- Title: "Funnel regression: {funnel_name} — {step_name} down {X}pp WoW" (use a hyphen, not an em dash).
- Description (Markdown): current vs prior step-conversion with absolute and relative deltas, current vs prior entries, the top segments driving the drop as a bulleted breakdown, and a direct link back to the Mixpanel funnel report.
- Priority: earlier steps map to higher priority. Step 1 or 2 -> Urgent (1), step 3 or 4 -> High (2), later steps -> Normal (3). Expose this mapping as an override.
7. Deduplication: before creating, if dedupe_open_issues is true, search open Linear issues in the team for a title containing the funnel and step. If one exists, add a comment with this week's numbers instead of filing a new ticket.
8. Post exactly one Slack Bot Send a Message to slack_channel that lists every ticket filed this run (funnel, step, delta, Linear URL). If nothing was flagged, post a short 'No funnel regressions this week' note instead. Never send more than one Slack message per run.
Guardrails: respect Mixpanel Query API rate limits (back off on 429). Never file a ticket for a step whose prior-window volume was under min_prior_step_entries. Round conversion rates to one decimal place in the ticket title and body.
Additional information
What does this prompt do?
- Pulls your saved Mixpanel funnels every Monday morning and compares the last 7 days to the prior 7 days, step by step.
- Flags any step whose conversion rate dropped past your threshold and drills in by device, browser, referrer, and app version to show where the drop is concentrated.
- Files a Linear ticket for each regression with the numbers, the top segments driving it, a link back to Mixpanel, and a priority based on how early in the funnel the drop happened.
- Posts a single Slack summary listing every ticket filed, or a clean 'no regressions this week' note when the funnels are healthy.
What do I need to use this?
- A Mixpanel project with the funnels you care about already saved.
- A Linear workspace and the team where fix-it tickets should be filed.
- A Slack workspace and the product channel where the weekly summary should land.
How can I customize it?
- Change the schedule or timezone so the recap lands right before your product standup.
- Tune the regression threshold (default is a 5 percentage point drop or 15% relative) and the minimum funnel volume to skip noisy low-traffic funnels.
- Point tickets at a different Linear team, adjust the priority rules, or route the Slack summary to a different channel.
Frequently asked questions
Will this create a ticket every week even when nothing is broken?
How does it decide which segments to call out in the ticket?
Can I limit it to a specific set of funnels?
What stops it from spamming Linear with duplicate tickets week after week?
How is the ticket priority chosen?
Related templates
Walk into Monday standup with a fix-it list, not a dashboard hunt.
Connect Mixpanel, Linear, and Slack once, and Geni catches funnel regressions and files tickets every Monday at 9am.