Why your Klaviyo bill is too high (and how to cut it without losing revenue)


Your Klaviyo bill went up. Your email revenue didn’t.
One paragraph of history explains it: since February 18, 2025, Klaviyo bills for every active profile in an account, not just the profiles that get emailed. The invoice now meters a number most operators have never once counted, and that number has been quietly collecting residents for years.
A wellness brand came to us paying for 145,000 active profiles. When we opened the file, over 55% of it was inactive. They were running a 145,000-seat stadium for an 80,000-person crowd, and paying rent on every seat. We’ll come back to them.
An active profile is any profile Klaviyo could email: valid address, not suppressed, not deleted. Notice what’s missing from that definition: consent, engagement, any evidence the person knows the brand exists.
Someone who typed an email into checkout, thought better of it, and left forever is billable. A “Never Subscribed” profile from a 2022 giveaway import is billable. The bill doesn’t ask whether a profile ever mattered, only whether it can technically receive a send.
Two meters drive the core cost: active profiles set the plan tier, and message credits cover the sending (email plans include roughly 10x the profile count in monthly sends; SMS runs on its own credit system). Add-ons bill separately, and the one rule there is to be certain each one is actually earning its line.
Here’s why cleanup pays so directly: suppressed profiles fall off the bill entirely. Drop below a tier threshold before renewal and the invoice shrinks, with zero revenue traded away if the cut was chosen well. Choosing it well is everything, and it’s the rest of this piece.
1. Upgrades are automatic, and there is no opt-out. Cross the plan’s profile limit and Klaviyo moves the account up a tier at renewal. The billing-preference toggles govern send limits, not profile count, so no setting anywhere prevents a profile-driven upgrade.
Meanwhile the road runs one way: downgrades never happen on their own unless the separate auto-downgrade setting is enabled, and that setting ships off by default. An account that has never visited that screen has a plan that only knows how to climb.
2. The 90-day lock. Unsuppress a profile and it can’t be manually suppressed again for 90 days. Three billing cycles, paid in full, per profile.
That nostalgic pre-sale reactivation of a dormant 30,000-person segment? It just signed a quarter-long lease. Reactivation isn’t free; it’s a priced decision, and the price should be known before the send goes out.
3. Billing-cycle timing. The only count that matters is the one standing on the renewal date, which lives under Billing → Billing Cycle. Klaviyo will tell an account it’s over the limit, but anything over the limit has to be gone before that date.
The tier is set by whoever is standing in the account at renewal. Suppress on Day +1 and the ghosts ride the invoice for another full cycle.
A beautiful suppression run the day after renewal saves exactly nothing for a month. Treat cleanup as a recurring calendar event parked 48 hours ahead of the date, every cycle, forever.
4. Flex vs. upgrade math. When sends run over, flexible sending grants the next tier’s full capacity as a one-time fee at the current plan’s unit rate, then resets at renewal. Need 12,000 extra credits when the next block holds 12,500? The bill reads 12,500.
Klaviyo’s own documentation concedes upgrading is generally more economical when the need is consistent. Flex is for a spike. If the account flexes every month, the spike is called growth, and it deserves the tier with the better unit rate.
Dead profiles are the main leak, and they got in through doors nobody remembers opening.
A standard Shopify integration collects: every historic Shopify customer on connect, buyer or not. Every purchaser, including guest checkout, consent or not. Every checkout abandoner, because Checkout Started fires the instant the email field is filled, so a person who typed an address and fled is now a monthly expense.
POS emails from the register, usually with no marketing consent attached. Even Klaviyo’s own popups log an email the moment it’s typed, so a half-finished form counts the same as a signup.
Then the ones that surprise even experienced operators. Helpdesk integrations are the classic bill-inflator: profiles whose entire relationship with the brand is a support ticket about a lost package. Wholesale marketplace buyers ride in through Shopify orders, so DTC-tier rates apply to accounts that were never supposed to see a DTC send.
Reviews, loyalty, and subscription apps each write their own profiles. Old giveaway imports sit in the count like furniture. The lone piece of good news: hard bounces auto-suppress and fall off the bill, so bounce hygiene has been cost control all along.
There’s a philosophy that defends all this bloat, and we have a name for it: spray-and-pray. Every profile on every campaign send, because reach feels like marketing and a big list photographs well in a dashboard.
We pulled apart a 440,000-profile account run exactly this way. The optimized core, the people actually producing the clicks and the sales, was 175,000.
Over 160,000 profiles had never clicked a single email. Not one. If someone hasn’t clicked on the last 55 emails, what exactly is the plan for email 56?
Identified in a real 440K account. Everything above the amber bar is billable reach with no evidence of a reader behind it.
The engagement window isn’t a platform default, it’s the product’s repurchase calendar. A one-year buying cycle defines “inactive” one way; we’ve seen legitimate repurchase calendars run 2 to 4 years, and against those files a lazy 180-day rule doesn’t cut dead weight, it cuts future orders.
Assess the whole file: clicks, site activity, purchase history, recency, all read against that calendar.
And read it on clicks, because opens stopped telling the truth in September 2021. Since iOS 15, Apple Mail auto-loads every tracking pixel through Apple proxies, registering an “open” whether the subscriber read the email or slept through it. With Apple Mail covering roughly half a typical DTC list, open rates are structurally inflated.
Clicks, site activity, purchases: that’s the signal. Sunset flows are worth running, but let’s be honest about their vintage; open-based sunset logic is the 2023 answer wearing the same inflated data.
The move is tiers, not a purge. Define the inactive audience, rank it by how dead it is, keep the tiers in your pocket, suppress the deepest one before the billing date.
Because the mirror-image trap is real: retention is the highest-ROI channel most DTC brands run, and shaving $150 a month off the software line is a terrible trade against $3,000 a month in repeat revenue. That’s the trade a CFO-eyed reading of the invoice can make without ever knowing it happened.
The wellness brand from the opener: 145,000 active profiles became 80,000 once the file was read against its buying cycle. 65,000 profiles off the bill, zero recent buyers among them, and the stadium finally sized to the crowd.
At today’s published rates, a 145,000-profile plan runs $1,900 a month and an 80,000-profile plan runs $1,140. That’s $760 a month, about $9,000 a year, in empty seats.
And the kicker? After all that careful work, the platform may not tell you whether it worked. If a suppression doesn’t take, the interface often doesn’t say so. A bounced-back suppression can sit unflagged for over 12 hours, and that’s for someone who already knows to go looking.
Overlap compounds it: with the 90-day rule in play and profiles crossing between lists and segments, seeing where a “suppressed” profile still counts as active is genuinely hard. A verification miss isn’t a do-over here; it’s a 90-day commitment at full price.
We got tired of trusting the feedback loop and built an internal tool at Needle Movement to confirm what actually processed, because a client’s cleanup shouldn’t bill on faith. The working discipline: suppress before the billing date, then confirm the tier moved on the invoice itself. The invoice is the only screen that never lies.
SMS credits don’t roll over. Unused credits die at cycle end, which makes pack sizing the entire game.
In October, right before holiday sending season, a long SMS performance and audience review for an apparel client turned up $6,000 in credit overspend: they were buying far more credits than they ever sent. A cushion is smart. A cushion at 300% of actual usage is a donation with a dashboard.
Encoding sets the burn rate. A standard text carries 160 characters per segment, but a single emoji or curly quote flips the message to Unicode and the limit drops to 70, so one text quietly bills as two or three credits. International sends skew harder: MMS runs 3+ credits and some destinations price higher per message.
The sizing rule runs opposite to instinct: budget credits to the flows and campaigns actually planned, start low, and let Klaviyo ask for more. It has never once been shy about asking.
This is incentives, not scandal, and it’s worth being precise about it. An agency is judged on attributed revenue and list growth; the software invoice isn’t on the scorecard, so shrinking it earns nobody a renewal.
In-house, marketing owns the Klaviyo account, finance owns the invoice, and the overlap belongs to whoever is least busy, which is no one. So the bill gets read carefully exactly once a year: the month it jumps.
In an account where profiles pour in from a half-dozen automatic sources and the plan upgrades itself at renewal, “nobody’s job” compounds monthly, on schedule, with receipts. The fix costs half an hour and four screens.
A Klaviyo bill doesn’t wait for a slow month to look at it. Most accounts find notable amounts they didn’t realize they were paying.
For operators who want the full version run on a real account: delivered as a detailed report and walkthrough. No call required.
We go through the account and the bill, find what's quietly costing you, and hand it all back in one report — the goal, always, is saving you hundreds of dollars a month.
The analysis comes from the same practice that has generated $35M in attributed email revenue for DTC brands. The bill was never the villain. The waste inside it is.
Run the Overspend Check