Klaviyo gets expensive because it bills on active profiles, and profiles grow 3 to 5 times faster than paying customers. Klaviyo's own estimator puts the email plan at $45 for 1,500 profiles, $150 at 10,000, $400 at 25,000, $500 at 30,000 and $1,380 at 100,000, before SMS. Suppressing dead profiles cuts 20 to 40% off. Past that, most stores move broadcasts to Sendy or MailWizz on Amazon SES or a dedicated server and keep Klaviyo only for flows on engaged buyers, which brings 100K-profile email cost from about $1,200 a month down to $250 to $400.
I've done this migration for a fair number of Shopify and WooCommerce stores. This article is about the bill trajectory and the split-stack move. For the straight provider swap, see cheaper than Klaviyo and Klaviyo alternatives.
Why the Klaviyo bill climbs faster than revenue
Klaviyo charges by active profile. Not by order, not by emails sent. That one design choice explains almost every "why did my bill jump" ticket I've seen.
An ecommerce store collects profiles from everywhere: the exit pop-up, the spin-to-win, the checkout email field, the giveaway, the Facebook lead form. Most of those people never buy. A store doing 1,000 orders a month from 700 unique buyers typically adds 3,000 to 5,000 new profiles in the same month. The buyer count grows slowly. The billable list grows fast.
Klaviyo's tiers make it worse because they step, not slide. Cross 30,000 profiles by one address and you pay the 35,000 tier. Cross 100,000 and you are in four-figure territory. Prices shift over time, so check the Klaviyo pricing calculator for your exact count, but the shape in 2026 looks like this.
| Active profiles | Klaviyo email plan / month | Cost per profile | Typical monthly orders at that size |
|---|---|---|---|
| 1,500 | ~$45 | 3.0 cents | 100-200 |
| 10,000 | ~$150 | 1.5 cents | 500-800 |
| 25,000 | $400 | 1.6 cents | 900-1,800 |
| 30,000 | $500 | 1.7 cents | 1,000-2,000 |
| 50,000 | ~$720 | 1.4 cents | 1,500-3,000 |
| 70,000 | $1,000 | 1.4 cents | 2,000-4,000 |
| 100,000 | $1,380 | 1.4 cents | 3,000-6,000 |
| 150,000 | $1,955 | 1.3 cents | 5,000+ |
| Over 150,000 | quote only | n/a | 8,000+ |
Two more lines stack on top. SMS is billed per message segment, and a store sending two SMS a month to 20,000 phone numbers adds $300 to $500. Klaviyo bills on profiles it can actually market to. Its help docs are explicit that suppressed profiles are not counted, and that unsubscribed contacts are unreachable and do not count either. The group that quietly costs you money is narrower than most people assume: profiles that are still subscribed and mailable but have not engaged in months. Those are billable, and suppressing them is what moves you down a tier.
The result: revenue up 20% year on year, Klaviyo bill up 60%. That is the trajectory that gets people typing "klaviyo too expensive" into Google.
Step one, the suppress-and-archive cleanup
Before you touch a competitor's pricing page, suppress the dead weight. This is the one move that cuts the bill with zero migration.
Build a segment of profiles matching all of these:
- No open, click or site visit in 180 days.
- No order in 365 days.
- Not created in the last 30 days.
Then suppress it. Not delete, suppress, so the unsubscribe and bounce history survives and you can export it later. Both routes cost the same, because Klaviyo bills for neither, so choose suppression for the retained reporting rather than for the invoice. Add every hard bounce to the same job.
| List state | Profiles before | Profiles after | Klaviyo tier |
|---|---|---|---|
| Typical 100K store, never cleaned | 100,000 | 62,000-78,000 | drops 1-2 tiers |
| 50K store with a giveaway history | 50,000 | 30,000-38,000 | drops 1-2 tiers |
| 30K store, engaged, cleaned yearly | 30,000 | 25,000-27,000 | often no change |
On most lists I've cleaned this removes 20 to 40% of active profiles. At 100K that is $300 to $500 a month gone, permanently, and your open rate goes up because the denominator shrank. Gmail's bulk sender guidelines want spam complaints under 0.3%, and the profiles you just suppressed are the ones most likely to hit that button. Full method in email list cleaning and email sunset policy.
If the cleanup gets you under 30K profiles and the bill under $400, you may be done. Read no further.
Step two, the split stack most stores land on
Above roughly 50K profiles the cleanup buys a tier or two but the trajectory is unchanged. The list keeps growing. That is when stores split the stack.
The logic: Klaviyo does two jobs. Flows (abandoned cart, welcome, post-purchase, win-back) are where its Shopify sync and predictive data earn the money. Broadcasts (the Tuesday newsletter, the weekend sale) are a commodity send to a big list. You are paying Klaviyo's per-profile rate for the commodity job.
So:
| Job | Where it runs | List size it sees | Why |
|---|---|---|---|
| Flows | Klaviyo (or Omnisend) | 10-20K engaged buyers | needs live Shopify events and revenue attribution |
| Broadcasts | Sendy, MailWizz or Mautic | full list, 60-100K | list size doesn't affect cost |
| Sending layer for broadcasts | Amazon SES or dedicated SMTP | 600K-800K emails/month | $0.10 per 1,000 or a flat fee |
Klaviyo only bills the profiles you keep in Klaviyo. Drop the account to a 15K-profile plan holding recent buyers and cart abandoners, and the Klaviyo line falls from $1,200 to around $200. The other 85K profiles live in Sendy or MailWizz where they cost nothing per head.
Sendy is the simplest: a $69 one-time PHP app that sits on SES or any SMTP. MailWizz is a $79 one-time app with proper multi-list segmentation and a bounce server. Mautic is free and heavier, better if you want lead scoring. I cover the trade-offs in Sendy alternatives and the setup in MailWizz SMTP server setup and Mautic SMTP configuration.
What 100K profiles and 8 campaigns a month actually costs
The scenario: 100,000 profiles, 8 broadcasts a month to the full list, so 800,000 broadcast emails, plus flows to the engaged 15K. Approximate 2026 figures, check current pricing.
| Stack | Flows tool | Broadcast tool | Sending | Monthly total |
|---|---|---|---|---|
| Klaviyo, all in one | included | included | included | ~$1,200 |
| Omnisend, all in one | included | included | included | ~$720 |
| Brevo, all in one | included | included | shared IPs, ~$650 for 800K + dedicated IP | ~$700 |
| Klaviyo 15K + Sendy on SES | ~$200 | $69 once, ~$10 server | ~$80 | ~$290 |
| Klaviyo 15K + MailWizz on dedicated server | ~$200 | $79 once, on same server | $0 ongoing after build | ~$200 |
| Omnisend 15K + MailWizz on dedicated server | ~$120 | $79 once | $0 ongoing | ~$120 |
The SES line is the cheapest in month one because there is no build cost. The dedicated server line is the cheapest from month three onward and stays flat when the list hits 250K. Brevo and Omnisend are honest middle options if you refuse to run any software, though both still price on volume or contacts, so the trajectory problem comes back later. See Omnisend vs dedicated SMTP server and cost to send 1 million emails per month for the sending-layer maths at bigger numbers.
Twelve-month total and the break-even month
The one-time costs matter, so here is a full year at the same 100K scenario. The dedicated line uses our Basic build at $549 one-time plus roughly $40 a month for the VPS the campaign app and MTA run on.
| Stack | Setup, one-time | Monthly | 12-month total | Saving vs Klaviyo |
|---|---|---|---|---|
| Klaviyo, all in one | $0 | $1,200 | $14,400 | baseline |
| Omnisend, all in one | $0 | $720 | $8,640 | $5,760 |
| Klaviyo 15K + Sendy on SES | $69 | $290 | $3,549 | $10,851 |
| Klaviyo 15K + MailWizz on dedicated | $549 + $79 | $240 | $3,508 | $10,892 |
| Omnisend 15K + MailWizz on dedicated | $549 + $79 | $160 | $2,548 | $11,852 |
Break-even on the dedicated build: month one. The $628 of setup is less than a single month of Klaviyo saving. Add a weekend of your time to rebuild flows and import the list, call it 16 hours, and it is still month one or two at any reasonable hourly rate.
The number I'd focus on is not the 12-month saving. It is what happens at 250K profiles. Klaviyo goes to $2,500 or more. The split stack goes to about $250, because Klaviyo still only holds the engaged 20K and the broadcast layer doesn't care.
What you lose leaving Klaviyo broadcasts, and how to keep it
Blunt list. These are real, and the split-stack design exists to keep most of them.
| Klaviyo feature | Lost if you move everything | Kept in a split stack? | Workaround if not |
|---|---|---|---|
| Shopify order and cart events | yes | yes, flows stay in Klaviyo | Omnisend syncs the same events |
| Predictive analytics (CLV, next order date) | yes | yes, on the profiles still in Klaviyo | none in Sendy or MailWizz |
| Drag-and-drop editor with product blocks | yes | for flows only | design broadcasts in Klaviyo, export HTML |
| Revenue per campaign attribution | yes | for flows only | UTM tags plus Shopify or GA4 reports |
| Unified suppression list | yes | needs syncing | weekly CSV export of unsubscribes both ways |
| One login | yes | no | accept it |
The suppression sync is the one people skip and regret. Someone unsubscribes from a Sendy broadcast on Monday and gets a Klaviyo win-back flow on Wednesday. That is a complaint and, under CAN-SPAM, a 10-business-day clock you just missed. Automate it: MailWizz and Mautic both expose an API, Sendy has a webhook, and a 20-line script that pushes unsubscribes to Klaviyo's suppression endpoint each night closes the gap.
The abandoned-cart flow specifically is worth reading up on before you move anything, since it is usually the highest-revenue automation in the account. See SMTP for ecommerce abandoned cart.
The sending layer, SES or a dedicated server
Once broadcasts are in Sendy or MailWizz, they need a pipe.
Amazon SES is $0.10 per 1,000 emails, so 800K broadcast emails is $80. Cheapest possible send. What you own: warm-up, bounce processing, complaint monitoring, and the fact that SES pauses your account if complaints pass 0.5% or bounces pass 10%. A promo blast to a list that was never cleaned can trip that in one send. Read Amazon SES vs dedicated SMTP server before choosing it.
A dedicated SMTP server has no per-email fee. Your own IPs, your own reputation, and nobody else's Black Friday complaints landing on your pool. What you own: a 4 to 8 week warm-up before full volume, and the same monitoring. At 800K a month the flat fee wins on cost by month three and wins on control from day one. The detailed comparison is in Klaviyo vs dedicated SMTP server.
Either way, send broadcasts from a subdomain like news.yourstore.com so a bad campaign never touches order-confirmation reputation. See subdomain vs root domain for email sending.
Who should stay on Klaviyo
Three groups. I'd tell each of them not to migrate.
- Under 10K profiles. The bill is $150 or less. A split stack saves maybe $80 a month and costs a weekend plus ongoing attention. Clean the list and stay.
- SMS-heavy stores. If SMS is 30% or more of your Klaviyo revenue, the cross-channel attribution and shared suppression are doing real work. Splitting email out breaks the reporting that tells you whether SMS is paying.
- Nobody to own the sending layer. A dedicated server or SES with no one watching complaint rates weekly degrades quietly. If that person doesn't exist, the Klaviyo premium is buying you their job.
The stores that should move: 50K profiles or more, email-heavy, a stable flow set, and a Klaviyo email line item north of $700 a month. That group saves $8,000 to $12,000 a year and stops worrying about the next tier.
Migration order that doesn't break anything
- Run the suppression cleanup in Klaviyo first. Export the suppressed list and the full unsubscribe list.
- Stand up Sendy or MailWizz on a VPS. Point it at SES or the dedicated server. Authenticate the sending subdomain: SPF, DKIM, DMARC at
p=nonefor two weeks. - Import the broadcast list, tag buyers versus non-buyers, and load every unsubscribe and bounce as suppressed before the first send.
- Warm up. First broadcast to the 5K most engaged, then ramp roughly 30% every two days.
- Keep sending Klaviyo broadcasts to the rest during the ramp, then downgrade Klaviyo to the engaged-only plan once the new stack carries the full list.
- Set up the nightly unsubscribe sync both ways before you downgrade. Not after.
Four to six weeks end to end. The Klaviyo downgrade at step five is when the bill actually drops, so do not rush it and burn the new IPs.
How BulkEmailSetup helps
We build the sending layer for the split stack: your own server, your own IPs, full SPF/DKIM/DMARC/PTR configuration, MTA tuning, bounce handling and a warm-up plan. MailWizz, Sendy or Mautic drops straight onto it, and the cost stops moving when your profile count does.
Basic starts at $549 one-time, covering 1 SMTP server, 3 dedicated IPs, 25,000 emails/day and unlimited contacts. Higher tiers scale to 15 IPs and 200,000 emails/day. See pricing, or read Klaviyo vs a dedicated SMTP server for the feature-level comparison.
Frequently asked questions
Why is my Klaviyo bill going up when sales are flat?
Klaviyo charges by active profile, not by revenue or by emails sent. A store adds roughly 3 to 5 new profiles for every new buyer through pop-ups, giveaways and checkout captures, so the billable list grows several times faster than the paying customer base. The tiers also step up sharply, from around $150 at 10,000 profiles to $1,000 or more at 100,000.
How much does Klaviyo cost at 100,000 profiles?
Roughly $1,000 to $1,400 a month for email alone at 100K active profiles, based on Klaviyo's published calculator. SMS is billed separately per message on top. At 250K profiles the email line alone is typically $2,500 a month or more, so the bill roughly doubles each time the list does.
Can I cut my Klaviyo bill without leaving?
Yes. Suppress every profile that is still subscribed and mailable but has no open, click or order in 180 days, plus every hard bounce. Unsubscribed profiles are already outside the billable count, so they are not the win here. On a typical ecommerce list the disengaged-but-subscribed group is 20 to 40% of active profiles, which usually drops you one or two tiers. Do this before comparing providers, because it makes every other number honest.
What is the split-stack setup for Klaviyo?
Keep Klaviyo, or a cheaper tool like Omnisend, only for automated flows on engaged buyers, typically 10 to 20% of the list. Move the weekly broadcasts to a self-hosted sender such as Sendy, MailWizz or Mautic, running on Amazon SES or a dedicated SMTP server. At 100K profiles this takes total email cost from around $1,200 a month to $250 to $400.
What do I lose by moving broadcasts off Klaviyo?
The Shopify data sync on the broadcast side, predictive analytics like expected next order date, and the drag-and-drop editor with product blocks. Flows keep all of that if they stay in Klaviyo on the small engaged segment. Broadcast tools like Sendy and MailWizz can pull a product feed and segment on a purchase tag, which covers most weekly campaign needs.
Who should stay on Klaviyo?
Stores under about 10,000 profiles, where the bill is $150 a month or less and a migration costs more in time than it saves. SMS-heavy brands, since Klaviyo's SMS and email attribution work together and splitting them breaks reporting. And any store where nobody can own list hygiene and warm-up on a separate sending layer.
When does a split stack break even?
At 100K profiles, a split stack with a dedicated SMTP server saves roughly $800 to $1,000 a month against Klaviyo alone. A one-time server build of $549 plus a weekend of migration work pays back in the first or second month. Amazon SES has no setup fee so it breaks even immediately, but you own deliverability from day one.



