
Join ad spend to orders on the click ID
A 5.0 ROAS on the dashboard is worth checking before you celebrate. If 40% of your spend never matched a campaign, the denominator is short and the number is wrong in the direction you like.

Most advice about budget pacing assumes a campaign has weeks to settle. In a ten-day window it doesn't, and several defaults that are harmless over a quarter become expensive over ten days.
Ad platforms need a certain volume of conversions before delivery stabilises, and a typical learning phase runs about seven days. In a normal month that finishes early and most of the spend runs afterwards.
In a ten-day window the arithmetic flips: most of your spend runs while the platform is still learning, which means less efficient delivery and less stable reported conversions. Two things follow.
Don't restructure campaigns for a short season, because every edit that resets learning takes a share of a window you can't extend. And don't judge performance in the first three days, because you're reading a learning phase rather than a campaign.
The campaigns that will carry a short window should have launched before it, by at least your typical learning period. That's a planning decision made weeks earlier, not a pacing decision you make now.
A daily budget spends against a delivery curve. If your buying concentrates in a few evening hours, a cap that exhausts by late afternoon means you're absent during the hours that matter.
This doesn't surface as a problem. The campaign shows full delivery and decent ROAS on the traffic it bought. It just bought the wrong traffic. Check it explicitly: what share of your daily spend lands before your selling hours begin.
Reallocating inside a short window requires confidence in your numbers within a single day. That's a much higher bar than a monthly reallocation, and it's exactly where stores fall back on platform figures, because their own reads are too slow.
The first and third are live in Flowfy today: revenue by source, attribution trends and conversions delivered per destination all read same-day. Joining ad spend from the ad accounts is on the roadmap and hasn't shipped, so the spend side currently comes from your ad accounts. See joining ad spend.
Front-load a little, and only for channels whose direction is established. The early days are the cheapest place to be wrong and the most expensive place to be absent.
Hold back a share for the last 48 hours. In gift categories a meaningful part of demand arrives at the end, and a budget fully consumed by day eight can't serve it.
Don't chase intraday swings. At this volume most hourly variance is noise, and reacting to it resets learning for nothing.
Cap the number of changes. One reallocation a day, at a fixed time. More than that and you're optimising against your own edits.
Should I use campaign budget optimisation in a short window? It concentrates spend faster, which helps when your read on direction is good and hurts when it isn't. Decide on how much you trust your same-day numbers.
What about the last day? Don't spend the whole remainder on it. Budget dumped on the final day buys the least considered traffic of the season.
Is a four-day season different? Sharper in the same direction. At four days, restructuring anything is off the table.
In a ten-day window you're mostly paying for the learning phase, so the campaigns that carry it have to exist beforehand. After that, pacing reduces to one question: are your numbers fast enough to reallocate on daily. If they aren't, make fewer decisions rather than faster ones.

A 5.0 ROAS on the dashboard is worth checking before you celebrate. If 40% of your spend never matched a campaign, the denominator is short and the number is wrong in the direction you like.

The browser pixel and server-side tracking complete each other. Without a shared event ID between them, the same order is counted twice and ROAS reads better than reality. Here's what each path sees, and where deduplication breaks.

Last 7 days, last 30 days, this month. All three were chosen for convenience, not for a question. Here's how to pick the range from the question you actually have.