The bill you didn't know you were negotiating
Most owners think of their email platform as a fixed cost. It isn't. It's a variable cost with a dial on it, and almost nobody turns the dial.
Klaviyo's email billing is built around two numbers: how many active profiles sit in your account, and how many emails you send. An active profile is anyone who could be emailed — not anyone you actually email. If 9,000 people are sitting in your account and you only ever send to 4,000, you are paying for 9,000.
Those extra profiles arrive honestly. Someone checks out on your site and their address gets captured. Someone downloads a guide. Someone's address came over in a migration four years ago. None of them ever opened anything. They cost you money every month and they quietly drag down your open rate, which is the signal mailbox providers use to decide whether your next campaign lands in the inbox or in spam.
So this is a two-for-one: a lower bill and better deliverability from the same afternoon of work. The catch is that cutting the wrong people costs more than the savings. That's what the rest of this playbook is about.
Your monthly email send allowance is ten times your profile tier. A plan sized for 500 profiles includes 5,000 sends. So dead profiles don't just inflate the profile side of the bill — they inflate the tier that governs your send ceiling too.
The mistake that costs real money
Before you suppress anyone, you have to separate two groups that look identical in a dashboard and are completely different in your P&L.
One group is quiet but alive. They haven't opened in three months, but they bought last year, or they browsed your site in February. They're worth keeping and worth nurturing — you just shouldn't blast them with every campaign, because their silence hurts your sender reputation.
The other group is genuinely gone. Never opened. Never clicked. Never visited the site. Never bought. Not once, ever, across years in your account. These are the ones to cut.
Klaviyo treats these as two separate disciplines, and conflating them is the expensive error. Suppress the first group and you've deleted your own pipeline to save forty dollars a month.
| Quiet but alive | Genuinely gone | |
|---|---|---|
| What it looks like | No opens or clicks in ~90 days, but has bought, browsed, or engaged at some point | Zero opens, clicks, site visits, product views, checkouts, or orders — over all time |
| The goal | Protect deliverability | Reduce billable profiles |
| Timeframe you measure | Short — around 90 days | Long — 180 days in-account minimum, engagement measured over all time |
| What you do | Build an "unengaged" segment and exclude it from routine campaigns | Run through a sunset flow, then suppress |
| Do you suppress? | No. Suppressing here destroys winnable revenue | Yes — after they've had a final chance |
Everything below applies only to the right-hand column.
The six stages
Run these in order. Stages 1 through 3 are setup you do once. Stages 4 through 6 become a recurring monthly rhythm.
Audit
Open your billing or account usage area and write down your current billable profile count. Then look at how many people your last three campaigns actually went to.
The gap between those two numbers is what you're deciding about. If it's under a few hundred, this playbook is a deliverability exercise, not a cost exercise — still worth running, but set your expectations. If the gap is thousands, you likely have a full pricing tier sitting in dead weight.
One thing to check while you're in there: Klaviyo will move you up a tier automatically when your profile count crosses a threshold. It does not move you back down on its own. That asymmetry is why accounts drift upward for years without anyone noticing.
Separate
Build your "unengaged but alive" segment first — the people who've gone quiet in the last 90 days or so but have history with you. Name it clearly, something like Unengaged – Exclude from Campaigns.
You are not going to suppress this segment. You're going to exclude it from routine sends so your open rates reflect people who actually want to hear from you. Doing this first also guarantees you don't accidentally sweep them into the suppression list in Stage 5.
Define
Now build the sunset segment — the actual cut list. Klaviyo publishes a recommended definition for this, and it's the same logic the platform uses for its own suppression recommendations. Use it rather than inventing your own.
Go to Audience → Lists & Segments → Create New → Segment. Or skip the manual build: open the Segment Library and choose the prebuilt Sunset (Email) option, which ships with this definition already loaded.
Sunset segment definition
- Person can receive email marketing
- AND Email is set
- AND Created is at least 180 days ago
- AND has Received Email at least 5 times in the last 72 weeks
- AND has Opened Email 0 times over all time
- AND has Clicked Email 0 times over all time
- AND has Active on Site 0 times over all time
- AND has Viewed Product 0 times over all time
- AND has Checkout Started 0 times over all time
- AND has Placed Order 0 times over all time
Read that stack carefully, because every line is doing defensive work. The 180-day floor keeps new signups out. The "received at least 5" condition means you only cut people you actually gave a fair chance to — someone who never got emailed can't be blamed for never opening. And the six zero-activity conditions mean a single site visit or a single order at any point in history is enough to spare them.
This is a deliberately conservative definition. It will catch fewer people than a looser rule, and that's the point: the downside of cutting a live contact is much larger than the upside of saving one more seat.
Klaviyo publishes this definition in two places and the versions differ by one line — the Email is set condition appears in the profile-management guidance but not the sunset flow walkthrough. Include it. It costs nothing and it prevents profiles without a usable email address from cluttering the segment.
Name it something unambiguous — Sunset – Never Engaged works. You want anyone who opens this account in a year to know exactly what it does.
Sunset
Nobody gets cut without a last chance. The sunset flow is that chance, and it doubles as your safety net — anyone who responds gets pulled out automatically.
Build it
Go to Flows → Create Flow, search the library for "sunset," and select the prebuilt sunset unengaged subscribers flow. Set the trigger to the segment from Stage 3, create it, and rewrite the copy in your voice. Building from scratch works too — set the trigger to Segment, then add the two filters below by hand.
The two filters that matter
These are non-negotiable. Add flow filters for has not Opened Email since starting this flow and has not Clicked Email since starting this flow.
These are what make the whole system safe. Anyone who opens or clicks anything while they're in the flow exits before the tagging step and never gets marked for suppression. Without these filters you're not running a sunset flow — you're running a countdown to deleting people who just came back.
The structure
- One to three emails, maximum. Klaviyo caps the recommendation at three for a reason: repeatedly emailing people who never engage actively damages your sender reputation. Two is usually right.
- Then a time delay. Klaviyo's example uses three days, assuming you send daily. If you send weekly or less — which most service businesses do — stretch it to seven to ten days. A grace period shorter than your own sending rhythm isn't a grace period.
- Then an Update Profile Property action. Create a boolean property called
Unengagedand set it toTrue. Anyone who reaches this step gets tagged and exits.
What to actually write
Plain text outperforms design here. Use a real from-name, personalize with the first name, and be direct in the subject line about what's happening — "Is it time to say goodbye?" is a genuinely good subject line for this, because it's true.
Give them somewhere to go that isn't unsubscribe: a preference center, a link to browse, a reason to come back. And make the unsubscribe link prominent. That sounds backwards until you remember that anyone who unsubscribes gets suppressed automatically — which is the outcome you were engineering anyway, arrived at honestly.
A segment-triggered flow only fires for profiles that enter the segment after it exists. Your existing dormant contacts — the whole reason you're here — won't be picked up automatically. Set the flow's messages live, then use Add past profiles on the trigger card to pull them in.
Prune
Suppression cannot be done as a flow action. This is the part everyone expects to be automatic and isn't, and it's where most sunset setups quietly stall out at 90% complete.
Create one more segment: Properties about someone → Unengaged → is true. Then from the Lists & Segments page, open the action menu next to it and choose Suppress current members.
Two things to know about that button. It only affects profiles in the segment at the moment you click it — anyone tagged tomorrow needs another run. And only Owner, Admin, and Manager roles can do it, so if you've delegated your email to a contractor on a lower permission level, this step needs you.
Suppress, don't delete
Klaviyo will offer you both. Take suppression every time. Suppressed profiles stop counting toward your email billing, get skipped at send time, and keep their entire history — orders, events, revenue attribution. Deletion is permanent and buys you nothing extra on the email plan. If one of these people walks back in and buys next year, you'll want the record.
Klaviyo may show a modal summarizing how many profiles will be suppressed versus kept, based on recent verified engagement or purchases. With the strict segment from Stage 3 you generally won't see it — those profiles are already classified as long-term inactive. If you do see it on a segment you built yourself, treat it as a warning that your definition is looser than you thought.
Maintain
This is hygiene, not a project. New profiles keep entering the segment, so the flow keeps tagging and the tagged keep accumulating.
Put a recurring monthly reminder on your calendar to suppress the Unengaged = True segment. Fifteen minutes. Klaviyo's own guidance is to re-run it before campaign sends so inactive profiles are genuinely phased out of future sends rather than lingering.
Two timing details decide whether you actually see the savings:
- Allow up to 72 hours for your active profile count to fully refresh after a large suppression.
- Then go change your plan. Klaviyo does not downgrade you automatically — you have to select the lower tier yourself under Billing once your count drops below the threshold. Check your billing preferences for an auto-downgrade option, but don't assume it's on.
That last point is where the money is actually made. Suppressing ten thousand profiles and never changing your plan tier saves you exactly nothing. Run the suppression well before your renewal date, not the day after.
What nobody tells you
Four things that aren't in the standard walkthrough and will bite you.
Unsuppressing has a cost
Practitioners consistently report a 90-day lock: once you unsuppress a profile, you can't re-suppress them for three billing cycles. This isn't documented in Klaviyo's public help articles, so verify it against your own account before you build a strategy around it — but plan as if it's true. It matters most if you were thinking of resurrecting your whole dormant list for one Black Friday push. That decision would cost you three months of billing on every profile you woke up.
The Data Platform bills differently
If you're on Klaviyo's Data Platform product, its billing is based on total profiles — suppressed ones included. Suppression reduces your email plan. It does not reduce that one. Know which products you're paying for before you predict your savings.
Some suppression happens without you
Klaviyo automatically suppresses hard bounces immediately, and any address that soft-bounces more than seven times consecutively. So part of your list hygiene is already running. This is also why a sudden drop in billable profiles isn't always something you did.
Full automation requires a developer
You can close the loop entirely with a flow webhook that calls Klaviyo's suppression API, using a private key with write access to profiles. Klaviyo documents the approach. It is a real developer task, not a settings toggle. For most accounts, a monthly calendar reminder is the better trade — you get 95% of the benefit for none of the maintenance burden.
Where AI actually helps here
I'll be straight with you: this is a settings-and-judgment job, not an AI job. But there are two places where AI earns its seat, and one where it absolutely doesn't.
Drafting the sunset emails. These are hard to write because they have to be warm and final at the same time. Feed a model your brand voice, your last three campaigns, and the constraint — plain text, prominent unsubscribe, one honest question — and iterate. You'll get to a usable draft in a fraction of the time. Then rewrite the first line yourself, because that's the part that has to sound like a person.
Running the monthly suppression. Klaviyo exposes an MCP server, which means an AI assistant with the right credentials can query the tagged segment and report the count back to you as part of a monthly routine. This is genuinely useful for the audit half of the loop — knowing what's queued without logging in.
Where it doesn't help: deciding who to cut. That's a revenue-risk judgment about your specific customers and their specific buying cycles. A model doesn't know that your clients typically go quiet for eight months and then book a $12,000 package. You do. Set the segment definition yourself, conservatively, and let the automation execute the part that's mechanical.
The 45-minute version
- Record your current billable profile count and your typical send size
- Build the "unengaged but alive" segment and exclude it from routine campaigns — do not suppress it
- Create the sunset segment from the Segment Library, or build the ten conditions manually
- Create the sunset flow from the prebuilt library template, triggered by that segment
- Confirm both exit filters are in place: has not opened, has not clicked, since starting the flow
- Limit to one to three emails, then a grace delay matched to your sending frequency
- End the flow with Update Profile Property →
Unengaged = True - Set messages live, then use Add past profiles to pull in your existing dormant contacts
- Build the
Unengaged is truesegment and run Suppress current members - Wait up to 72 hours, then manually select your lower billing tier
- Set a monthly recurring reminder to re-run the suppression
The principle behind it
Strip away the platform specifics and this is a pattern worth carrying into every tool you pay for: almost every per-seat, per-contact, or per-record subscription bills you for capacity you stopped using, and almost none of them will tell you.
Your CRM, your scheduling software, your project tool, your phone system. The vendor has no incentive to point out that a third of your seats are dormant. Once a quarter, pick one, find the number you're actually billed on, and compare it to the number you actually use. This playbook is one instance of that habit. The habit is worth more than the playbook.
Sources
Every specific claim here traces to Klaviyo's own documentation, current as of August 2026. Product behavior and pricing structures change — verify against your own account before making billing decisions.
- Understanding active profile management in Klaviyo — active vs. suppressed profiles, the inactivity segment definition, bulk suppression tools, and the distinction between list cleaning and profile management
- How to create a sunset flow — segment definition, flow structure, exit filters, grace period guidance, profile tagging, and adding past profiles
- How Klaviyo billing works — billable profile definitions, the 72-hour refresh window, and manual tier downgrades
- Understanding suppressed email profiles — suppression reasons, why suppression beats deletion, and Data Platform billing differences
The 90-day re-suppression lock described above is widely reported by practitioners but is not stated in Klaviyo's public help documentation. It is flagged here as unverified rather than omitted, because it materially changes the cost of unsuppressing a list. Confirm it in your account before planning around it.