Draft v1, reconstructed from the two walkthroughs + Nova screenshots. A map to correct against staging, not a validated flow. Node border = how sure we are; edge labels = the routing conditions.
Start here β what am I looking at?
The picture: VShred's "SGA" sales funnel β the quiz β checkout β upsells journey a customer travels β drawn as a routing matrix (a table of steps, where each step is a page and something decides the next one).
The finding that started this: VShred's current custom system (their Laravel/Nova admin) already works exactly like this β a funnel made of steps, each step is a page (or A/B variants of a page), and small conditions (where you're from, what's in your cart) pick where you go next.
What we're proposing: rebuild that same model on Shopify β the funnel as editable data (metaobjects) + a small service layer that reads the conditions and serves the right page. Same model, new home β not a reinvention.
How to read it: follow left β right. Boxes = pages (routes). Arrows = the conditions that route the customer. Color = how sure we are: green = seen for real in their admin, amber = page real, rule inferred, gray dashed = still to confirm. Next: walk this against their live staging admin and correct the amber/gray parts.
Hover a step β the boxes it maps to light up. Click Burn Evolved for the data-model detail. Numbers β ββ₯ match steps to boxes.
Left band = Upper Funnel (quiz β segment VSL β checkout). Right band = post-checkout Upsells. The three green edges off us/burn-gt are the only conditions we saw verbatim in Nova β every other edge is a target to confirm.
us/burn-gt) β the one page where we saw the real rules in their admin: bought a subscription β Burn PM Β· bought bottles β Burn 3-bottle Β· bought nothing β a 1-bottle downsell. (And anyone not in the US is redirected away before they even see it.)| Mechanism | Their CMS today | Shopify equivalent |
|---|---|---|
| Funnel | Sales Funnel β envelope of pages, chained | funnel metaobject |
| Step | Route (a URI) | funnel_step |
| Variant | Page Version β Control + Weight, sticky | variant set, weighted by service layer |
| Branch | Before/After-Visit Conditions (geo Β· SKU Β· purchase Β· gender) | branch_rules in the service layer |
| Reorder | move an offer's position ("basic mutation") | reorder step refs in admin |
| A/B | add a page version at weight | add a variant to a step |
| Post-checkout | conditions read cart SKUs + purchase state | service layer carries that context (confirm) |
| Measurement | Track API β Snowflake (won't port) | per-step events β analytics (net-new) |
Every box in the funnel is one of these. This is the whole abstraction.
A node is a route, the chips inside it are variants, the arrows out of it are conditions. Nothing else.