← back to Dw Signup Fulfillment

verification/tk10836/ROOT-CAUSE-FOUND.md

71 lines

# TK-11366 — ROOT CAUSE FOUND: checkout's DEFAULT shipping option flipped ~2026-08-18

Read-only. No login, no checkout created, no writes. $0. 2026-09-10.

## The test
An **abandoned checkout** records whichever shipping line was selected when the shopper walked away.
Someone who abandons early never actively picks a rate — so the recorded line approximates the
**DEFAULT**. Orders only show what people ended up with; abandoned checkouts show what they were
*handed*. That is the population my earlier cohorts structurally could not see (Cody's point).

## The result — unambiguous
US sample-only **abandoned checkouts**, shipping = total − items − tax:

| window | n | recorded $0.00 | recorded PAID |
|---|---|---|---|
| Jun 1 – Aug 17 | 26 | **24 (92%)** | 2 |
| Aug 18 – Sep 10 | 56 | **2 (4%)** | **54** |

| month | n | $0.00 |
|---|---|---|
| 2026-06 | 6 | 83% |
| 2026-07 | 15 | 93% |
| 2026-08 | 44 | **16%** |
| **2026-09** | **17** | **0%** |

**In September, ZERO of 17 abandoned sample checkouts carry the free rate.**
Paid amounts cluster on the UPS carrier rates: **$23.35 ×17, $23.13 ×16**, $21.78 ×5, $24.95 ×4.

## Why this is decisive
`GET /cart/shipping_rates.json` **still returns "Free Shipping (No Tracking)" $0.00, listed FIRST**
(measured today, Kelly's exact address). So the rate is *offered* — it is simply **no longer the
default selection in checkout**. Offered ≠ defaulted. That single distinction explains every
observation:

- Same delivery profile, same active rates, no Admin-API-visible config diff. ✔
- Orders: 97% free → 43% free. ✔
- Abandoned: 92% free → 4% free. ✔
- Single-swatch orders paying $23.13 — irrational as a *choice*, automatic as a *default*. ✔
- Nothing correlates with Shop Pay, weight, cart size, profile, or the >10-unit rule. ✔

## I WAS WRONG, AND SO WAS MY CORRECTION OF THE REVERSAL
I argued the $24.95 on Kelly's checkout was a **self-selected upgrade**. That is **not supported**.
Her checkout is one of the Aug-18+ population where the default is a paid rate. She most likely
never chose it — she was *handed* it. Cody was right in substance about her; the reversal's concern
was right; my "availability proves it's benign" framing was wrong. What survives from my work is
narrower: the free rate *exists and is offered*. It is **not** what customers are landing on.

## Impact (measured)
- **51 orders** since Aug 18 that qualified for $0.00 shipping paid anyway — **$1,120.10 charged,
  avg $21.96**, on samples advertised as free.
- **54 of 56** abandoned sample checkouts since Aug 18 carry a paid shipping line.
- **Abandonment volume more than doubled** in the same window: 26 → 56. People are bailing when a
  "free samples" cart quotes ~$23 shipping. That is the larger, invisible cost.
- Markup makes it worse: UPS Ground base ≈$9.25 is charged at **$23.13** (+$13.88).

## What I could NOT determine
**Why** the default flipped. `deliveryCustomizations` returns 0 for the full-access token, but note
**`shopifyFunctions` is APP-SCOPED** — the full token sees 0 functions while the fulfillment token
sees its own "DW Free Samples" function. So a delivery-customization function owned by *another app*
would be invisible to me, and I cannot rule one out. Candidates, unranked and unproven:
1. A newly installed/updated app with a delivery-customization function reordering options.
2. Shopify's newer checkout delivery UI ordering by **delivery estimate** — the free rate is the only
   cheap option with **no** estimate (`delivery_date: null`), UPS/FedEx carry real dates.
3. A checkout-profile change — the published profile was **updated 2026-08-30** (inside the window,
   though after the ~Aug-18 onset).

## Next step (GATED — customer-facing shipping/checkout config)
Look at the live checkout's Delivery options and at Settings → Shipping/Checkout for a recently
installed app or a changed default. **The likely fix — forcing "Free Shipping (No Tracking)" to be
the default for sample carts — is a customer-facing money change and is NOT something I will make.**