Proof that the channel earns its own budget line
Every campaign we run carries a permanent holdout, so the figures below are what the programme added rather than everything that happened to follow a send. Here are the numbers, the operator stories behind them, and the method we use to arrive at them.
2.1B
Messages delivered a year
Across every live client programme, rolling twelve months.
98.4%
Average delivery rate
Confirmed by carrier delivery receipt, never by send attempt.
190
Markets with direct binds
Europe, LATAM, Canada and Asia-Pacific, no grey routes in the mix.
340ms
Median handset latency
API accept to handset, median across tier-one binds.
Three programmes, rebuilt and measured
Each of these operators was already sending. What changed was the audience, the route or the measurement, and in every case the control group stayed in place so the difference could be read honestly.
Casino - Nordics
+31%
Reactivation lift
- Opt-out rate
- 0.5%
- Revenue per message
- 1.84 EUR
31% more reactivated players
A tier-two operator was mailing its lapsed list monthly and getting almost nothing back. We rebuilt the audience on session recency rather than registration date and moved the send to a lapse trigger. Opt-outs held at 0.5%.
How segments and lapse triggers workSportsbook - LATAM
4.6x
Return on spend
- Median latency
- 290ms
- Delivery rate
- 98.9%
4.6x return on send spend
Match-day traffic was arriving after kickoff on aggregator routes. Direct binds in Brazil and Mexico cut median latency to 290ms and let the pre-match window actually function. Volume tripled without a delivery drop.
How direct carrier binds workCasino - Canada
18.4%
Deposits influenced
- Holdout lift
- +12.7%
- Attribution window
- 7 days
18.4% of deposits touched by SMS
The operator could not tell which deposits SMS had earned, so the channel kept losing budget. Holdout groups and a seven-day attribution window settled it, and the programme took a permanent line in the plan.
How deposit attribution worksHow we measure any of this
Three definitions do most of the work. Agree them before a campaign runs and the reporting stops being a debate about whose dashboard is right.
01
Holdout groups
A slice of every eligible audience is held back and receives nothing at all. It is redrawn at random on each send rather than fixed once, so the control never quietly settles into being your least valuable players. The gap between the exposed group and the held-back group is the only number we are willing to call a result. Anything that merely happened to occur after a send is not a result, it is a coincidence with good timing.
02
Attribution windows
A deposit counts against a message only if it lands inside the window agreed for that campaign, and windows run from one hour to thirty days. Reactivation programmes usually sit at seven days. Match-day sends sit at one hour, because a deposit made three days after kickoff had nothing to do with a pre-match reminder. The window is fixed before the campaign runs and it is not widened afterwards to make a chart look better.
03
Revenue per delivered message
Incremental net revenue inside the window, divided by the messages a carrier confirmed as delivered. Not messages sent, and not messages our API accepted. Undelivered traffic is not billed to you and it is not counted in the denominator either, so the figure sits on the same footing as your send cost and the two can be compared directly.
What lands in your report
- Incremental deposits and incremental net revenue, exposed against holdout
- Revenue per delivered message, broken out by segment and by market
- Delivery rate and median handset latency for every carrier bind in your mix
- Opt-out rate per campaign, alongside the cadence caps in force at the time
- The raw event export, so your own analysts can rebuild every figure themselves
The same definitions govern the guardrails, so a suppressed player never enters an audience and never distorts a control group.
A worked example
This is the Nordic casino reactivation programme above, taken apart. A seven-day attribution window, one monthly send, and a holdout redrawn every time. The 31% reactivation lift is simply the gap between the two deposit rates, and the revenue figure follows from it without any further arithmetic.
Read the last line as the one that matters. It is the figure you set against your cost per delivered message, and that comparison either works or it does not.
- Delivered to the exposed group
- 380,000
- Held back as a holdout
- 20,000
- Deposit rate, exposed group
- 4.2%
- Deposit rate, holdout group
- 3.2%
- Incremental deposits
- 3,800
- Net revenue per incremental deposit
- 184 EUR
- Incremental net revenue
- 699,200 EUR
- Revenue per delivered message
- 1.84 EUR
Operators on what actually changed
Three of the people who had to defend the channel internally, on the part of it that made the argument for them.
01Geoff MoeransHead of CRM, tier-two casino groupWe had spent two years being told SMS could not be measured properly. Six weeks after the holdouts went in we had a number the board could not argue with, and the channel got its own budget line.
02Carolina ReisRetention Director, LATAM sportsbookMatch-day messaging was useless to us because it arrived after kickoff. The direct binds fixed the latency, and the pre-match window became the best converting slot we have.
03Anders FalkCompliance Lead, Nordic operatorThe part I did not expect to value was the guardrails. Knowing a campaign physically cannot go to a market we are not licensed in takes a genuine risk off my desk.
Want the same reporting on your own list? Start with the platform overview or go straight to pricing.
Ask us for the number, not the dashboard
Send SMSPro your markets and your list size and we will model the incremental revenue, the holdout you would need, and what the programme should return per delivered message.