EM-114 · SMS gap · follow-up to the capture scope
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.
Short answer: nowhere. They are still in Klaviyo. They were invisible because a double opt-in list does not hold people while they hesitate.
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 number | SMS marketing consent | Count | Reachable how? |
|---|---|---|---|
| Confirmed subscribers | SUBSCRIBED | 86,202 | SMS and email |
| Opted in, then left | UNSUBSCRIBED | 36,404 | Neither · do not contact |
| Gave us a number, never completed | NEVER_SUBSCRIBED | 39,918 | Email only · recoverable |
| Total phone numbers on file | — | 162,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.
Two live auto-refreshing Klaviyo segments now exist. Neither needs rebuilding; both recount themselves.
| Segment | Definition | Profiles | Use |
|---|---|---|---|
URnxWdSMS Recovery · phone on file, never SMS-opted-in (ALL) |
Has a phone number and SMS consent is never_subscribed |
39,918 | The true size of the pool |
RCm4nZSMS Recovery · … email-reachable |
The above and email consent is subscribed |
19,970 | The 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.
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.
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:
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.
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.
| Email state | Profiles | Share |
|---|---|---|
| Email subscribed (reachable) | 19,970 | 50.0% |
| NEVER_SUBSCRIBED | 12,147 | 30.4% |
| Suppressed: UNSUBSCRIBE | 7,076 | 17.7% |
| Suppressed: SPAM_COMPLAINT | 414 | 1.0% |
| Suppressed: HARD_BOUNCE | 260 | 0.7% |
| Suppressed: USER_SUPPRESSED | 45 | 0.1% |
| Suppressed: INVALID_EMAIL | 6 | 0.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.
| Group | Profiles | Share | Historic revenue |
|---|---|---|---|
| Existing customers | 20,852 | 52.2% | $3,033,596 |
| Never ordered | 19,066 | 47.8% | $0 |
| Customers AND email-reachable | 14,707 | 36.8% | $2,333,310 |
| Total | 39,918 | 100% | $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.
Last fourteen months. Anything from June 2026 onward was captured by the current Klaviyo popup; earlier months are Postscript-era and Shopify checkout.
Top country: United States with 25,801 profiles (64.6%).
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.
| Profile | Phone on file | Region | Orders | Historic revenue | Captured | Last seen |
|---|---|---|---|---|---|---|
| B2B: f.o***************@flip.shop | +1424*****45 | California | 272 | $10,136 | 2023-11-23 | 2026-06-26 |
| Joseph B.t********@gmail.com | +1907*****49 | Alaska | 26 | $7,212 | 2022-07-08 | 2026-08-19 |
| Frank B.m********@yahoo.com | +1405*****47 | Oklahoma | 50 | $5,592 | 2023-05-23 | 2026-08-20 |
| Kostas T.k*******@rocketmail.com | +6681*****02 | California | 24 | $5,549 | 2023-10-30 | 2026-08-12 |
| Leonard L.e**********@hotmail.com | +1252*****08 | North Carolina | 23 | $5,492 | 2023-10-15 | 2026-08-19 |
| Dan G.d*********@gmail.com | +1260*****17 | Indiana | 20 | $4,668 | 2023-08-11 | 2026-06-30 |
| Jason S.j*******@fastmail.fm | +1605*****24 | South Dakota | 43 | $4,646 | 2023-07-21 | 2026-08-18 |
| Kimberly S.k************@gmail.com | +1510*****46 | Tennessee | 48 | $4,585 | 2024-10-22 | 2026-08-18 |
| Robert U.r*******@hotmail.com | +1361*****08 | Texas | 27 | $4,348 | 2023-02-23 | 2025-08-26 |
| john R.j**********@gmail.com | +1512*****46 | California | 17 | $4,035 | 2023-04-27 | 2026-08-18 |
| Hans W.h*********@gmail.com | +1415*****43 | California | 29 | $3,905 | 2023-04-25 | 2026-08-19 |
| Derek M.d*********@hotmail.com | +1765*****00 | Indiana | 36 | $3,842 | 2023-01-19 | 2026-08-18 |
| Vasil P.v********@me.com | +1301*****07 | Pennsylvania | 11 | $3,651 | 2023-04-29 | 2026-08-18 |
| Arni G.a*********@gmail.com | +3547*****53 | — | 26 | $3,632 | 2026-01-26 | 2026-08-20 |
| Ante J.a*******@gmail.com | +3859*****13 | — | 23 | $3,514 | 2024-10-04 | 2026-08-12 |
| Michael B.m******@optonline.net | +1631*****41 | New York | 42 | $3,494 | 2023-06-12 | 2026-08-18 |
| Chris M.c**********@gmail.com | +1336*****21 | North Carolina | 28 | $3,456 | 2024-11-03 | 2026-08-11 |
| GUS B.g**************@gmail.com | +1562*****81 | California | 20 | $3,329 | 2023-07-07 | 2026-06-15 |
| Stephen J.j*********@gmail.com | +1760*****78 | California | 12 | $3,224 | 2023-06-01 | 2026-04-24 |
| N G.n*********@proton.me | +1417*****36 | Oklahoma | 16 | $3,124 | 2025-09-27 | 2026-08-03 |
| Michael M.m***************@aol.com | +1732*****51 | New Jersey | 37 | $3,077 | 2023-08-06 | 2026-07-28 |
| William H.d*******@tds.net | +1906*****21 | Michigan | 20 | $3,071 | 2023-07-31 | 2026-08-17 |
| Bryan S.b*********@comcast.net | +1615*****42 | Tennessee | 19 | $3,018 | 2023-09-30 | 2026-07-28 |
| Michael F.u******@protonmail.com | +1713*****15 | Texas | 14 | $3,012 | 2023-08-18 | 2026-08-11 |
| mark k.m****@hotmail.com | +1772*****80 | Florida | 16 | $2,979 | 2023-08-17 | 2026-07-27 |
| Andre M.a********@protonmail.com | +1718*****53 | New York | 45 | $2,961 | 2023-12-25 | 2026-08-06 |
| Jeremy A.j*************@gmail.com | +1732*****62 | New Jersey | 36 | $2,862 | 2025-08-31 | 2026-08-19 |
| WESLEY S.w***********@gmail.com | +1502*****72 | Kentucky | 32 | $2,827 | 2023-03-11 | 2026-08-19 |
| Winslow G.w******@garniergroup.com | +1858*****68 | California | 27 | $2,811 | 2023-08-10 | 2026-08-17 |
| ROGER J.r******@yahoo.com | +1207*****04 | Florida | 16 | $2,788 | 2023-11-29 | 2026-06-04 |
| tyler e.e******@live.com | +1715*****86 | Wisconsin | 6 | $2,768 | 2023-02-01 | 2026-05-04 |
| Bonnie R.b************@gmail.com | +1520*****66 | Arizona | 17 | $2,751 | 2023-04-20 | 2026-08-19 |
| Wesley S.s***************@gmail.com | +1678*****73 | Georgia | 38 | $2,750 | 2023-01-05 | 2026-08-19 |
| Jeff L.k*********@aol.com | +1661*****85 | Texas | 15 | $2,735 | 2022-08-23 | 2026-08-18 |
| Joshua K.m*******@gmail.com | +1765*****35 | Indiana | 23 | $2,722 | 2023-04-24 | 2026-08-19 |
| William M.a******@pm.me | +1205*****02 | Alabama | 32 | $2,680 | 2023-02-16 | 2026-07-09 |
| Joseph T.j*******@hotmail.com | +1830*****64 | Texas | 25 | $2,616 | 2022-09-23 | 2026-08-17 |
| Eric D.d*****@yahoo.com | +1706*****90 | Washington | 15 | $2,587 | 2022-09-02 | 2026-08-11 |
| Kevin J.p*****************@hotmail.com | +1708*****64 | Pennsylvania | 17 | $2,451 | 2023-03-09 | 2026-08-10 |
| Scott P.s*****@comcast.net | +1503*****03 | Oregon | 14 | $2,437 | 2023-06-14 | 2026-05-20 |
These are not cold leads. They are customers with order history whose phone number we are already holding and cannot legally use.
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.
RCm4nZThis 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.
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.
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.
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.
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.
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 item | Why it matters | Owner |
|---|---|---|
| Typo cost of single opt-in is unmeasured | Two 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 change | Legal posture on a list taking 222 people a day. | Antonio / Vincenzo |
| Shopify checkout still writes consent-free phones | Now the main source of pool growth: 405 in six days. | Juan |
SUmgWj has no flow on it | 224 profiles, no welcome message, about $1,705 forgone. | Juan |
| Recovery rate on the pool is unknown | 19,970 is a ceiling. Nobody should model revenue off it before the 2,000 slice reports. | Juan |
| Postscript May and June counts still not pulled | Carried 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.