← Back to blog
AnalyticsFounder · 3 min read

Your Flows Might Be Cannibalizing Revenue (And Fatigue Makes It Worse)

Unico CommerceUnico Commerce, Founder

Your Flows Might Be Cannibalizing Revenue (And Fatigue Makes It Worse)

Email and SMS flows report wonderful numbers. In practice, flows carry a large share of channel revenue from a small share of sends, and abandoned-cart flows routinely post multi-dollar revenue-per-recipient.

All of it is measured without a control group. Which means none of it answers the only question that matters: what would have happened without the flow?

The incrementality problem in owned channels

The pattern is familiar from discounting. A browse-abandon flow fires to a shopper who was already coming back. An abandoned-cart email reaches someone mid-return. The flow gets credit; the sale was already coming.

Nobody runs the test that would settle it: hold out a slice of triggered customers from the flow entirely — not A/B the subject line, withhold the whole flow — and compare revenue over a fixed window.

What survives a holdout is usually smaller than what's reported. The flows that create demand (low-intent browse, post-purchase cross-sell to new buyers) hold up. The flows that harvest high-intent moments (checkout abandon with an auto-applied code) often don't.

A worked example

Run a holdout on a browse-abandon flow. Over 30 days:

  • Treated: 10,000 triggered, $12,000 revenue → $1.20 per triggered customer.
  • Holdout (5%): 500 triggered, $400 revenue → $0.80 per triggered customer.
  • Incremental: $0.40 per triggered customer.

Now price the fatigue. Suppose the flow also causes one extra unsubscribe per 200 sends, and a subscriber's remaining lifetime contribution is ~$60. That's $0.30 of destroyed value per send.

Net incremental = $0.10 per triggered customer. Barely worth it — and that's the calculation most dashboards skip entirely.

The fatigue cost nobody books

Every extra send has two prices: the send cost, and the unsubscribe risk. Across a big list, that risk compounds into real money. A flow that "earns" $3 per recipient but burns 1–2% of the list a month is borrowing from the future.

A published frequency experiment found that cutting promotional email frequency sharply reduced unsubscribes at a small short-term revenue cost — directionally, the unsubscribe risk is real and underpriced. The gap between average and best-decile campaigns is mostly list quality and frequency discipline, not copy.

How to actually measure a flow

  1. Persistent holdout per flow. Randomly suppress 5–10% of triggered customers from that flow only, for the test window.
  2. Fixed-window revenue per triggered customer. Compare treated vs. holdout over 14–30 days — not opens or clicks.
  3. Subtract fatigue. Track incremental unsubscribes in treated vs. holdout, and price them at future revenue destroyed.
  4. Mind contamination. A welcome-flow holdout who still gets abandon emails understates the welcome flow. Log all sends; use mutual exclusion where it matters.
  5. Use long windows. A 24-hour window flatters pull-forward flows. Fourteen to thirty days shows what stuck.

The metric: net incremental revenue per send, after the unsubscribe cost. Scale flows where it's positive at the margin — including the last message in the sequence, where most of the fatigue lives.

What "good" actually looks like

  • Flows that create demand on low intent: keep and scale.
  • Flows that harvest high intent with a code: the first to holdout-test, and usually to restrain.
  • Long sequences: test the tail separately. The 4th and 5th messages are where marginal incrementality collapses and fatigue dominates.

The takeaway

Your flows report what they touched. They don't report what they caused — or what they cost your list.

Hold out a slice. Price the unsubscribe. And treat the last message in every flow as guilty until proven incremental.