Find your most profitable buyers, see how long it takes them to pay back the ad that brought them in, let your data dashboard inform you with automated stories, and get the exact move to make next — ready to ship in one click. And no generative AI needed.
No more hunting across twelve windows. Your hardest questions arrive as plain-English summaries; What happened, why, and the move that fixes it. Built with the same fixed math every time, straight from your live Profit Tracker, not an AI guessing at context. Shown on your home feed or sent as a clean weekly digest.
Words we use: net margin = profit after every cost · net loss = money lost · top-line revenue = all sales money before costs · return rate = how often buyers send items back · AOV = average amount spent per order.
Margin Bounce
Live
Monday · Auto-detected
Monday sales bounced back up.
After three weeks of flat daily net margin, yesterday's net margin climbed back to $45,000 — driven entirely by the Day 42 repeat-order window opening for your January Lookalike cohort.
+$45,000
Net margin
Drain Alert
Live
Flash Sale · Day 30
Flash Sale margin leak detected.
Your 20% Flash Sale campaign hit Day 30 with a 0% second-order bridge. It's bleeding $1,274 in net loss. We recommend shifting its $3,500 budget to your Signature Bundle creative.
−$1,274
Net loss
SKU Warning
Live
Heavyweight Knit Sweater
Top revenue product is bleeding cash.
Your Heavyweight Knit Sweater generated $112k in top-line revenue, but a 21% return rate and heavy fulfillment costs turned it into an $8,200 net loss. Stop ad spend, or bundle to lift AOV.
−$8,200
Net loss
Stories refresh automatically each night as your Profit Tracker reconciles the day's new orders.
— The Reality Check
Your ad platform says your cost to get a customer is under control.
But you’re sitting there wondering: Am I building a real business, or am I spending my way into a cash-flow crisis I can’t see yet?
One ad platform takes credit for another’s sale. Your store’s default reports never subtract shipping, returns, and true product cost. You aren’t failing — your reporting stack was never built to see the whole picture. That’s the gap Upstream closes.
— The Diagnosis
Some cohorts print cash. Others bleed.
Identify the money made and lost over time for each group of buyers, counted after product cost, shipping, returns, and the exact ad cost to get them. You'll see which group is the most profitable, and which parameters to look for in your next customers.
This is a cohort: every buyer grouped together and tracked as one unit over time, so you can see what the group is really worth. When we can trace a buyer's first order to a real ad click, the group is the ad set or campaign that brought them — that's the more useful group, since it tells you where to spend. Only when there's no ad-click history do we fall back to grouping by the month they joined, and for a lower-volume store that time window can widen from a month to a quarter or a year until there's enough buyers in it to trust.
Every number on this page carries a confidence level — built from how many orders back it, whether they're tied to a real ad click or just a blended monthly estimate, and how the cost behind it was sourced: a real per-SKU number, a category-level estimate, or a store-wide average, in that order of trust. Below a real threshold, we don't dress up a guess as a fact: the number doesn't show at all, and you see exactly why, not just an empty chart.
Cumulative Net Margin by Cohort
Months 0–12 · after product cost and ad cost · computed from real orders
Confidence: High · 1,420 orders Using an average product cost · 2 products
Jan · Paid Social
Month 2 · Crosses from a net loss into net profit.
Feb · Display Ads
Negative · Never crosses into profit — stays negative through Month 12.
Mar · Email Flow
Month 6 · Crosses from a net loss into net profit.
— The Segment Matrix
See which customers make you money — and which ones don't come back.
Every group of customers lands in one of four boxes. Each box tells you the one move to make: re-invest in it, fix it, or cut it.
This is the same buyer groups as the curve above, plotted a different way: LTGP:CAC against buy-again rate, so you can see which groups fund the business and which drain it. As a group's numbers change, it can move from one box to another — a group scoring well today isn't locked in that box forever.
Cohort Profitability × Retention Matrix
Side-to-side = profit per ad dollar (higher is better). Up-and-down = how often buyers come back. Bubble size = how many buyers are in the group.
Bubble size = buyers in the group
100
1,000
5,000
Less profit per ad dollar · buyers come back
The Trap
They love the product and buy repeatedly, but acquisition costs are too high. Fix your creative or cut the channel.
More profit per ad dollar · buyers come back
The Compounding Zone
Scale spend aggressively. These customers print cash and stick around.
Less profit per ad dollar · buyers don't come back
The Drain
Cut immediately. These customers lose money on day one and never come back.
More profit per ad dollar · buyers don't come back
The One-Hit Wonder
Profitable on day one, but dead afterward. Good for cash flow — dangerous to scale without retention hooks.
What's inside a segment
Every bubble above is made of real buyers. Click a bubble in the chart, or pick a group below, to see where they live, who they are, and what they buy.
Example store · illustrative, not averaged across merchants
The Word-of-Mouth Winners · Referral · 950 buyers
Where they are
United States83.8%
Canada9.8%
United Kingdom6.4%
Age & gender
From a connected Meta/Google Ads account, once each platform clears our review
25-34 · female410 buys
35-44 · female330 buys
25-34 · male140 buys
45-54 · female120 buys
What they buy
Real purchase data — what this group actually bought and when. Not a lifestyle/values profile: we don't run surveys, buy panel data, or license third-party psychographic datasets.
Sweaters42%
Outerwear28%
Accessories18%
Footwear12%
Business buyers
Channel-presence only — this example store has B2B/wholesale channel orders, and some of this segment's buyers also appear there, but no company name, size, or industry is captured.
B2B orders store-wide
14
In this segment
6
— The Retention Window
See exactly which day loses buyers — and how long you have to win them back.
Repeat Revenue Share (above) tells you how much of a group's revenue comes from repeat buyers. These two views tell you the day-by-day mechanics behind that number: how many actual people come back, and the exact moment each category's buyers stop being reachable.
This is a day-cohort: every buyer whose very first order landed on the same calendar day, grouped together. Where a month-cohort shows you the big picture, a day-cohort shows you the exact day your post-purchase email should fire.
Daily Cohort Retention Matrix
Illustrative data · % of each day's first-time buyers who ordered again by Day 1, 3, 7, 14, 30
Every buyer counts the same, whether they spent $20 or $200 — this is people, not dollars. Look for the day where the numbers fall off fastest: that's the leak your email flow needs to plug.
First-order day
Buyers
Day 1
Day 3
Day 7
Day 14
Day 30
Mar 2
210
4.8%
9.5%
15.2%
21.0%
26.7%
Mar 3
244
5.1%
10.2%
16.0%
22.4%
28.1%
Mar 4
198
3.5%
7.1%
12.6%
17.8%
22.9%
Mar 5
261
2.3%
4.6%
8.0%
12.1%
15.8%
Mar 6
233
4.7%
9.9%
15.9%
22.0%
27.5%
Look at Mar 5 above: it drops to 2.3% by Day 1 while every other day is around 4–5%. Something happened that day — a shipping delay, a bad unboxing, the wrong follow-up email — and it never fully recovers by Day 30 either. That's the day to go dig into.
Time-to-Second-Purchase
Illustrative data · median days between a buyer's 1st and 2nd order, by category
Half of your Apparel buyers order again within 18 days — half of your Home Goods buyers take over two months. Send the discount code on day 15 for Apparel, not day 45. The exact moment the window is closing is different for every category you sell.
Words we use: day-cohort = everyone whose first order was the same calendar day · retention window = the stretch of days a buyer is still likely to order again before they go quiet.
— How It Actually Works
Two mechanisms, running on every order.
The Gateway SKU Bridge tells you which first order predicts a repeat buyer. The attribution engine tells you exactly which ad click paid for it — not guessed at in the browser.
The Gateway SKU Bridge
Which first order predicts a repeat buyer
The buyer who pays full price and comes back for more.
• First product they buy: Trailhead Backpack
• How soon they buy again: 42 days
• Profit from each buyer in a year: $153
• How often they send it back: < 2.1%
Ready to push as a lookalike seed to your ad platforms — one click, whenever you want it.
Attribution Engine
First-Party Click-to-Order Ledger
A record of which ad click led to each order — not guessed in the browser.
• Ad type: Paid Social (lookalike audience)
• Ad click tracked directly, not modeled
• Cost to get each first buyer: $45.00
• Profit is 3.11× the ad cost over 12 months
Flags the ads mostly bringing one-time buyers who never come back — so you can cut them.
— The Gateway SKU Bridge
Which first order predicts a customer who comes back?
No two sales are the same sale. Two products can move the same volume and land the same revenue this week, but one of them quietly builds your repeat-buyer base, and the other only ever sells once. Our Gateway SKU Bridge tracks every buyer's very first product, then measures who's still ordering 30, 60, and 90 days later.
A product that brings them back has a real, measured pull back to your store. A one-time only product is high volume, near-zero return rate, usually a discount or one-off promo doing exactly what it was built to do: sell once.
One real limitation: nothing here can tell a subscription's scheduled renewal apart from a customer choosing to come back on their own. A subscription product's repurchase rate is mechanically near 100%, so it will always look like your best "brings them back" product whether or not buyers actually like it — check that before you point ad budget at people who look like its buyers.
Repurchase bridge by first product
Illustrative data · share of first-time buyers who ordered again within 90 days
First product
Buyers acquired
90-day bridge %
Later-order revenue
Signal
Signature BundleSIG-BND-014
1,240
46%
$118,400
Brings them back
Weekender ToteWKD-TOT-009
860
31%
$54,200
Brings them back
Core Crew TeeCOR-TEE-002
2,410
19%
$61,800
Mixed
20% Flash Sale BundleFLS-BND-077
3,120
4%
$8,900
One-time only
The Flash Sale Bundle brought in more first-time buyers than anything else on this list — 3,120 of them — and almost none came back. Signature Bundle brought in a third as many buyers and produced more later-order revenue. Ad spend chasing volume alone would keep scaling the wrong one.
Words we use: bridge % = share of a product's first-time buyers who order again within 90 days · brings them back = a first product that reliably brings buyers back · one-time only = a first product buyers try once and never again.
Take Action
The actions you take move your business from bleeding cash to compounding it.
Extra profit in 90 days
+$0
1Shift Budget
Shift $3,500/mo from Flash Sale Campaign → Signature Bundle
96% of Flash Sale buyers never come back — Signature Bundle keeps 46% of them. Move the money.
From: The Lost Causes · Cold Prospecting
+$14,000
2Shift Budget
Shift $2,000/mo from Retargeting → Brand Search
You're paying more for Retargeting and getting less repeat business than Brand Search. Switch it.
From: The Expensive Regulars · Retargeting
+$6,200
3Pause Product
Pause Influencer Push — Summer Kit
4% of these buyers ever return. It's costing you margin for a one-time hit.
From: The Hype Chasers · Influencer Push
+$2,400
4Pause Product
Pause Flash Sale Bundle
This SKU only works as a one-time discount grab. Pausing it stops the bleed.
From: The One-Timers · Creator Promo
+$1,274
— The Problems We Solve
Three profit leaks that hide in plain sight.
Words we use: COGS = what the product costs you · CAC = cost to get one buyer · LTGP:CAC = profit from a buyer vs. the ad cost · retention = buyers coming back.
The Blind Scaling Trap
The Pattern
Founders acquire customers for $30-$40 each and keep scaling the spend without knowing if those buyers ever come back — quietly wondering if they're building a real business or a bigger cash-flow problem.
The Solution
Stop hoping customers return. Upstream automates 30, 60, and 90-day cohort retention views so you can see exactly when a newly acquired group of customers crosses from a net loss into a net profit.
The First-Order Illusion
The Pattern
Most brands realize only after months of spend that they've been overspending on acquisition and underspending on retention — paying to acquire single-purchase, bargain-hunting customers who never buy again.
The Solution
We deduct your Cost of Goods Sold (COGS), an estimated shipping cost, and exact CAC from every transaction, exposing the ad campaigns that bring in high-return, low-margin buyers so you can cut them immediately.
Spreadsheet Hell
The Pattern
Getting an accurate LTGP:CAC ratio for a specific monthly cohort means stitching together ad platform exports, Shopify data, and a fragile spreadsheet model — every single month, by hand.
The Solution
Ditch the broken Excel models. Upstream permanently links your ad spend across every platform directly to your Shopify customer profiles, giving you a live, automated Profit Tracker of your exact LTGP:CAC and Payback Periods without a single manual export.
— What if?
Move your budget and see the range before you commit.
Ad spend doesn't scale in a straight line. The more you pour into a channel, the more each new dollar buys lower-intent reach at a higher cost. Most tools show you one confident number. We show you two: What a straight-line estimate says, and a more realistic one that accounts for efficiency drop off.
In your live Profit Tracker this needs at least 30 customers in the group you're shifting into — below that, there isn't enough order history to project from, and we say so instead of guessing.
Simulate a reallocation
Illustrative data · same campaigns as the Action Queue above
$3,500
If it scaled in a straight line
$14,000
≈100 new customers · 12mo profit, optimistic ceiling
Realistic estimate
$9,625
≈75 new customers · accounts for rising cost as spend grows
At the default $3,500/mo, this matches the Action Queue card above — that's the straight-line number. The realistic estimate is what we'd actually show inside your live Profit Tracker.
— The Product Profit Tracker
Which SKUs actually fund your business — and which ones are a drain?
Standard dashboards rank products by top-line revenue. Upstream ranks them by Lifetime Gross Profit — revenue minus real product cost, not the marked-up price you see elsewhere. The top seller by revenue is often not the same as the most profitable.
Best vs. Worst Products
Lifetime Gross Profit contribution · last 12 months
Click any column to sort ↕
The sweater leads by revenue — but switch to Lifetime Gross Profit and it drops to last place. That's the gap this Profit Tracker closes.
#
the product
all sales money, before any costs
revenue minus product cost
profit out of every $100 sold
how often buyers send it back
margin tier: compounding, one-hit, or drain
what to do next
01
Heavyweight Knit Sweater
$112,400
−$8,200
9%
21%
The Drain
Stop ad spend · rethink freight
02
Signature Crew Tee
$84,200
+$31,400
37%
4%
Compounding
Scale spend
03
Restock Bundle · 3-pack
$61,800
+$27,900
45%
2%
Compounding
Scale spend
04
Linen Wide-Leg Pant
$48,900
−$3,100
11%
16%
One-Hit Wonder
Bundle to lift AOV
05
Core Hoodie
$39,700
+$14,600
33%
6%
Compounding
Scale spend
06
Cotton Jogger
$33,400
+$9,800
29%
5%
Compounding
Scale spend
07
Insulated Water Bottle
$28,700
−$2,400
14%
12%
One-Hit Wonder
Bundle to lift AOV
08
Soy Candle · 3-wick
$21,400
+$6,200
52%
3%
Compounding
Scale spend
09
Canvas Tote
$12,900
+$4,100
48%
2%
Compounding
Scale spend
The Trojan Horse
High top-line volume hides high return rates, heavy shipping and thin margins — until Upstream deducts them.
Compounding SKUs
Some products naturally kick off high repurchase — they pull buyers into the Compounding Zone, not just a single sale.
One-Hit SKUs
Stop putting ad spend behind low-margin, high-return SKUs — or bundle them to lift AOV before they drain the cohort.
— The Live Profit Tracker
Four numbers that decide whether you scale or bleed.
Whether you ship boxes or bill subscriptions, these four numbers tell you if you're building real margin or burning cash. No vanity metrics — just the Profit Tracker that governs your next move.
Example store below · illustrative, not averaged across merchants
LTGP : CAC
(Total Revenue − Total COGS) ÷ Acquisition Cost
3.84×
Proves whether your marketing engine generates actual cash. A 4:1 revenue LTV is worthless if your gross margin is only 20%.
Profit from a buyer vs. what it cost to get them. Higher is better.
Payback Period
Months until Cumulative Gross Profit > CAC
2mo
The ultimate measure of capital efficiency. A 2-month payback lets you scale spend using existing cash flow rather than taking on expensive inventory debt.
How many months until a group of buyers earns back the ad money you spent on them.
Buy Again
Total Orders ÷ Total Customers
1.85×
A high buy-again multiplier signals true product-market fit and lowers the pressure to constantly acquire new traffic.
How many times, on average, a buyer in this group reorders.
First-Order Profit
AOV − COGS − Shipping − Pick/Pack − CAC
+$23
Tells you if the brand makes money on day one, or whether your survival depends entirely on future repeat purchases.
Money made (or lost) on a buyer's very first order, after every cost.
— Self-Serve Setup
Install in a minute. No sales call, ever.
No data engineering. No agency. No demo call to book. Four steps, and your first ranked profit view lands within a day.
01
Install app
One-click install from the Shopify App Store. No developer, no manual tags — just toggle on one theme app-embed block for ad-click tracking, right from Shopify's Theme Editor. No theme code to write or edit.
➔
02
Auto-pull Shopify history
We backfill your full order, customer, and product history — no manual exports.
➔
03
Set your product costs
Upstream guesses an average product cost from your product categories, then lets you set the exact cost for each product.
➔
04
See your first profit chart
We sync and compute overnight. Most stores see their first profit-by-group chart within a day of install — no manual export, no waiting on us.
— The Bottom Line
Stop optimizing for the ad platform's revenue. Start optimizing for yours.
Privacy, integration, and how we resolve true profit — answered plainly.
A cohort is a group of buyers tracked together over time. When we can trace a buyer's first order to a real ad click, that group is the ad set or campaign that brought them in — the more useful grouping, since it tells you where to spend. Only when there's no ad-click history do we fall back to grouping by the month a buyer joined, similar to a class of kids who all started school on the same day. The Diagnosis chart (the lines climbing over months) shows a cohort's profit building over time. The quadrant view (the four boxes) shows the same cohorts plotted by LTGP:CAC against buy-again rate, so you can see at a glance which groups fund the business and which drain it — and a group can move between boxes as its numbers change.
Shopify's own reports are revenue reports: what sold, and for how much. They don't know what a product actually cost you, so there's no contribution margin, only top-line sales. They don't follow a customer across months, so there's no cohort or LTV view — no way to see that a channel looks cheap on the first order and expensive a year in, or the other way around. And they tell you a number moved, not why. Upstream sits one layer up: real margin after COGS, an estimated shipping cost, and returns; LTGP:CAC by cohort, not blended ROAS; and a Data Story Feed that names the actual reason a number moved, in plain English, refreshed every night. None of that is a report you could save from Shopify's own analytics.
Not by ROAS (Return On Ad Spending), but by contribution margin. We take every order an “ad click” led to, subtract real product cost, an estimated shipping cost, and returns, and match that against what you actually paid for the click. That's the number that matters, not blended revenue. On top of that, we track it by cohort: a campaign can look unprofitable on the first order and still be your best channel if those buyers come back and spend 3x more over the next six months. That's the whole point of the cohort engine. And you don't have to go looking for it: the “Data Story Feed” flags a campaign automatically the moment its true profit crosses below a healthy line, instead of waiting for you to notice on a dashboard. One thing we deliberately don't do: build a proprietary multi-touch attribution pixel. That's a different, much bigger engineering bet, and it doesn't change the core answer; Which is real cost matched to real orders, not modeled credit across touchpoints.
Every ad click is linked to the real Shopify order it led to, including what the product cost, an estimated shipping cost, and refunds. We add up the lifetime profit from each buyer. We track profit on the first order, profit over 90 days, how long it takes to earn back the ad cost, and how often each group buys again. For every channel and campaign. No made-up 'revenue per ad dollar' numbers from the ad platform: only the real, server-checked profit each buyer actually brought in.
We add a small piece of code to your Shopify theme (an app-embed block) that runs at the edge and saves the ad-click IDs before any browser script can remove them. On our servers, we listen for Shopify's 'new order' notice and join the order: line items, discounts, refunds, etc. With the ad click that started the visit. With your permission, we pull each ad platform's daily spend at the campaign level. No theme code edits, no heavy install.
Yes. Paste in a private API key from your own Klaviyo account — no developer registration, no waiting on anyone — and Upstream writes real LTGP:CAC, payback status, and repeat-purchase signals onto each customer profile, plus one segmentable property for which quadrant they're in: compounding, one-hit, trap, or drain. It also reads back your existing Klaviyo segments and shows the overlap against our own margin-based ranking — where the two agree, and where Klaviyo's revenue-ranked view and our margin-ranked view genuinely disagree. Refreshed nightly, with partial failures reported rather than hidden behind a green checkmark.
No. Because Upstream talks to Shopify's servers directly, the data moves under the browser, where Safari's privacy rules and ad blockers can't see or stop it.
We store the ad-click ID, the matched ad click, and the matching Shopify order details (order ID, profit, product cost, refund status). We never store raw payment details. Shopify and your payment processor handle that. All data is encrypted when stored and when sent.
Yes. You can export or permanently delete all stored ad-click and order data any time from the Upstream settings page. Deletion finishes across our systems within one business day and removes the link between ad clicks and past orders.
You cancel from inside the app — no email, no call, no support ticket. Downgrading to Free or disconnecting your store stops the Shopify subscription at that moment; we don't keep billing an app you've turned off. We don't credit you for the unused days left on the period you already paid for, and we don't claim otherwise. Whatever the button says is what happens, stated before you click it, not buried in a policy page you have to go find.
No, and we label it that way inside the app rather than letting you assume otherwise. The quadrant view and the LTGP:CAC ratios match real profit to real ad spend, which is honest arithmetic, but the link between a customer and a channel is attribution, and attribution is observational. Ad platforms deliberately optimize toward people who were already likely to buy, so a channel can look like it produces excellent customers while producing very few customers you would not have got anyway. Both of those can be true at once, and the attributed number cannot tell them apart. Better matching, longer lookback windows and server-side tracking make the association more precise; none of them make it causal. What would make it causal: withholding that channel from part of your market and comparing those regions against the rest of your store over the same weeks. That is a geo holdout, and it is the only thing in Upstream that produces a causal number. Every other figure carries a badge saying which kind of claim it is making: causal, observed, projection, or measured.
You switch your ads off in a set of states and leave them running everywhere else, then compare the two groups over the same weeks. The rest of your store acts as the control group, so anything that hit the whole business (a season, a competitor, a viral post, a supply problem) hits both sides and cancels out. That is what makes the answer causal rather than a before-and-after: a before-and-after has nothing held back, so seasonality and plain luck are indistinguishable from the effect of whatever you changed. Upstream picks the regions, tells you how long to run it, computes whether the test could detect anything before you start, and analyzes the result from your Shopify order data afterwards. You make the actual exclusion in your ad account. You need one when the question you are asking is 'would these sales have happened anyway', and no dashboard, however detailed, can answer that.
Possibly not, and we would rather tell you that up front than take eight weeks of held-back revenue to get there. For a store around $1M a year, the smallest change a holdout can reliably detect is roughly 18% to 44% of the held-out regions' sales, depending on how much you hold out and for how long. Now compare that to how far a real change actually moves those regions: switching off all paid media there moves them about a third, so that test is just about answerable. Switching off one channel moves them about 13%, and trimming a budget by 20% moves them under 3%. Neither of those is answerable at that size, and no amount of patience or extra weeks fixes it. Single-channel questions become answerable somewhere around $3M a year, and budget-level questions need far more. This matters because underpowered tests do not fail quietly: they hand back confident, inflated numbers that read like answers, and acting on a noisy result has been shown to leave a business worse off than doing nothing a substantial share of the time. Upstream computes your own answer from your own order history, by running the same comparison over past stretches where nothing happened and measuring how far from zero it lands anyway, so the verdict is about your store rather than a rule of thumb.
Judge it on whether the method is published, because that is the part you can actually check. Some vendors do publish a real one, run genuine controlled experiments, and are worth every dollar for the brands they are built for: those brands typically spend seven figures a month on media, and the pricing reflects it. Others use the language of lift and control groups for something built from observational data, and never publish the design, the power calculation, or what happens when the test cannot detect anything. Two questions separate them. Does the tool tell you, before you run, the smallest change it could reliably detect on your data? And does it ever refuse to give you a number? Upstream answers both out loud, publishes the arithmetic, labels its own observed figures as observed rather than only pointing that out about everyone else, and tells most stores our size that a meaningful holdout is out of reach for them. That last one is not a limitation we are hiding; it is the main thing the feature does.
Never automatically, and never in the background. We read your ad spend (read-only, with your permission) to match the exact cost against real profit — that never goes back to the ad platforms. The one exception: the Gateway SKU Bridge can push a list of your best buyers' emails to Meta or Google to build a lookalike audience, and that only happens when you explicitly click Apply on that specific action. Nothing else about your order or customer data is ever shared with an ad platform.
— Private Release Queue
Find out where your profit is leaking sooner than later. Request early access.
We are onboarding a limited group of Shopify stores to test our profit analytics, recommendations, and other features. Drop your store details to secure your spot in the early access queue.