Flow revenue vs campaign revenue: which one to fix first
One half is a machine that runs while nobody watches it. The other is a decision somebody makes every week. They fail differently.
Every Klaviyo account splits its revenue two ways, and almost everybody reads the total instead. The split is the more useful number. It tells you whether the next month of work belongs in building something, or in sending something.

What the two halves are actually measuring
A flow fires because somebody did something. A campaign goes out because somebody picked a Tuesday. Klaviyo reports the two separately, and the ratio between them is the fastest read on an account you'll get.
Flow revenue is the return on things you built. Campaign revenue is the return on things you sent. They break differently, they recover differently, and adding them together hides both.
Where the split lives, and the tab nobody opens
Analytics, then the growth overview, then the message type breakdown. It puts campaigns and flows side by side for a period, and against the same period last year. In a business with a season, that's the only comparison worth making.
Read the chart before you read the totals. A month where the flow band grows while the campaign band holds steady is an account building an asset. A month where the campaign band carries everything is an account heading for a quiet January.
Flows first, in almost every account we take over
Flows are the half that keeps working while nobody's looking. A welcome sequence built in March is still earning in November, and it earns more as traffic grows. Not true of a newsletter you never got round to sending.
So the default order is flows, then campaigns. The reason is compounding, not performance. A campaign is worth what it earned that week; a flow is worth what it'll earn every week you leave it switched on.
One honest exception. A shop with a big list and modest traffic has more people to talk to than to trigger on, so the calendar is the only lever that moves this quarter. Build the flows anyway. Just don't expect them to carry the month.
- The trigger fires on the right event, and fires once
- The timing suits the product, not the template default
- There is a split for people who have bought before
- Smart sending isn't quietly holding half the audience out
- Somebody has actually read the emails this year
The number that stops campaigns flattering themselves
Totals aren't a fair fight. A campaign goes to the whole engaged list; a flow goes to the few hundred people who did the thing that week. So campaigns win on total and lose on almost anything measured per person.

Revenue per recipient is the column that makes the two comparable, and the gap it exposes is usually the argument for building the flow stack out. It's also the number a campaign calendar can't fix. Sending more doesn't make each send worth more.
The trap runs the other way too. A flow that reaches almost nobody can post a per recipient number that looks miraculous and still earn less in a year than one decent campaign, so read the volume next to it. Both halves flatter themselves. They just use different mirrors.
Two things the split can't tell you, and one it fudges
Both halves get counted inside the same attribution window, so they're consistent with each other even when they're generous with themselves. That makes the ratio trustworthy and the totals worth a raised eyebrow.
| The question | Does the split answer it | What you need instead |
|---|---|---|
| Which half earns more | Yes | Nothing, this is the job it exists for |
| Which half to build next | Mostly | Traffic and list size, because flows need people arriving |
| Whether the revenue is incremental | No | A holdout group, or at least an honest conversation |
| Who earned the credit for one order | No | The window, and whatever the buyer last opened |
One thing to check before you trust the ratio at all. If the account sends text messages too, set the channel filter to email. Otherwise the split you're reading is a different question wearing the same shape.
The last row is the one that matters when a budget moves on it. Somebody opened a campaign on Monday and bought out of a flow on Thursday? One of the two took the credit, and the other may well have done the work.
What to do on the Monday after you look
- Pull the split for the last quarter and for the same quarter a year ago
- If flows are the smaller half and traffic is healthy, build flows before you send anything else
- If flows are the bigger half and campaigns have flatlined, the list is tired, not the flows being clever
- Check revenue per recipient before you conclude either of those
- Then leave it for a quarter, because one month of this is noise
The account that reads well is the one where both halves grow and the flow half grows faster. The flow library is what we build to make that happen, and the Shadow Foam write-up is what it looked like when the campaigns kept up.

Theo Tziapouras
Founder and strategy at Engage Commerce, the ecommerce agency for 7 and 8 figure DTC brands.
FAQs

Should flows be a fixed share of email revenue?
No, and the rules of thumb doing the rounds are invented. The share depends on how much traffic reaches the site, how big the list is and how often you send to it. A shop with heavy traffic and a small list will always look flow heavy, and that isn't a fault to correct.
Why did flow revenue drop when I changed nothing?
Usually traffic, sometimes suppression. Flows fire on behaviour, so fewer visitors means fewer triggers even though the flow is untouched. Check how many people entered the flow before you start rewriting the emails, and check whether a new filter or smart sending is holding people out.
Do campaigns cannibalise flow revenue?
They overlap. Somebody who gets a campaign on Tuesday and buys through a cart reminder on Wednesday can be credited either way, depending on what they last engaged with inside the attribution window. Over a quarter it evens out enough to be useful, which is why we read the split quarterly and not weekly.
Can I compare my split with another brand's?
Not usefully. Two accounts count revenue over different attribution windows, sell at different prices and get their traffic from different places, so the ratio between their halves isn't a like for like comparison. Your own split last quarter is the only benchmark with your traffic in it.
Which half should a new store build first?
A welcome sequence and a checkout reminder, then campaigns, because those two flows earn from traffic the shop already has. Anything beyond that needs enough people arriving to be worth the build, and a new store usually has more to gain from list growth than from a fifth flow.
The split is a decision, not a scorecard
Nobody should be proud of a ratio. You look at it because it tells you where the next fortnight of work belongs, and it's one of the few numbers in email that doesn't need three caveats before it's useful. Read it quarterly, act on it once, then go and build the thing it pointed at.
Measurement and attribution
Which numbers are worth watching, and which ones flatter everybody who reports them.

Ecommerce email marketing benchmarks UK brands quote, and what to use instead
Published averages describe accounts you can't see. The comparison that works is your own last period, same segments, same season.
Read it
Why is my open rate so high? Because Apple opened it for you
Apple's been opening your email for you since 2021. Here's what the biggest number on your report measures now, and what to trust instead.
Read it
A high product page exit rate usually marks a missing capture point, not a broken page
The exits worth studying are the warm ones. Deep scroll, long dwell, the same thing opened again and again before they leave.
Read itWould you rather this was just handled?
Bring your Klaviyo account and the thing annoying you most. We will tell you what we would fix first, on the call, before you spend anything.


Book a call with our founder.
We're all about relationships built on trust, mutual respect and a shared vision for success. If that sounds like your vibe, let's make some waves together 🌊



