In-depth two-product comparison
Mixpanel vs Heap
Mixpanel vs Heap for B2B SaaS: free to 1M events vs 10k sessions, Growth from $140, autocapture vs tracking plans, identity, and how to migrate.
Last updated: 2026-10-07
Short answer
Pick Mixpanel if an engineer will own a tracking plan and finance wants a number it can read: the free plan covers up to 1M monthly events, and Growth is listed at $140 on a monthly plan or $120 a month billed annually. Pick Heap if nobody has time to instrument before the next planning meeting: one snippet records views, clicks and form fills, and you name the events afterwards. The old shorthand that Mixpanel cannot autocapture is out of date, because its JavaScript SDK can record clicks and form submits once you switch the option on. What still separates the two is the meter (events against sessions) and the working habit (a written plan against labels applied to raw data). For a B2B SaaS with one engineer to spare, Mixpanel is the safer default. For a team with no engineering time at all, Heap produces the first funnel sooner.
Mixpanel
A published Growth price, explicit event names you control, and opt-in autocapture for the clicks you did not plan for.
Heap
Everything a visitor does is recorded from install day, and events are defined by labeling that raw data later.
Most comparisons treat this as autocapture against manual tracking, and that framing hides the more important difference. With Mixpanel you decide up front what an event is and write it into your code, so every number in a report traces back to a line a developer wrote. With Heap the data exists first and the definition comes second, so an analyst can answer a question nobody thought to instrument. Each approach fails in its own way: a tracking plan fails when the one question you need was never instrumented, and autocapture fails when a front-end redesign changes the elements your definitions were pointed at.
Quick comparison
| Decision area | Mixpanel | Heap | What to verify |
|---|---|---|---|
| What the bill counts | Monthly events: the free plan is up to 1M, and Growth is listed as first 1M free, up to 20M | Monthly sessions: the free plan is up to 10k. On the web a session ends after 30 minutes without a pageview | Convert your own traffic into both units before comparing: events per month for Mixpanel, sessions per month for Heap. |
| First paid plan | Growth: $120 a month billed annually, or $140 on a monthly plan, scaling with event volume | Growth: no list price; Heap shows an estimate after you sign up and install the free snippet | Install Heap on a staging copy for a week and read the estimate, then compare it against the Mixpanel slider at your event count. |
| Larger plans | Enterprise: contact sales | Pro and Premier: custom session pricing | For both, a written quote is the only number above the self-serve range, so ask for it with your expected annual volume. |
| How data is collected | You call track with an event name and properties. The JavaScript SDK also has an opt-in autocapture setting for clicks, inputs and form submits | One snippet records views, clicks, swipes and form fills; backend events go through Heap APIs | List the five actions that define activation in your product and ask whether each one is a click on the page or a server-side fact. |
| Naming events | Names are chosen in code when the event is sent | Events are defined afterwards by labeling raw interactions, and the definition applies to data back to install | Ask who edits event definitions in your team: a developer through a pull request, or an analyst through a visual tool. |
| Account-level analytics | Group Analytics, offered to Growth and Enterprise customers as an add-on package, with a Company Analytics view for B2B SaaS | Account analytics is listed from the Pro plan upward, alongside the engagement matrix and report alerts | B2B pages often hinge on this row, so get the add-on or Pro price in writing before you build account dashboards. |
| Data history | Not stated on the pricing page | 6 months on Free, 12 months on Growth, 1 year on Pro and Premier with paid add-on years | If you need year-over-year comparisons, count how many months Heap keeps on your plan and what the extra years cost. |
| Warehouse sync | Data pipelines and a warehouse connector are described in the docs for moving data in and out | Heap Connect syncs to a data warehouse, as an add-on for Pro and included with Premier | If your analysts live in SQL, confirm the plan that carries the sync before you sign. |
| Ownership | Independent analytics vendor | Heap says on its pricing page that it is part of the Contentsquare group | If you already use Contentsquare or want one contract for experience analytics, ask how Heap is packaged with it. |
The two bills are measured in different units, which makes a direct price comparison misleading. Mixpanel counts events, so a chatty product with many small events costs more than a quiet one. Heap counts sessions, so a product that people open briefly and often costs more than one they open once and use for an hour. Estimate both numbers for your product before reading any price table; the worked example below shows how to do it with two assumptions you can replace.
Feature comparison
| Feature | Mixpanel | Heap |
|---|---|---|
| Automatic capture | Off unless you enable it. Since SDK version 2.60.0 the JavaScript SDK takes an autocapture option; turned on, its defaults cover click, dead click, input, rage click, scroll and submit, and element text is not collected unless you ask for it. | On from the moment the snippet loads. Heap says the snippet captures every view, click, swipe and form fill, with no codebase changes needed to start. |
| Server-side facts | Sent from your backend with the same track idea, which suits payments, subscription changes and anything the browser never sees. | Heap's capture page says its APIs take client and server-side events. Billing state such as a plan change still has to be sent by you, because the browser snippet cannot see it. |
| Sensitive fields | Input and form submission content is not captured by autocapture, and elements can be kept out with the mp-no-track and mp-sensitive classes. | Heap's autocapture post says it records that something was typed into a sensitive field but not the value; confirm the behavior in the current product before relying on it. |
| Defining an event | A name plus properties, chosen in code. Mixpanel advises keeping names free of the reserved $ and mp prefixes. | A virtual event: a readable name pointing at underlying raw data, built through a point-and-click interface, and changeable later. |
| Funnels | Measure conversion through a series of events inside a time window; the funnels report is available on free and paid plans. | Funnels sit beside journey maps and retention charts on Heap's charts page, and every plan from Free up lists funnels. |
| Retention | Criteria include on-or-after, on, and on-or-before, with rolling or calendar windows, custom brackets and a frequency view. Day retention is limited to 60 days. | Retention charts are on every plan; the engagement matrix and report alerts start at Pro. |
| Seats | Seat limits are not printed on the pricing page we read. | Growth lists unlimited users and reports. |
| Projects | Not stated on the pricing page. | One project on Free and Growth, a small fixed number on Pro with more as an add-on, and unlimited on Premier. |
| Regional storage | The migration docs tell you to pick the server region (US or EU) before loading data, and the Import API has regional hosts. | Region-specific storage is listed on Premier only. |
Pricing and operating cost
Mixpanel
Free plan: up to 1M monthly events. Growth includes the first 1M events free and goes up to 20M monthly events.
Events are the meter, so a noisy tracking plan costs money: every near-duplicate event counts toward the 1M free events and toward the Growth tier. Account-level views need the Group Analytics add-on package on Growth or Enterprise, and its price is not on the plan table. Backfilling history is not free of consequence; Mixpanel's migration guide warns that a backfill can noticeably affect the bill.
Heap
Free plan: up to 10k monthly sessions with 6 months of data history and one project.
Past 10k sessions you leave the free plan; Heap's FAQ says it will not drop or throttle your data, but you must upgrade before you can view it again. Session Replay, Error Analysis and Heatmaps are an add-on for Pro and Premier, not part of the base plan. Heap Connect (the warehouse sync) and extra years of data history are add-ons on Pro.
| Tier or usage case | Mixpanel | Heap |
|---|---|---|
| Free | $0 up to 1M events a month Product analytics, session replay and experiments are listed product areas. | $0 up to 10k sessions a month Core charts, unlimited enrichment sources, SSO and 6 months of history. |
| First paid plan | Growth: $120 a month billed annually, $140 on a monthly plan First 1M events free; scales with events up to 20M a month. | Growth: estimate shown after installing the free snippet Unlimited users and reports, CSV exports, chart customization, 12 months of history, email support. |
| Larger accounts | Enterprise: contact sales Custom usage above the Growth ceiling. | Pro and Premier: custom session pricing Pro adds account analytics and the engagement matrix; Premier adds warehouse integration, behavioral targeting and unlimited projects. |
| Annual cost at the Growth starting price | $1,440 a year at $120 x 12; $1,680 a year at $140 x 12 The difference between annual and monthly billing at the starting price is $240 a year. Actual cost rises with event volume. | Estimate The estimate depends on the sessions Heap measures on your site, so it cannot be calculated from the pricing page alone. |
How each tool gets data in
Mixpanel's model is that you decide what is worth recording. Its JavaScript SDK documentation shows a track call carrying an event name and a few properties, and it advises against names that contain the reserved $ or mp prefixes. For a B2B product this is where you encode the events that matter to a buyer: workspace created, teammate invited, integration connected, report shared. Mixpanel also supports server-side sending, which is the right path for subscription changes and anything else that happens on your backend.
The same documentation page describes an opt-in autocapture mode, available from SDK version 2.60.0. You turn it on with an autocapture option in the init call, and its defaults record clicks, dead clicks, rage clicks, inputs, scrolls and form submits. Element text is not captured unless you enable it, and you can exclude whole URL patterns or elements with block and allow settings. This changes the usual advice. A Mixpanel team can start with autocapture for exploratory questions and keep explicit events for the handful of numbers that go on a board slide.
Heap's model is that you should not have to decide in advance. Its capture page says one snippet automatically captures every view, click, swipe and form fill, and that teams can add manually defined custom events and server-side events through its APIs. The raw interactions sit in storage until you need them; you then create a virtual event, a readable name that points at the underlying data, and the definition applies back to the moment Heap was installed, according to Heap's own explanation of autocapture. That post is several years old, so confirm in the current product that the behavior you depend on, especially retroactive property snapshots, still works as described.
- If your key product moments are clicks on pages you already ship, Heap lets you count them today without a release.
- If your key moments are server facts (a trial converted, an invoice paid), both tools need you to send them from the backend, so Heap's head start shrinks.
- If your front end is redesigned often, expect to re-point Heap definitions at the new elements, and expect Mixpanel's explicit events to keep working untouched.
Identity: anonymous visitors, logins and companies
Mixpanel derives a distinct ID from a device ID and a user ID. Before login, events carry only the device ID. When you call identify with your internal user ID and then send at least one more event, Mixpanel joins the two into an identity cluster and updates earlier anonymous events, as described in its Simplified ID Merge documentation. Two caveats from that page matter to a SaaS team. A user ID cannot be changed, so an email address is a poor choice. And profile properties you set on the anonymous device ID are not carried over, so set them again after identify. Mixpanel's JavaScript docs also recommend against calling identify for anonymous visitors.
Heap's identify reference describes a string that uniquely identifies a user and must be shorter than 255 characters; applying the same identity on another device merges earlier sessions into the existing Heap user. The page warns that passing a non-unique value such as undefined, null or user merges all anonymous data into one profile, which it says cannot be undone. Whichever tool you choose, write the identify call once, in one place, using your internal database ID.
Companies are the harder half of B2B identity. Mixpanel's Group Analytics lets you choose an event property such as a company ID or billing ID as the counting unit, and its Company Analytics view is aimed at B2B SaaS, with account health and activation measured from underlying user activity. The docs describe it as an add-on package for Growth and Enterprise customers. Heap lists account analytics on Pro, together with the engagement matrix and report alerts, so a team on Free or Growth will be reading user-level charts only.
Funnels and retention in practice
Both tools cover the two reports a B2B team opens first. Mixpanel's funnels report measures conversion through a series of events in a time window and is available on free and paid plans. Its retention documentation offers on-or-after, on, and on-or-before criteria, rolling or calendar windows, custom brackets such as days 15 to 30, and a frequency view that shows how many intervals a user was active in. One limit to plan around: day-level retention is capped at 60 days, so longer questions move to weeks or months.
Heap's charts page groups funnels, journey maps and retention charts together, and its pricing page lists funnels, journeys and retention from the Free plan up. The practical difference is not the chart type but what feeds it. In Heap a funnel step is a virtual event you can redefine and re-run on past data. In Mixpanel a funnel step is an event someone already sent, so a step you forgot to track is empty until you ship the code and wait for new traffic.
Worked example: sessions and events at three sizes
Both prices depend on numbers you can estimate in an afternoon. The example uses two assumptions of ours, not vendor figures: each active user opens the product 4 times a month (four sessions), and each session fires 30 events. Replace both with your own counts. Remember that Heap ends a web session after 30 minutes without a pageview, so someone who steps away for lunch and returns counts as two sessions.
- Small team, 2,000 monthly users: 2,000 x 4 = 8,000 sessions, which sits under Heap's 10k free allowance. Events: 8,000 x 30 = 240,000, well under Mixpanel's 1M. Both tools are free.
- Growing product, 10,000 monthly users: 10,000 x 4 = 40,000 sessions, four times Heap's free allowance, so you need Growth or higher and Heap gives an estimate after you install its snippet. Events: 40,000 x 30 = 1,200,000, which is 200,000 over Mixpanel's free 1M, so you move to Growth at $120 a month billed annually ($1,440 a year) or $140 on a monthly plan ($1,680 a year) as the starting price, with the final figure coming from Mixpanel's estimator.
- The same product with tighter tracking: if you cut to 20 events per session, 40,000 x 20 = 800,000 events, and Mixpanel stays free. Trimming events is the cheapest lever Mixpanel gives you; Heap has no equivalent, since sessions are set by how people use the product.
- Larger product, 50,000 monthly users: 50,000 x 4 = 200,000 sessions, which is 20 times Heap's free allowance and puts you in a quoted conversation. Events: 200,000 x 30 = 6,000,000, which is 30 percent of Growth's 20M ceiling (6 / 20), so Mixpanel is still self-serve, with the price read from its estimator.
Migrating from Mixpanel to Heap
- Export a list of the events your live dashboards actually use. Mixpanel's own migration guide says fewer than 20% of the data in a product analytics tool serves more than 80% of queries; the same audit tells you what to recreate in Heap and what to leave behind.
- Install the Heap snippet on staging first, then production. Heap collects from install onward, so your Mixpanel history does not follow you; keep the Mixpanel project available for older comparisons.
- Define a virtual event for each used Mixpanel event that is a page action, starting with the steps of your onboarding funnel. Name them the way Mixpanel named them so dashboards read the same.
- Send the events that never touch the browser, such as trial converted or invoice paid, through Heap's API from your backend, because the snippet cannot see them.
- Call Heap's identify with the same internal user ID you pass to Mixpanel identify, and never a placeholder like null or user.
- Run both for a full reporting cycle. Watch your session count against the 10k free allowance: Heap will not drop data above the limit, but you must upgrade before you can view it again.
- Switch off the Mixpanel track calls once the funnels agree, and keep read access for history.
Migrating from Heap to Mixpanel
Pricing was read from Mixpanel and Heap on 2026-10-07. For other pairings see Mixpanel vs Amplitude, Amplitude vs Heap, Heap vs PostHog and Mixpanel vs PostHog.
- Decide whether you need Heap's history. Heap Connect syncs your data to a warehouse automatically and retroactively, and is an add-on for Pro or included with Premier; on a lower plan, ask Heap how to export before your contract ends.
- Run a data audit using Mixpanel's migration guide: anything not queried in 30 days is probably stale and should not be re-instrumented.
- Write a tracking plan. Each Heap virtual event that mattered becomes either an explicit track call or an event captured by Mixpanel's autocapture option. Choose names once, because renaming an event in code later starts a separate series in your reports.
- Send identify at login with the same user ID Heap used, and call reset at logout so shared devices do not merge people.
- Backfill carefully. The guide recommends a year of history or less, a test load of one day into a separate project first, and either the warehouse connector or the Import API. It also warns that backfills can affect your bill.
- Rebuild dashboards team by team and compare numbers for a week. The guide estimates the technical piece for one engineer at a single sprint of one to three weeks, and it says migration will not fix data quality problems you already had.
Pros and cons
Mixpanel
Pros
- A Growth price you can read without a call: $120 a month billed annually, $140 on a monthly plan.
- The free plan covers up to 1M events, and you control the count by trimming events.
- Explicit event names make every report traceable to code, with opt-in autocapture for the gaps.
- Group Analytics and a Company Analytics view are aimed at B2B SaaS account health.
Cons
- Anything you did not instrument is missing until you ship code and wait for new data.
- Account-level features are an add-on package whose price is not on the plan table.
- Autocapture needs SDK 2.60.0 or later and is opt-in, so someone has to turn it on and tune it.
- Per-event rates above the starting price are not printed on the pricing page.
Heap
Pros
- One snippet records views, clicks, swipes and form fills from install day.
- Virtual events can be redefined later and applied to past data, with no release needed.
- Growth lists unlimited users and reports, so every PM and analyst can open the charts.
- Funnels, journeys and retention are on every plan from Free.
Cons
- Sessions are an awkward meter: 10k a month is a small free allowance for a busy product.
- Growth has no list price, only an estimate shown after installing the snippet.
- Account analytics, session replay and warehouse sync are Pro-level features or add-ons.
- Server-side facts such as billing state still need manual sending.
Who should choose what?
Founder-led product with no spare engineer
You need an onboarding funnel this week, and the only developer is busy shipping a release.
Recommendation: Heap. Heap's snippet starts recording on day one and the funnel steps are labeled in the interface, so the first chart does not wait on a release.
Finance asks what analytics will cost next year
You need a number for the budget without booking a sales call.
Recommendation: Mixpanel. Mixpanel publishes $120 a month billed annually ($1,440 a year) for Growth, while Heap's Growth figure only appears after you install its snippet.
Product with short, frequent visits
Users open a dashboard a dozen times a day for a few minutes each.
Recommendation: Mixpanel. Sessions pile up quickly with this pattern (a new one after every 30 minutes of web inactivity), so Heap's 10k free sessions disappear fast, while event counts depend on your tracking choices.
Marketing owns the website and the signup flow
The questions are about landing pages, form fills and click paths before login.
Recommendation: Heap. Heap records those interactions automatically, and the people asking can define events themselves without opening a code review.
Data team that lives in a warehouse
Analysts want clean, named events they can join to billing tables.
Recommendation: Mixpanel. Explicit event names and properties map to warehouse tables without a labeling layer in between, and Mixpanel's migration docs describe a warehouse connector and an Import API for loading data in.
Choose by who will be on the hook when a number looks wrong. If a developer will be asked to explain it, Mixpanel's explicit events give them something to read. If an analyst will be asked, Heap's labels and definition history give them something to edit without a deploy.
Final verdict
Choose Mixpanel if
- an engineer will own the tracking plan and review changes to it
- you want a published Growth price ($120 billed annually, $140 monthly) to budget from
- your product has frequent short visits, which would burn Heap's session allowance
- you want to control cost by trimming events rather than by traffic patterns
Choose Heap if
- nobody can instrument before the next planning meeting and you need answers now
- analysts and marketers need to define events themselves without a deploy
- most of your key moments are clicks and form fills on pages you already ship
- you want unlimited users and reports on the Growth plan
FAQ
Can Mixpanel autocapture like Heap does?
Partly. Mixpanel's JavaScript SDK has an autocapture option from version 2.60.0 that, when enabled, records clicks, dead clicks, rage clicks, inputs, scrolls and form submits. It is off until you turn it on, element text is excluded by default, and Mixpanel's main model is still named events you send. Heap's capture is always on from install and is paired with retroactive event definitions.
How much does Heap cost?
Heap's pricing page shows Free for up to 10k monthly sessions and says Growth is priced by an estimate you get after you install the free snippet. Pro and Premier use custom session pricing. There is no public dollar figure, so the only way to know is to install the snippet or contact Heap.
Is Heap still its own product now that it belongs to Contentsquare?
Heap's pricing page says it is part of the Contentsquare group, and the page still sells Heap's own Free, Growth, Pro and Premier plans, with an AI assistant branded as Contentsquare's Sense. How Heap and Contentsquare packages combine over time is a question for a sales call, because the pricing page does not say.
Which one is better for tracking companies rather than individual users?
Both gate it. Mixpanel offers Group Analytics as an add-on package on Growth and Enterprise, with a Company Analytics view built for B2B SaaS. Heap lists account analytics from the Pro plan. Get the add-on or plan price in writing before you commit to company-level dashboards.
What happens to my history if I switch?
Neither tool moves history for you. Moving to Heap, collection starts at install and your Mixpanel project stays your record of the past. Moving to Mixpanel, you export from Heap (the warehouse sync is a Pro add-on) and load it with Mixpanel's warehouse connector or Import API, ideally a year or less, tested on one day first.