EM-114 · SMS gap · follow-up to the capture scope

The SMS Recovery List

The people who never confirmed their opt-in are not gone. They are sitting in Klaviyo right now, on 39,918 profiles that hold a phone number with no consent attached. They are not on any list, which is why nobody could find them. They are a recoverable audience, and 19,970 of them can still be reached by email today.

Removing double opt-in was worth more than I estimated. On typed numbers alone it moved completion from 41.2% to 82.7%. Popup SMS opt-ins went from 19 a day to 222 a day, an increase of 1068%.

Klaviyo API, pulled 20 Aug 2026. Roster = segment URnxWd, 39,918 profiles read in full. Before/after = step-level form events, 1–17 Aug against 19–20 Aug. Currency USD.

39,918
Phones held with no consent
19,970
Reachable by email today
20,852
Have bought from us before
82.7%
Completion now · was 41.2%
+1068%
Popup SMS opt-ins per day
01

Where the non-confirmers went

Short answer: nowhere. They are still in Klaviyo. They were invisible because a double opt-in list does not hold people while they hesitate.

The answer

I checked VdWm2S directly. It holds 30,789 profiles and every member is either SUBSCRIBED or UNSUBSCRIBED. I sampled 300 of them and found two in any other state. A Klaviyo double opt-in list has no pending bucket. Someone who typed a number and never confirmed left no trace on the list at all, which is exactly why this never showed up in any list count or report.

What actually happens is that the number gets written to the profile. The attribute phone_number is populated, and subscriptions.sms.marketing.consent stays NEVER_SUBSCRIBED with method: null. The person is fully present in Klaviyo, with a phone number we can read, and no consent record against it.

So yes: this is a recoverable list, not a loss. Counting the whole account that way reconciles exactly.

Profiles holding a phone numberSMS marketing consentCountReachable how?
Confirmed subscribersSUBSCRIBED86,202SMS and email
Opted in, then leftUNSUBSCRIBED36,404Neither · do not contact
Gave us a number, never completedNEVER_SUBSCRIBED39,918Email only · recoverable
Total phone numbers on file162,119

That is 24.6% of every phone number in the account sitting behind a consent gap. It is also still growing: it was 39,513 on 14 August and is 39,918 today, so it added 405 in six days. The popup is no longer the source of that growth, which section 06 covers.

How to query it, so this is never invisible again

Two live auto-refreshing Klaviyo segments now exist. Neither needs rebuilding; both recount themselves.

SegmentDefinitionProfilesUse
URnxWdSMS Recovery · phone on file, never SMS-opted-in (ALL) Has a phone number and SMS consent is never_subscribed 39,918The true size of the pool
RCm4nZSMS Recovery · … email-reachable The above and email consent is subscribed 19,970The one to actually send to.

For an individual number the recoverable record is the event, not the profile: submitted_form_step where step_name = "SMS Opt-In" carries the typed digits in submitted_fields.$phone_number. That is the only place a desktop abandoner's number survives in a form we can read back.

02

What removing double opt-in was worth

It shipped on 18 August alongside the tap-to-text deletion. Two changes at once, so I have separated what each one did rather than claim the whole lift for either.

Completion of typed numbers
41.2% → 82.7%
Attributable to single opt-in. Only people who typed a number are in this ratio, and the confirmation step is the only thing that changed for them.
Step actors who type a number
24.8% → 96.2%
Attributable to deleting tap-to-text. Mobile users now type into the field instead of being handed to their SMS app, which captured nothing.
Popup SMS opt-ins per day
19 → 222
The combined result, an increase of 1068%. All SMS opt-ins from every source went from 36 to 247 a day, up 586%.

Pricing the double opt-in removal on its own. At the volume of numbers now being typed (268 a day), the confirmation step used to consume 41.5 percentage points of them:

268 numbers typed/day x 41.5% lost to confirmation = 111 subscribers/day 111 x 30 days = 3,330 subscribers/month 3,330 x $7.61 measured value per SMS subscriber = $25,341 / month

measured That lands at the top of the $12,141 to $25,623 range the original report modelled for the whole SMS gap, from the double opt-in change by itself. The tap-to-text deletion sits on top of it.

Two honest limits on these numbers. First, the after-period is two days, one of which is still running. The ratios inside the step (completion, typed share) are stable because they are internal to a fixed population, but the per-day counts will move. Second, nothing here measures the cost of single opt-in yet. Typos and wrong numbers now enter the list unchallenged, and that only shows up when we send to the post-18-August cohort. I looked at the failure rate and it is currently confounded by campaign volume, so I am not reporting it as a result. Section 06 covers what to watch.

03

The list, in detail

All 39,918 profiles in URnxWd, read individually from the Klaviyo API rather than sampled.

Names, emails and phone numbers on this page are masked. Vercel Authentication is not available on our plan for production deployments, so this page is public to anyone holding the URL. The unmasked roster stays in the repo at reports/sms-recovery-list.html and is never deployed. Aggregates, order counts and revenue are unmodified, so nothing in the analysis is affected.

Can we reach them at all?
Email stateProfilesShare
Email subscribed (reachable)19,97050.0%
NEVER_SUBSCRIBED12,14730.4%
Suppressed: UNSUBSCRIBE7,07617.7%
Suppressed: SPAM_COMPLAINT4141.0%
Suppressed: HARD_BOUNCE2600.7%
Suppressed: USER_SUPPRESSED450.1%
Suppressed: INVALID_EMAIL60.0%

Only the first row is contactable. Everything below it holds a phone number we cannot text and an email we cannot send to, which makes those profiles genuinely dead rather than dormant.

Have they ever bought?
GroupProfilesShareHistoric revenue
Existing customers20,85252.2%$3,033,596
Never ordered19,06647.8%$0
Customers AND email-reachable14,70736.8%$2,333,310
Total39,918100%$3,033,596

The bolded row is the audience I would actually work. These are paying customers who tried to give us a phone number and whom we can still email.

When their number was captured

Last fourteen months. Anything from June 2026 onward was captured by the current Klaviyo popup; earlier months are Postscript-era and Shopify checkout.

2025-07
470
2025-08
852
2025-09
1,979
2025-10
1,876
2025-11
2,489
2025-12
2,190
2026-01
2,882
2026-02
2,774
2026-03
2,023
2026-04
939
2026-05
1,089
2026-06
1,090
2026-07
3,288
2026-08
1,791
Where they are
(unknown)
11,549
California
3,004
Texas
2,119
Florida
1,929
New York
1,181
Pennsylvania
946
Illinois
866
Ohio
832
Arizona
790
Washington
771
North Carolina
734
Michigan
732

Top country: United States with 25,801 profiles (64.6%).

04

Who is worth recovering

The forty highest-value profiles that are both existing customers and email-reachable. This is the shape of the audience, not a send list; the send list is the segment.

ProfilePhone on fileRegionOrdersHistoric revenueCapturedLast seen
B2B: f.o***************@flip.shop+1424*****45California272$10,1362023-11-232026-06-26
Joseph B.t********@gmail.com+1907*****49Alaska26$7,2122022-07-082026-08-19
Frank B.m********@yahoo.com+1405*****47Oklahoma50$5,5922023-05-232026-08-20
Kostas T.k*******@rocketmail.com+6681*****02California24$5,5492023-10-302026-08-12
Leonard L.e**********@hotmail.com+1252*****08North Carolina23$5,4922023-10-152026-08-19
Dan G.d*********@gmail.com+1260*****17Indiana20$4,6682023-08-112026-06-30
Jason S.j*******@fastmail.fm+1605*****24South Dakota43$4,6462023-07-212026-08-18
Kimberly S.k************@gmail.com+1510*****46Tennessee48$4,5852024-10-222026-08-18
Robert U.r*******@hotmail.com+1361*****08Texas27$4,3482023-02-232025-08-26
john R.j**********@gmail.com+1512*****46California17$4,0352023-04-272026-08-18
Hans W.h*********@gmail.com+1415*****43California29$3,9052023-04-252026-08-19
Derek M.d*********@hotmail.com+1765*****00Indiana36$3,8422023-01-192026-08-18
Vasil P.v********@me.com+1301*****07Pennsylvania11$3,6512023-04-292026-08-18
Arni G.a*********@gmail.com+3547*****53—26$3,6322026-01-262026-08-20
Ante J.a*******@gmail.com+3859*****13—23$3,5142024-10-042026-08-12
Michael B.m******@optonline.net+1631*****41New York42$3,4942023-06-122026-08-18
Chris M.c**********@gmail.com+1336*****21North Carolina28$3,4562024-11-032026-08-11
GUS B.g**************@gmail.com+1562*****81California20$3,3292023-07-072026-06-15
Stephen J.j*********@gmail.com+1760*****78California12$3,2242023-06-012026-04-24
N G.n*********@proton.me+1417*****36Oklahoma16$3,1242025-09-272026-08-03
Michael M.m***************@aol.com+1732*****51New Jersey37$3,0772023-08-062026-07-28
William H.d*******@tds.net+1906*****21Michigan20$3,0712023-07-312026-08-17
Bryan S.b*********@comcast.net+1615*****42Tennessee19$3,0182023-09-302026-07-28
Michael F.u******@protonmail.com+1713*****15Texas14$3,0122023-08-182026-08-11
mark k.m****@hotmail.com+1772*****80Florida16$2,9792023-08-172026-07-27
Andre M.a********@protonmail.com+1718*****53New York45$2,9612023-12-252026-08-06
Jeremy A.j*************@gmail.com+1732*****62New Jersey36$2,8622025-08-312026-08-19
WESLEY S.w***********@gmail.com+1502*****72Kentucky32$2,8272023-03-112026-08-19
Winslow G.w******@garniergroup.com+1858*****68California27$2,8112023-08-102026-08-17
ROGER J.r******@yahoo.com+1207*****04Florida16$2,7882023-11-292026-06-04
tyler e.e******@live.com+1715*****86Wisconsin6$2,7682023-02-012026-05-04
Bonnie R.b************@gmail.com+1520*****66Arizona17$2,7512023-04-202026-08-19
Wesley S.s***************@gmail.com+1678*****73Georgia38$2,7502023-01-052026-08-19
Jeff L.k*********@aol.com+1661*****85Texas15$2,7352022-08-232026-08-18
Joshua K.m*******@gmail.com+1765*****35Indiana23$2,7222023-04-242026-08-19
William M.a******@pm.me+1205*****02Alabama32$2,6802023-02-162026-07-09
Joseph T.j*******@hotmail.com+1830*****64Texas25$2,6162022-09-232026-08-17
Eric D.d*****@yahoo.com+1706*****90Washington15$2,5872022-09-022026-08-11
Kevin J.p*****************@hotmail.com+1708*****64Pennsylvania17$2,4512023-03-092026-08-10
Scott P.s*****@comcast.net+1503*****03Oregon14$2,4372023-06-142026-05-20

These are not cold leads. They are customers with order history whose phone number we are already holding and cannot legally use.

05

Solutions for the SMS gap

The popup itself is fixed as of 18 August. What is left is the backlog, one orphaned path, and the source that is still filling the pool.

1

Run an email opt-in invitation at the 19,970 in RCm4nZ

Effort Half a dayOwner Juan Channel Email onlyValue Test first, do not model

This is the recoverable list. Email is the only legal channel, because the whole definition of the segment is that there is no SMS consent on record. The ask is a single-purpose email whose only job is to get them back onto a phone field, now that the field no longer requires an off-page confirmation.

Send to a 2,000-profile slice first and read the real opt-in rate. These people already declined to finish once, so 19,970 is a ceiling and not a forecast. If the slice converts at the 10 to 13% Klaviyo quotes for phone-only asks aimed at existing email subscribers Klaviyo benchmark, the full pool is worth roughly 2,296 subscribers, or $17,477 against the measured $7.61 per SMS subscriber. I would not put that in a plan until the slice reports.

Prioritise inside the segment: the 14,707 who are existing customers first, since they carry $2,333,310 of historic revenue and a reason to hear from us.

2

Repoint the tap-to-text keyword, or retire it

Effort MinutesOwner Juan Value $1,705 recovered, then ongoing

Keyword JOIN still deposits opt-ins into SUmgWj “SMS Subscribers”, a list of 224 profiles created on 19 June. I checked all 54 flows in the account: zero live flows trigger on SUmgWj. The SMS welcome flow TWWDQd triggers on VdWm2S alone.

So every person who ever texted us to subscribe got no welcome message, and at the measured $7.61 per SMS subscriber that is about $1,705 of welcome-flow revenue never earned. The tap-to-text button is gone from the popup now, but the keyword is still live on the toll-free number and still reachable by anyone who texts it. Either point it at VdWm2S or add SUmgWj as a second trigger on TWWDQd.

3

Find out what is still filling the pool now the popup is fixed

Effort 2 hoursOwner Juan Value Stops 405/6 days of new dead numbers

The popup has stopped being the main contributor, because typed numbers now complete at 82.7%. But the pool still grew by 405 profiles in the six days to 20 August, so something else is feeding it. The leading candidate is Shopify checkout, and I have not yet proved it. What I can show is the mechanism: form_settings.shopify_visitor_api on the account carries sync_SMS_consent: true, so checkout phone numbers sync into Klaviyo, and a number typed to get a delivery notification lands in exactly the same NEVER_SUBSCRIBED state as an abandoned popup opt-in. Consent-free numbers emit no event, so they cannot be counted from the event stream; this needs a cohort pull on profiles that gained a phone after 18 August.

This matters because it changes what the pool means, and therefore how item 1 should be written. A number someone typed into a marketing popup is a soft yes we failed to close. A number someone typed to get a shipping notification is not a lead at all, and inviting that person to opt in reads as a cold approach. Split the segment by source before sending anything.

4

Measure the cost of single opt-in before it becomes a deliverability problem

Effort 1 hour, in 2 weeksOwner Juan Value Protects the 222/day gain

What we traded away on 18 August was typo protection. A mistyped number now enters VdWm2S as a confirmed subscriber and we pay to text it until it hard-fails. The account-wide failure rate today reads lower after the change than before it, but that comparison is worthless because it tracks campaign volume rather than list quality, so I am not reporting it as a win.

The clean read is cohort-based: take profiles that joined VdWm2S after 18 August, wait for a campaign to hit them, and measure their failure rate against the pre-18-August cohort. If the new cohort fails materially worse, the answer is not to restore double opt-in but to add inline phone validation on the field, which costs nothing in completion.

5

Get the single opt-in posture signed off

Effort One conversationOwner Antonio / Vincenzo Value Risk, not revenue

Flipping VdWm2S from double to single opt-in is a legal-posture change, not a UX tweak. What makes it defensible is the TCPA disclosure sitting under the phone field, which is present and correctly worded. What we no longer have is a second signal that the person holding the phone agreed. No sign-off is on record for this yet, and it should be, because the list it governs is now taking on about 222 people a day.

Related and separate: in a 350-profile sample of the recovery pool, Klaviyo had already flagged 15 as MESSAGE_BLOCKED and two as KNOWN_LITIGATOR. Scaled across 39,918 that is on the order of two hundred people who litigate over exactly this category of contact. It is another reason the recovery in item 1 runs over email and never over SMS.

06

What we gave up, and what is still open

Recorded plainly so none of it gets rediscovered later.

Closed since the capture-scope report. The popup is now single-path. Live form version 27932065 has zero SUBSCRIBE_VIA_SMS actions anywhere in it, the string “Klaviyo Library” is gone entirely, and view 0's stray of course! button, which fired with list_id: null and subscribed people to nothing, has been deleted. The phone field is one button on all devices into VdWm2S. Every mechanical defect in Fault 2 is fixed.

The opt-in flip is independently corroborated in the same payload: Klaviyo lists one double-opt-in confirmation sender per double-opt-in list under company_sender_settings.email_settings, and VdWm2S is no longer in it. It reads SQTjGy, SWAHz2, Y6cq5E.

Open itemWhy it mattersOwner
Typo cost of single opt-in is unmeasuredTwo days of data and no campaign has hit the new cohort yet. This is the thing we traded for the 1068% gain.Juan, in 2 weeks
No sign-off on the single opt-in changeLegal posture on a list taking 222 people a day.Antonio / Vincenzo
Shopify checkout still writes consent-free phonesNow the main source of pool growth: 405 in six days.Juan
SUmgWj has no flow on it224 profiles, no welcome message, about $1,705 forgone.Juan
Recovery rate on the pool is unknown19,970 is a ceiling. Nobody should model revenue off it before the 2,000 slice reports.Juan
Postscript May and June counts still not pulledCarried over. Decides how much of the pre-June baseline was migrated consent rather than new capture.Juan

One correction to carry forward. The capture-scope report recommended Klaviyo Smart Opt-in as the fix for the mobile path, and ranked it first. That recommendation is void. Smart Opt-in requires the shopper to receive and type back a one-time code, which is a second step, and the requirement here was a single-step submit. The plain phone field on all devices plus single opt-in delivered 82.7% completion without it. Do not re-propose Smart Opt-in for this form.