Heap vs Mixpanel: capture everything, or track what you plan
Heap records clicks, pageviews and form submissions automatically and lets you turn them into named events later, so questions you did not plan for can still be answered from old data. Mixpanel is built around events you send on purpose, now with an opt-in autocapture mode, and it bills on event volume with a published slider. Heap's free plan stops at 10k monthly sessions; Mixpanel's stops at 1M monthly events.
By Julian Pryor · Updated 7 Oct 2026
Short answer
Pick Heap if your product team changes its mind about what to measure every few weeks, you have little engineering time for tracking plans, and you can live with a Growth price that is only shown as an estimate after installing the snippet. Pick Mixpanel if you want a price you can read off a slider, a free plan that lasts to 1M events, an explicit tracking plan with a governance tool (Lexicon) around it, and server-side events from your billing webhooks. For a B2B SaaS that needs account-level reports, read the Group Analytics note below before choosing either.
What each plan lists today
Everything in this table was read from Heap's pricing page and Mixpanel's pricing page on 7 October 2026.
| Plan | Heap | Mixpanel |
|---|---|---|
| Free | $0; up to 10k monthly sessions, 6 months of data history, SSO, 1 project | $0; up to 1M events a month, unlimited seats, 10K session replays a month |
| Middle tier | Growth: unlimited users and reports, CSV exports, 12 months of history; "Sign up and install the free snippet to get an estimate!" | Growth: $120 a month billed annually ($140 on a monthly plan) at the 1.5M-event slider stop; first 1M events free; up to 20M events a month |
| Upper tiers | Pro and Premier: "Custom Session Pricing"; Pro adds account analytics and report alerts, Premier adds warehouse integration, unlimited projects and region-specific storage | Enterprise: contact sales; up to 1T events a month, custom data and replay retention |
| What is counted | Sessions; on web one ends after 30 minutes of pageview inactivity | Events across all projects in the organisation |
| Session replay | Add-on on Pro and Premier | Included allowance on each plan (10K a month free, up to 500K on Growth) |
Sessions against events: the cost at three traffic levels
The two vendors count different things, so a fair comparison needs a conversion. Mixpanel counts events; Heap counts sessions. The sums below use an assumption you should replace with your own number: 30 tracked events per session, which is a busy app session. A lighter product at 20 events per session lands in the second column.
| Monthly sessions | Events at 20 per session | Events at 30 per session | Heap | Mixpanel |
|---|---|---|---|---|
| 10,000 | 10,000 × 20 = 200,000 | 10,000 × 30 = 300,000 | $0 (exactly at the free limit of 10k sessions) | $0 (under 1M events) |
| 50,000 | 50,000 × 20 = 1,000,000 | 50,000 × 30 = 1,500,000 | Growth estimate shown after installing the snippet; no list price | $0 at 20 per session; at 30 per session the 1.5M slider stop reads $120 a month on yearly billing ($140 monthly) |
| 100,000 | 100,000 × 20 = 2,000,000 | 100,000 × 30 = 3,000,000 | Growth or Pro, price from an estimate or a quote | Slider stops at 2M and 3M; read them on the pricing page for your own volume |
One cross-check on Mixpanel's $140: its pricing documentation gives $0.00028 per event above the first million on a 1M-event Growth plan, and 500,000 events over the allowance times $0.00028 is $140, the monthly price at the 1.5M stop. The documentation adds that buying a larger volume up front lowers that rate, so the $0.00028 figure is a ceiling for bigger plans, not their price. If you cross a plan's limit on Growth, Mixpanel does not stop collecting; the extra is billed at the start of the next month.
What happens at the free ceiling differs and is worth knowing before launch day. Mixpanel's docs say a Free project that reaches 1M monthly events has its platform access limited, with no overage charge, until the month resets or you upgrade. Heap's page says it will not "drop or throttle" your data, but you get an email asking you to upgrade and cannot view your data again until you do. In both cases a traffic spike can lock you out of dashboards, so a launch week is not the moment to be on the free plan.
Autocapture and "define it later" against a tracking plan
Install Heap's snippet and, in the words of an older Heap blog post, "every customer interaction on your website; clicks, pageviews, form submissions, etc., gets recorded automatically." You then label the clicks and views that matter as events, and that post states a Heap event "will retroactively populate all historical data it has collected." Renaming or redefining works over history too. Its comparison point is a tag manager, where a tag "only collects data from that point forward." For a team that finds out in month six that it should have been measuring a particular button, that is the real selling point.
Mixpanel starts from the other side. Its introduction describes three concepts, events, users and properties, and tells you to plan the first events you want to track, adding that choosing them should take no more than five minutes. Its JavaScript documentation now lists an autocapture mode as well: from SDK version 2.60.0, setting autocapture: true turns on pageview, click, dead click, input, rage click, scroll and submit tracking, with text content capture off by default. The documentation pages read for this comparison describe that mode as collecting events going forward; they do not describe defining new events on top of old autocapture data the way Heap's blog does, so treat retroactive definition as Heap's headline strength.
The trade-off is cleanliness. A plan written in advance gives you named events with known properties, which is easier to keep consistent across web, mobile and server. Retroactive definitions depend on the page still looking like it did when the data was recorded, so a redesign can leave you redefining events. Neither approach fixes the harder problem of deciding what a "successful onboarding" means for your product.
Data governance and cleaning up
Mixpanel's Lexicon is its data dictionary, and its docs are specific about the clean-up actions. Hiding an event "does not affect data ingestion" and hidden items still "count toward your data allowance", so hiding tidies the interface but not the bill. Blocking stops Mixpanel storing new data for that event or property, and the docs warn that you cannot recover event data after you block it. Merging combines selected events into one without touching the raw data, and Mixpanel says it can reduce costs by removing redundant events. Fewer duplicate events means a smaller bill because the pricing unit is the event.
Heap's levers are on the plan page. Enterprise-style controls such as advanced user permissions, unlimited projects, behavioral targeting and region-specific storage appear only on Premier, and a data warehouse integration is listed there too. Heap's free plan allows 1 project, which matters if you want separate staging and production spaces. Mixpanel's own documentation says a Free project has features such as lookup tables, custom properties and permissions left out, and that governance features are aimed at Enterprise.
Identity, accounts and billing events for a SaaS
Mixpanel documents its identity model in detail. Its simplified ID merge uses $device_id as the anonymous ID and $user_id once someone is known; the docs say to call .identify on registration or login and to "send at least one event after the .identify() call", then .reset() on logout. They also state that "it is not possible to merge 2 $user_ids together using the Simplified API", which matters if people sign up twice with different emails and you later want one profile. Mixpanel's pricing docs list $identify, $create_alias, $merge and profile updates as non-qualifying, so identity calls do not eat your event allowance.
B2B products usually need reports by company, not just by person. Mixpanel sells Group Analytics as an add-on for exactly this and warns it "can't be implemented retroactively" for events already ingested, so decide before you collect. Heap's equivalent is account analytics, listed from the Pro plan up, which means the analysis you need for a B2B product sits behind a custom-priced tier.
Billing events are the same problem in both tools. Trial start, upgrade, failed payment and cancellation are decided in Stripe, Paddle or Chargebee, not in the browser, so autocapture never sees them. Forward them from your webhook handler as named events carrying the same user ID you used on the client; each one then counts as an event on Mixpanel's meter. Keep that list short, because a webhook that fires per invoice line adds volume. The Stripe vs Paddle page lists which events each billing system emits.
Moving from Heap to Mixpanel, or the reverse
- List the events your dashboards depend on. In Heap these are definitions over raw capture; in Mixpanel each becomes a track call or an autocapture setting, so write them down with their properties before you start.
- Choose the user ID now. Use your database ID as
$user_idon Mixpanel and send it on every server-side event, or you will split people across devices. - Run both tools in parallel for at least a full billing cycle, comparing the same funnel in each. Counts will not match exactly, since Heap counts sessions and Mixpanel counts events.
- Decide about history. Heap's pricing page lists a warehouse sync add-on that syncs data "automatically and retroactively", and its Premier plan lists data warehouse integration. Mixpanel's pricing docs say events are billed by ingestion time and that importing old data counts toward the month you import it, so a large backfill can push you past your allowance in that month.
- Cut over reports, then remove the old snippet. Keep the export from the old tool for as long as you need to answer year-on-year questions.
Which to choose
- Heap fits product teams that cannot predict their questions, have little engineering time for tracking code, and can accept a price shown after installation. Its free plan covers up to 10k monthly sessions and 6 months of history.
- Mixpanel fits teams that want a readable price curve, a free tier measured in 1M events, a data dictionary with block, hide and merge, and clear identity rules. Its pricing page also advertises a Startup Plan with a first year free for companies founded less than 5 years ago with up to $8M in total funding.
- A third option is worth a look if neither pricing unit suits you. Mixpanel vs Amplitude and PostHog vs Amplitude cover the next names on most shortlists.
Related reading: an analytics stack for SaaS, product analytics practices, the product analytics category and all comparisons.
Heap vs Mixpanel: common questions
Is Heap or Mixpanel cheaper for a small SaaS?
At small volume both are free. Heap's free plan covers up to 10k monthly sessions with 6 months of data history, and Mixpanel's covers up to 1M monthly events. Which limit you hit first depends on how many events each session produces: at 30 tracked events per session, 10,000 sessions are 300,000 events, well inside Mixpanel's allowance. Past the free tier Mixpanel publishes a slider price ($120 a month billed annually at 1.5M events), while Heap's Growth price is an estimate shown after you install its snippet, with no list price.
Does Heap really let me define events after the data is collected?
That is Heap's core pitch. A Heap blog post comparing it with a tag manager says an event defined in Heap "will retroactively populate all historical data it has collected", while a tag in a tag manager only collects from the moment it is created. The condition is that the interaction was captured in the first place, so what you can define later is limited by what autocapture recorded.
Does Mixpanel have autocapture now?
Yes, as an opt-in. Mixpanel's JavaScript SDK documentation says that from version 2.60.0 the SDK can autocapture events when you set autocapture to true, with pageview, click, dead click, input, rage click, scroll and submit tracking in the default configuration. It sits alongside Mixpanel's explicit tracking calls, which remain the main route for events such as plan upgrades and cancellations.
Can I send Stripe or Paddle billing events to either tool?
Yes in principle, but neither tool learns about a failed card by itself. A payment failure happens in your billing system, not in the browser, so it never shows up in autocapture. Your webhook handler has to send it as an event (for Mixpanel, with the same user ID you pass to identify), and in Mixpanel each such event counts toward your monthly event volume.
What do I lose when moving from Heap to Mixpanel?
Mostly the retroactive definitions. Events you defined on top of Heap's raw capture become explicit track calls or autocapture settings in Mixpanel, and history only comes across if you export it from Heap (its pricing page lists a warehouse sync add-on) and import it, where Mixpanel docs say old events are counted by ingestion time and so count toward the month you import them in.