About this series. Which customers are worth paying for? Worked through on two years of real order history from a UK online retailer (UCI Online Retail II, an open dataset). Part 1 showed first-order value identifies a minority of the customers who matter; part 2 showed the picture clarifies by 90 days. This part asks whether that is any use to an ad platform — and the answer changed what we would recommend.
Value-based bidding is simple in principle. Your ad platform optimises toward whatever conversion value you give it. Give it first-order revenue and it finds people who place large first orders; give it predicted lifetime value and it finds people who stay. The mechanism is well supported and not technically hard.
The difficulty is timing, and it is worth being precise about it because we got it wrong first.
Our first draft of this argument claimed Google Ads cannot bid on a value that arrives late. That is not right. Checking Google's own documentation:
Smart Bidding does use late uploads. Standard reporting and Smart Bidding “operate without this restriction and retroactively record and optimize on uploaded offline conversions”, bounded by the conversion action's window (About attribution reports).
But the click identifier expires. “We only keep the GCLID for 90 days” — after that the upload is rejected outright (Troubleshoot offline conversion imports).
And attribution reporting has a tighter bound. “The attribution reports modeling engine only processes conversions that occurred within the last 7 days”; later uploads are bypassed by those reports, though they still reach bidding.
So the real constraint is not that bidding ignores late values — it is that the click comes before the order. A customer clicks, buys three days later, and a value computed 90 days after that order reaches an identifier 93 days old. It is not rejected because it is unhelpful; it is rejected because there is nothing left to attach it to. Anything past seven days also disappears from your attribution reports, so the numbers you bid on and the numbers you report on diverge.
Which makes the practical question: how good can a forecast be in the first days, while it can still be uploaded comfortably?
| Available on… | Method | Top decile found | Revenue captured |
|---|---|---|---|
| Day 0 | Sort by first-order value | 46% | 37.0% |
| Day 0 | Model on the first order | 46% | 37.2% |
| Day 7 | Model | 48% | 37.3% |
| Day 30 | Model | 46% | 37.6% |
| Day 90 | Sort by 90-day spend | 62% | 41.2% |
With about 82 customers in the test top decile, two percentage points is under two customers. At every moment that fits comfortably inside the upload window, a trained model matched a plain sort. The 16-point jump appears only at 90 days, and it comes from a fact that did not exist on day seven: whether the customer came back.
That is the whole lesson. No model recovers information the business has not generated yet. “Predicted lifetime value” is marketed as a modelling problem; in this dataset it was a waiting problem, and the waiting is exactly what the bidding window cannot accommodate.
Four BigQuery ML linear models, one per horizon, each given only what was knowable at that point. Trained on 2,135 customers acquired December 2009 to March 2010; tested on 816 acquired April to June, so no customer appears in both. The label is log first-year revenue, because the raw distribution is dominated by a handful of wholesale accounts.
CREATE OR REPLACE MODEL `recsys.uci_clv_d0`
OPTIONS (model_type = 'LINEAR_REG', input_label_cols = ['label'], l2_reg = 1.0) AS
SELECT
d0_revenue, d0_lines, d0_units, country, -- everything known at the first order
LOG(GREATEST(value_365d, 1)) AS label
FROM `recsys.uci_clv_horizons`
WHERE split = 'train'
A boosted tree on the 90-day features reached 63% against the sort's 62%, so the finding is not an artefact of using a linear model. Evaluation is the same throughout: each method ranks the test customers, takes the top 10%, and we count how many of the true top 10% it contains.
Chen, D. (2012). Online Retail II [Dataset]. UCI Machine Learning Repository, doi:10.24432/C5CG6D, licensed CC BY 4.0. Upload limits quoted from Google Ads Help: About attribution reports and Troubleshoot offline conversion imports, both checked 12 October 2026. Google's product rules change; check them against your own account before building on them.
Next in the series: Google Analytics already predicts churn and purchase probability for free — when is that enough, and when does it structurally fail? Related: Can a new product inherit a similar product's recommendations? All articles.
Discover practical, scalable solutions tailored to your business priorities.