White Paper · Advertising

Marking the Funnel to Market

Realized and unrealized revenue, and the case for a Total ROAS. Why first-party cart data gives a fuller, better-timed view of advertising performance.

Download the paper
Store A’s total funnel value is 2.10 times realized revenue alone, with 1.10 times still in open carts

Most advertisers value their funnel at zero until the register rings. First-party cart data lets you mark it to market instead. The number that comes out is more complete, better timed, and, for high-volume stores, steadier from day to day.

Marked vs booked
2.1×
A store’s total funnel value versus realized revenue alone
Tighter signal
30%
How much less Total ROAS strays from its own average, high-volume store
The lag ignored
63 days
95th percentile from first product view to purchase

First-party, server-side data · six live stores · 92 days

Abstract

Stop marking your funnel at zero

Every ad platform reports revenue the way a cash-basis ledger does: it exists the instant a checkout completes, and not one second before. That convention is not wrong so much as incomplete. It values a funnel full of active carts at zero until those carts convert, which is the same error a trader would make marking an open position at zero until the day it closes.

Channel metrics are essential for tuning a campaign inside a single platform. What they cannot tell you is what a store is worth right now, because most of that worth is sitting in carts that have not checked out yet. A merchant lives or dies by that number, and realized-only accounting hides it.

This paper proposes marking the funnel to market. Edgemesh sees every active cart on a merchant's site through first-party server-side data, together with the first-party probability that each cart converts. Multiply cart value by that probability, sum across the open funnel, and the result is unrealized revenue: the expected value of carts that have already been created but not yet checked out. Add it to realized revenue and you get total revenue, the mark-to-market value of the funnel. Divide that by the same ad spend and you get Total Return on Ad Spend (Total ROAS), which is simply Realized ROAS plus Unrealized ROAS.

Every number in this paper comes from live production data on six paying stores over the same 92 days. Nothing is modeled, sampled or illustrative. Three findings hold:

  • Unrealized revenue is large. For one store it runs 1.10 times realized revenue, so a realized-only view throws away more than half the picture.

  • The mark is disciplined, not wishful. It is probability-weighted, roughly a quarter the size of the merchandise value sitting in carts that never checked out, and it ranges from 0.78 to 1.60 times realized across the six stores, moving in step with how fast each store's carts convert.

  • The total is better timed, and steadier where the cart pool is deep. It books value on the day the cart was built rather than the day it happened to close. For the three highest-volume stores it strays less from its own average and swings 11 to 13 percent less from one day to the next.

Bottom line for the busy reader: stop judging yesterday's ads by yesterday's checkouts. Mark the funnel to market, steer on Total ROAS, and let realized dollars confirm what the mark already told you.

Section 1

What everyone measures, and the day it lies

An ad platform tells you yesterday returned some multiple on spend. Read the fine print on what it is counting: carts that completed checkout yesterday, some of them built days earlier, and nothing at all about the far larger pool of carts built yesterday that will close later. Realized Return on Ad Spend (Realized ROAS) is a cash-basis number wearing the costume of a performance metric. It feels rigorous because a completed order is real money. It is also one of the noisiest, most lagged signals in the funnel, and teams reallocate budget on it all the time.

Two failures follow:

  • Realized ROAS is misattributed in time. Value is booked on the checkout date, not the day the cart was built. When a cart built on Sunday checks out on Wednesday, Realized ROAS punishes Sunday's ads and credits Wednesday's. Budgets then chase the wrong day. This failure is universal.

  • Realized ROAS is jumpy, for most stores. Realized ROAS for one store in our set swung across a 4.9-fold range over the window and moved an average of 20 percent from one day to the next. Across all six stores that daily move ran from 13 percent to 45 percent. No store's advertising actually changed that much overnight. The metric did.

The obvious objection deserves a direct answer up front. Is unrealized revenue just a softer number that flatters the ads? No. Sections 3 and 6 show that it is probability-weighted, roughly a quarter the size of the merchandise value left sitting in carts that never checked out, and specific to each store's real behavior. It is a mark, not a thumb on the scale.

Section 2

The reframe: mark-to-market for the funnel

Borrow the idea from finance: a trading book has realized profit and loss, the positions you have closed, and unrealized profit and loss, the current mark on positions still open. Report only the realized side and any book looks wildly volatile day to day and hides most of its actual value. No desk runs that way. But ecommerce does.

A funnel is a book of open positions. Each active cart is a position with a value, the cart total, and a probability of closing, the likelihood that cart will convert. The primitives this paper works in:

  • Realized revenue. Completed checkouts. What everyone already counts.

  • Unrealized revenue. For every cart that has not checked out, the cart value times its conversion probability. In other words, the probability-weighted expected value of the open funnel, not to be confused with the full value of the carts sitting in it.

  • Total revenue. Realized plus unrealized. The mark-to-market value of the funnel.

  • Total ROAS. The same three applied to ad spend, giving Realized ROAS, Unrealized ROAS, and a Total ROAS that is the sum of the two.

The move only works on first-party ground, and it is worth being precise about why, because the usual shorthand overstates it. An ad platform's pixel does fire an add-to-cart event, and platforms do report add-to-cart counts. What a pixel delivers is a stream of events it happened to observe, credited to that platform's own ads inside that platform's own attribution window. What marking the funnel requires is different: the current state of the whole cart book. Which carts are open right now, what each one is worth today, whether it has been added to or emptied since, and how likely that particular cart is to close. No platform reports that, because no platform is trying to. Server-side event APIs do not close the gap either. They make delivery of those events more reliable, which is what they are for, but what arrives is still a stream of events you chose to send, scoped to that platform's own attribution, rather than the standing state of the book.

Marking the funnel to market is therefore not a clever way to read platform data. It is a thing you can only do when you own the cart-level signal, server-side, for every cart on the site.

Section 3

The measure, defined precisely

Unrealized revenue is a probability-weighted sum over open carts, not a count of unconverted carts at full value. That distinction is the whole reason the number is trustworthy, so start with the arithmetic in miniature.

Picture a hundred carts, each holding $100, so $10,000 of merchandise is sitting in the funnel. Suppose the first-party history for carts of that shape says 20 percent of them convert. The expected value of that book is 0.20 × 100 × $100, which is $2,000. It is not $10,000. The $10,000 is what a merchant sees on an abandoned-cart report; the $2,000 is what the funnel is actually worth. Unrealized revenue is the second number.

Now the same arithmetic on real data. Store A carries roughly a $457 average order value. Over the window, the merchandise value of every cart built on the site that did not go on to check out comes to about 4.1 times its realized revenue. If unrealized revenue were that raw total, it would be a fantasy number. Instead the probability-weighted mark comes in at 1.10 times realized. The model is marking each open cart down to its expected value, discarding roughly three quarters of the raw unconverted dollars as carts that will not come back.

Where the probability comes from: first-party behavioral history for carts of that shape, drawn from value tier, item count, whether the shopper is new or returning, and prior session history on the site.

Store A's current mark on the window, stated as multiples of realized revenue:

Component × realized
Realized revenue (baseline) 1.00
Merchandise value of carts that did not check out (the naive number) ≈ 4.1
Unrealized revenue (probability-weighted mark) 1.10
Combined, mark-to-market value 2.10

The mark is the unconverted-cart total, weighted down

Store A, the naive cart total vs the probability-weighted mark

0×1×2×3×4×5×Realized revenue(baseline)1.00×Full value of carts thatdid not check out≈ 4.1× naiveUnrealized revenue(probability-weighted mark)1.10×Combined,mark-to-market value2.10×Multiple of realized revenue · Store A · 92 days
Figure 1. The mark is not the raw cart total. It is that total weighted down to expected value. Store A, 92 days, live first-party server-side data.

Read the last row: at any moment Store A is carrying expected future revenue slightly larger than everything it has booked in the period. A realized-only dashboard shows the merchant less than half of what the funnel is actually worth.

Section 4

Total ROAS: a steadier signal, where the cart pool is deep enough to steady it

Marking the funnel to market produces a steadier daily signal for stores with high, continuous cart-building.

Two different things get called steadiness:

  • Spread is how far a series strays from its own average over the window, measured as the standard deviation divided by the mean. It answers: how wide is the band this metric lives in?
  • Swing is how much the series moves from one day to the next, measured as the average day-over-day change. It answers: how violently does this metric lurch between consecutive mornings?

Start with spread, and with the clean case. Over 92 days Store A's Realized ROAS runs from its low to its high across a 4.9-fold range, while its Total ROAS covers 3.6-fold. Comparing the two directly would flatter the total, because Total ROAS runs at roughly twice the level of Realized ROAS and a bigger number naturally moves in bigger absolute steps. So put both on the same footing by dividing each series by its own average. Realized then sits ±41 percent from its average and total sits ±29 percent, which makes the realized band about 40 percent wider.

On the same footing, realized spreads 40 percent wider

Store A, daily ROAS with each series divided by its own 92-day average

Realized ROASTotal ROAS
0.5×1×1.5×2×2.5×May 1May 15Jun 1Jun 15Jul 1Jul 15±41%Realized±29%Total1× = each series’ own 92-day averageSpread
Figure 2. Store A, daily Realized ROAS and Total ROAS, each divided by its own 92-day average so the two compare on the same footing. Same spend, same store. The panel at right shows how far each series strays from its own average: ±41 percent for realized, ±29 percent for total.

Now switch to swing, and run it across all six stores. This is a different statistic from Figure 2, not a restatement of it, and the two do not have to agree.

Which way the mark moves the daily signal

Day-over-day swing, Realized versus Total ROAS, six stores, 92 days

Realized ROASTotal ROAS
0%10%20%30%40%50%60%B · $80 avg cart13% steadierA · $457 avg cart11% steadierC · $263 avg cart11% steadierD · $302 avg cartNo changeE · $355 avg cart24% rougherF · $1,366 avg cart38% rougherAverage day-over-day swing in daily ROAS (lower is steadier)
Figure 3. Day-over-day swing in daily ROAS, six stores. Each row runs from the store's Realized ROAS swing to its Total ROAS swing, so the direction of the segment is the finding. Three stores get steadier, one does not move, and two get rougher. Anything inside 3 percent either way is treated as no change.

For the three highest-volume stores the daily swing calms by 11 to 13 percent. Store D does not move either way. For the two low-frequency stores it goes the other way, and the reason matters more than the exception.

By low-frequency we mean a store that takes few orders a day, each one large: Store F averages a $1,366 cart, Store E $355 on thin daily volume. On any given day only a handful of carts are open, so the mark is computed over a small pool, and one large cart entering or leaving that pool moves the daily total noticeably. Worse, that lumpiness is added on top of an already lumpy realized series rather than averaging against it. The mark is only ever as steady as the cart pool underneath it. High-frequency demand averages out; low-frequency demand does not.

This is also the answer to a reasonable objection, that a slower store ought to benefit most from a metric designed to capture value before it settles. It would, if the metric were being asked to smooth. It is not. Unrealized revenue is a measurement of what is open right now, and when what is open right now is four carts, the measurement is properly jumpy. A metric that stayed calm through that would be hiding something.

The verdict, without the marketing gloss: Total ROAS is a better daily steering signal for the large-catalog, high-traffic stores that live or die on daily budget decisions, and a truer but not necessarily calmer signal for low-frequency, high-value stores. Either way, it fixes the timing.

Section 5

Lag: the Sunday cart that Wednesday takes credit for

Carts do not check out the day they are built. For Store A, the time from first cart activity to completed purchase averaged about one day, but the 95th percentile reached three weeks. Measured from first product view, the average ran to roughly six days and the 95th percentile crossed sixty. New shoppers lagged far longer than returning ones, about one day versus a fifth of a day from cart to purchase.

The Sunday cart that Wednesday takes credit for

Store A, days from each funnel stage to completed purchase

Average95th percentile
010203040506070First product view→ purchaseAverage 6.1 days95th percentile 63 daysCart built→ purchaseAverage 1.1 days95th percentile 21 daysCheckout started→ purchaseAverage 0.5 days95th percentile 14 daysDays to completed purchase
Figure 4. Store A, days from each funnel stage to completed purchase. Read each pair top to bottom: the average is days, the 95th percentile is weeks. A meaningful share of purchases lag far behind the cart that produced them.

Realized accounting books all of that value on the checkout date. So a heavy Sunday of cart-building looks weak on Sunday and silently inflates whatever day the sale eventually lands. Unrealized revenue fixes the timing: the value is marked on the day the cart is built, when the ad did its work, and simply converts from unrealized to realized when the sale closes. The dollar is counted once, on the day it was earned. This correction applies to every store in the set, not just the ones where the daily signal also gets steadier.

The practical damage of relying exclusively on Realized ROAS is a feedback loop: a media buyer sees a soft Sunday, cuts Sunday spend, and never learns that Sunday was building the carts that closed all week. Realized-by-day budgeting optimizes against an accounting artifact.

Section 6

Does the mark hold up? The calibration evidence

The fair challenge to any unrealized number: it is a forecast, and a forecast nobody checks is just marketing. Here is what six stores of live production data actually show, and, at the end, the one check we cannot yet run.

First, what counts as an open cart. There is no abandonment timer. A cart contributes to unrealized revenue if it was built inside the reporting window and had not completed checkout by the end of it, which means the window itself is the boundary rather than some fixed number of idle days. The shorter the window, the larger unrealized revenue looks, because carts built near the end of it have not had time to close. Store A runs at 1.40 times realized over a trailing week, 1.18 times over a trailing month, and 1.10 times over the full 92 days. Every figure in this paper uses the same fixed 92-day window for all six stores, which is long enough that the great majority of carts in it have resolved one way or the other.

The mark is store-specific and tracks real behavior. Unrealized revenue as a multiple of realized ranges from 0.78 to 1.60 across the six stores. If it were an invented markup it would be a constant. It is not. The largest mark, 1.60 times, belongs to the store whose carts convert slowest, only 5 percent of cart value inside the window. The pattern is directional rather than perfectly ordered, but the endpoints are unambiguous: the biggest mark sits on the slowest-converting store, and the spread across stores is 2.1-fold.

The biggest mark sits on the slowest-converting store

Unrealized revenue as a multiple of realized, six stores, 92 days

0×0.5×1×1.5×1.10×A20% conv.1.06×B19% conv.1.27×D14% conv.0.78×C11% conv.1.01×E9% conv.1.60×F5% conv.Stores ordered by conversion of cart value · fastest → slowest
Figure 5. Unrealized revenue as a multiple of realized, six stores, ordered by how fast each store's cart value converts. The mark moves with real conversion behavior, not a fixed rule.

A second discipline check. The implied recovery rate, unrealized revenue divided by the merchandise value of carts that did not convert, stays inside a believable 8 to 27 percent band across six very different businesses. A naive full-cart-value number implies, by construction, that 100 percent of that demand comes back. The model is claiming that a modest, plausible slice of unconverted demand comes back, and claiming it in proportion to each store's real return behavior.

Store Avg cart Unrl / Rlz Implied recovery Realized conv. of cart value
A $457 1.10 27% 20%
B $80 1.06 26% 19%
C $263 0.78 9% 11%
D $302 1.27 20% 14%
E $355 1.01 10% 9%
F $1,366 1.60 8% 5%

Table 1. Calibration across six live stores. The mark scales with each store's real conversion and recovery behavior.

What this does not yet prove. Showing that the mark on a given day fully realizes into dollars over the following weeks requires cart-level cohort tracking: mark a day's open carts, then follow those exact carts forward and measure what share actually closed. The aggregate first-party metrics used here show the mark is disciplined, probability-weighted, and store-specific, which is strong evidence it is well-built. They stop short of a forward reconciliation.

Section 7

What it changes in the ad account

Measurement earns its keep only when it changes a decision. Managing to Total ROAS instead of Realized ROAS alone changes three:

  • Fewer whipsaw reallocations. For high-volume stores, budget rides a signal that strays less from its own average and swings 11 to 13 percent less per day, so the daily noise stops triggering daily overcorrection.

  • Credit lands on the right day and channel. Upper-funnel and weekend spend stop looking falsely weak, because the carts they build are marked when they are built.

  • New campaigns stop looking dead on arrival. A campaign whose carts have not had time to close is no longer judged only by the checkouts it has not produced yet.

The rule a media buyer should use: judge a day's spend by the mark-to-market value it created that day, then let realized dollars confirm it, rather than judging the day only by the sales that happened to settle inside it.

One caveat comes straight from the data in Section 4. If you run a low-frequency, high-value store, steer on total revenue across a rolling window rather than a single day, because one large cart will move any single day's mark.

Section 8

Why almost nobody runs it this way

If the total is more complete, better timed, and often steadier, why is realized-only the default across the entire industry? The honest answer is not inertia. It is that almost nobody can do this.

Marking the funnel to market needs two things, and ad platform reporting is built to supply neither, because it was built for a different job. The first is server-side visibility into the standing state of every active cart on the site, rather than a stream of events attributed to one platform's ads. The second is a conversion probability calibrated on that store's own behavior, which no platform computes, because no platform is trying to price your open funnel. Add-to-cart counts, which platforms do report and report accurately, answer a different question: how many of my ads produced a cart? That is a useful question. It is not the question of what the open book is worth today.

So the field defaulted to realized-only, not because it is the right measure but because it is the measure the available plumbing supports. The stores that can mark to market are the ones sitting on cart-level first-party data. Everyone else is estimating, and calling the estimate a fact.

Section 9

Conclusion

A completed checkout is not when the revenue was created. It is only when it settled.

Realized ROAS is the funnel marked at zero until the register rings. It credits the wrong day for every store, and for high-volume stores it is needlessly noisy on top of that.

Marking the funnel to market, and steering on Total ROAS, gives a fuller and correctly-timed number, steadier wherever the cart pool is deep enough to steady it, and it is only possible on first-party ground. Realized revenue tells you what already settled. Total ROAS tells you what you have actually earned.

About the data. Every figure and table in this paper is drawn live from Edgemesh Insights across six paying Performance stores over a single 92-day window, May 1 to July 31, 2026, using the conversion and attribution funnels. Nothing is modeled, sampled, or illustrative, and only the customer names are removed. Stores are labeled A through F and identified by average order value: $457, $80, $263, $302, $355 and $1,366. Realized revenue is completed-checkout value. Unrealized revenue is the probability-weighted value of open carts, using first-party conversion likelihoods; a cart counts as open if it was built inside the window and had not completed checkout by the end of it. Total ROAS is total revenue over the same ad spend. Two candidate stores were excluded for data quality: one with negligible tracked spend and one with broken conversion attribution. Spread is the standard deviation of daily ROAS divided by its mean; swing is the mean absolute day-over-day change. The steadying result holds for high-frequency stores and reverses for low-frequency, high-value stores, as Section 4 states plainly. The forward reconciliation of marked value against eventually-realized value, described in Section 6, requires cart-level cohort tracking not exposed in the aggregate metrics used here, and is the acknowledged limit of this draft.