What is net margin?
Net margin is what a campaign or flow message actually earned: the contribution margin attributed to it, minus what sending it cost. It is the messaging equivalent of true ROAS's numerator — margin, not revenue — taken one step further by netting off the channel's own cost, which for SMS is material.
Formula
net margin = attributed contribution margin − send cost
Worked example
A campaign is credited €2,400 of attributed revenue; the matched orders carry €820 of contribution margin once product costs, shipping and fees come out. Sending it cost €180 in SMS segments. Net margin: €640. On revenue alone the campaign looked three times better than it is — the ordering of revenue-ranked and net-margin-ranked campaign tables rarely matches, and the second ranking is the one to trust.
How Saldo Metrics computes it
The margin side is matched, not taken from the platform: message engagements are
matched to customers by hashed email, and those customers' orders within the
attribution window are credited to the engaged message — last touch, each order
counted once. The real contribution margin of those orders becomes
margin_attributed_base. When too few of the platform's claimed conversions can
be matched to orders (below a 50% match rate), the row falls back to estimating
margin as the org's blended margin ratio times attributed revenue — and records
which happened: every row carries margin_method (order-join or
ratio-fallback) and its match_rate, so estimated margin is distinguishable
from measured margin. v_messaging_performance then subtracts the dual-stored
EUR send_cost_base, and also serves the per-send version
(net_margin_per_message).
Why it matters
Email and SMS attribution claims suffer the same inflation as ad-platform claims — generous windows, opens counted as influence. Anchoring margin in your actual order book, netting the send cost, and flagging estimated rows keeps the messaging channel comparable with paid channels on one honest basis; the messaging-vs-paid comparison is built on exactly this figure.
Common mistakes
- Ranking campaigns by attributed revenue. High-revenue campaigns selling discounted or low-margin baskets sink once margin and send cost are netted.
- Ignoring the provenance columns. A row with
ratio-fallbackmargin is an estimate; a run of low match rates usually means hashed-email matching is failing (guest checkouts, list hygiene), which is fixable. - Reading flow-step net margin as incremental. The matched orders might have arrived without the message; incrementality needs a holdout, which this metric does not claim to be.
Where you see this in the app
Marketing → Messaging, as the net-margin column of the campaign table and in the messaging-vs-paid channel comparison.
- Formula
- attributed contribution margin − send cost
- How Saldo Metrics computes it
- canonical.v_messaging_performance
Last reviewed 2026-08-29