Loading tutorials…
Loading tutorials…
Amplitude says you're over your event quota and your bill is about to spike. Don't just disable tracking — that'll create gaps. Here's the systematic diagnosis specialists run when this happens.
Who this is forTeams getting Amplitude overage warnings, hitting Starter plan caps unexpectedly, or facing a contract renewal where event volume has 3-5x'd unexpectedly. Especially relevant if a recent product launch caused a volume spike.
What you'll need
Step 1
Amplitude → Data → Catalog → sort by "Volume (30 days)" descending. The top 5-10 events usually account for 60-90% of volume.
Open Amplitude → Data → Catalog.
Sort by Volume (30 days) descending. Look at the top 20 events.
For a healthy SaaS, expect: top event 15-25% of volume, top 5 events 50-60% of volume, top 20 events 85-95% of volume.
Red flags: a single event firing 70%+ of all volume (almost always a bug), an event you don't recognize in the top 5 (auto-fired by SDK or library), or a `[Amplitude]`-prefixed event dominating (autotrack issue).
Take a screenshot of the top 20 — this is your baseline before changes.
Step 2
For each of the top 3 high-volume events, ask: is this expected volume? Is the event firing on the right trigger? Is it firing once or many times per user action?
Top event: open it in Data Catalog → "Sample events." Look at 10-20 raw payloads.
Check the timestamps: are events firing in rapid bursts (multiple times per second from the same user)? If yes, there's a duplicate-fire bug.
Check event properties: is the event capturing properties you don't use in any chart? High-cardinality properties (URLs with query strings, session IDs) inflate storage costs.
For autotrack events (`[Amplitude] Page Viewed`, `[Amplitude] Element Clicked`): these are easy to disable selectively. The defaultTracking config supports per-event toggles.
For your custom events: trace back to the code. Search your repo for the event name. Often you'll find the SDK call inside a useEffect or render path that re-fires.
Step 3
Most high-volume events are duplicate-fire bugs: same event firing 2-10x per real user action. Fix the trigger logic, not the SDK call.
Common pattern 1: SDK call in a useEffect with missing dependency array. The event fires on every render — potentially 50+ times per page load.
Common pattern 2: event in a parent component that also passes props to child; child also fires the same event. Double-firing.
Common pattern 3: page-view event fires from both your router listener AND the SDK's autotrack. Disable one — usually autotrack for SPAs.
Fix: add a ref-based guard (`hasFired.current = true` on first fire) or move the SDK call into an onClick / onSubmit handler instead of a render lifecycle.
After fix, re-deploy and check Data Catalog 24 hours later. Volume should drop dramatically — typically 30-70% for a true duplicate-fire bug.
Step 4
Amplitude's Browser SDK 2 autotrack defaults are aggressive. Disable individual autotrack types you don't need.
In `amplitude.init()`, the `defaultTracking` config accepts an object: `{ pageViews: true, sessions: true, formInteractions: false, fileDownloads: false, elementInteractions: false }`.
For most SaaS, you want `pageViews: true` and `sessions: true` and NOTHING else from autotrack. Custom events should cover the rest.
Disabling `elementInteractions` alone often cuts event volume 30-50% in interactive SPAs.
Disabling `formInteractions` cuts another 5-15% if you have form-heavy flows.
After deploying the change, validate that your charts still work. The signal you lose by disabling autotrack should be replaced by custom events on the actions that matter.
Step 5
Properties like full URLs (with query strings), session IDs, or timestamps inflate storage costs even if event count is reasonable.
Find a high-volume event in Data Catalog → click into "Properties" view.
Check each property's cardinality (unique values). Properties with 10K+ unique values per 30 days are storage-expensive and rarely useful for charts.
Strip these properties before sending: `url` → `route` (pattern, not the full URL). `session_id` → drop from event properties (Amplitude has its own session tracking). `timestamp` → use Amplitude's built-in `time` field.
In your `analytics.ts` wrapper, add a property-stripping function that removes high-cardinality fields before forwarding to SDK.
Storage cost reduction from this fix: 10-25% typically.
Step 6
Internal team activity and bot scrapers can be 5-30% of event volume for early-stage products. Filter at SDK level + at Amplitude level.
Amplitude → Settings → Projects → Internal IP Filters → add office + remote employee IPs. Events from these IPs are excluded from volume billing.
At SDK level: in your `analytics.ts` wrapper, check `if (user.role === "admin" || user.email.endsWith("@yourcompany.com")) return` and skip tracking.
For bot filtering: Amplitude auto-filters known bots (Googlebot, Bingbot, etc.) but custom scrapers slip through. Use User-Agent regex to drop suspicious agents at the SDK level.
Re-measure event volume 24 hours after deploying. Internal filtering alone often drops volume 10-30%.
Step 7
For ultra-high-volume events (sensor data, real-time pings), consider batching multiple raw events into a single Amplitude event with aggregated properties.
Example: instead of firing "Slider Moved" 100x as user drags, fire once at drag-end with `final_value` and `total_movements` properties.
For continuous heartbeat events (active session pings), increase the interval from 10s to 60s or 300s. Storage drops 6-30x.
For events that are truly high-volume by design (analytics on your own product), consider whether they belong in Amplitude at all. Some events should live in your warehouse (BigQuery/Snowflake) and only summaries flow to Amplitude.
Last resort: sample. Fire 10% of certain events with a multiplier property (`sample_rate: 10`). Use formulas in charts to scale back up. Reduces volume 90% but loses precision.
Common mistakes
Disabling SDK entirely to stop overages
What goes wrong: You disable tracking to dodge the bill. Two weeks later you realize 30% of your charts now show flat data. Reverting is painful — you have a gap in event history that never gets backfilled. Lost insights: 6-12 months of comparable data.
How to avoid: NEVER fully disable tracking as a quick fix. Instead, find the specific runaway events and reduce them surgically.
Sampling without a multiplier
What goes wrong: You decide to track only 10% of "Page Viewed" events. You forget to add `sample_rate: 10` as a property. Every chart now reports 1/10th the real traffic. Decisions on bid budgets, hiring, capacity get made on numbers that are 10x off. Estimated impact: $10K-100K/yr in misallocation.
How to avoid: If you sample, ALWAYS include a `sample_rate` property and use formulas (`uniques * sample_rate`) in every chart. Document the sampling clearly in chart descriptions.
Treating storage cost as the same as event cost
What goes wrong: You strip events to reduce count but the bill doesn't drop. Storage of properties on existing events is the actual driver. You waste a week disabling events and still have the overage.
How to avoid: Amplitude charges on event count AND property storage. Investigate property cardinality before assuming event count is the issue.
Not setting up an alert before the overage
What goes wrong: Bill arrives. CFO is unhappy. You scramble to fix in 48 hours and end up disabling too much, losing real signal in the process. Cost: $2K-15K in overage + a quarter of bad data.
How to avoid: In Amplitude → Settings → Usage Alerts, set thresholds at 70%, 85%, 95% of plan. Slack + email. You find out 2 weeks before the overage and fix calmly.
Renewing at the same plan without renegotiating
What goes wrong: You've gotten used to the overage and the bill. Renewal happens at the inflated rate. You miss the chance to right-size the plan or push for a discount. Cost: $5K-30K/yr in plan you don't need.
How to avoid: Audit event volume 60 days before renewal. Right-size the plan (down OR up) and negotiate based on actual usage trend, not last year's contract.
Recap
Done — what's next
How to set up Amplitude event tracking the right way
Read the next tutorial
Hand it off
Amplitude overages are usually solvable in 2-4 hours by someone who has done this before. A specialist diagnoses, reduces volume 30-60% surgically, and sets up alerts so it doesn't recur. Typically $80-300 for a one-shot audit; $200-500/mo for ongoing event-volume management at $14-16/hr.
See specialist rates
In 30 minutes: open Data Catalog, sort by Volume, find the top runaway event, trace it to code. 80% of overages come from a single duplicate-fire bug or unintended autotrack event. Fix that one thing first; measure again 24 hours later.
Amplitude supports event deletion via Data → Catalog → "Delete event." Use with caution — deleted events are gone from all historical charts. Better to filter going forward than to delete history.
Segment can route events to Amplitude with transformations (drop, sample, batch). Adds an extra service to your stack but provides flexible volume control. Useful for teams >$50K/yr Amplitude spend; overkill below that.
Both charge per event volume. Mixpanel's entry-paid tier is typically 20-40% cheaper at moderate scale. At enterprise (1M+ MAU), the gap narrows. Migration cost ($20K-80K) usually exceeds 12 months of savings, so the math rarely justifies switching solely on price.
Healthy SaaS: 20-80 events per active user per month. Heavy-interaction tools (Figma, Notion): 100-300. Consumer apps: 50-150. Above 300 events per user, you're likely over-instrumenting or have autotrack misconfigured.
Amplitude
Bad event tracking is the most common reason Amplitude projects fail. Here is the naming convention, the SDK code, and the Data Guard rules that keep your taxonomy clean for years — not weeks.
Amplitude
Most Amplitude projects break in month three because of decisions made in the first hour. This walks through workspace setup, identity resolution, and the early taxonomy choices that determine whether your data is trustworthy six months from now.
Amplitude
Amplitude and Mixpanel are the two dominant product analytics platforms in 2026. They look similar from the outside but the right pick depends on what you actually need. Here's the honest comparison.
Amplitude
DIY Amplitude is a great idea — until your taxonomy gets out of control or your charts disagree with reality. This is the honest framework for when the math flips toward hiring.