What is an attribution window? It is the time period after someone clicks or views an ad during which a resulting conversion still gets credited to that ad. Common defaults are 7-day-click and 1-day-view, meaning a purchase counts if it happens within 7 days of a click or 1 day of a view. Widen the window and your reported conversions, ROAS, and CPA all improve, even when nothing about the actual campaign changed.
What is an attribution window, in plain English?
Every ad platform has to answer one question before it can take credit for a sale: how long after the ad does a conversion still count? The attribution window is that rule, written as a number of days.
It comes in two flavors, and the difference matters more than most people realize.
- Click attribution. The conversion counts if the person clicked your ad first. A "7-day click" window credits any conversion that happens within 7 days of the click.
- View attribution. The conversion counts if the person just saw the ad without clicking. A "1-day view" window credits a conversion within 24 hours of an impression.
So when a platform reports a number like "7-day click, 1-day view," it is telling you exactly which conversions it decided to claim. Change that setting and the same campaign, run over the same week, will report a different number of sales. Nothing in reality moved. The accounting rule moved.
You will also hear this called a lookback window. Same concept, viewed from the conversion's side of the timeline: when a sale happens, the platform looks back over the window length to find an ad interaction it can attribute the sale to.
Why attribution windows quietly run your reporting
Here is the part nobody puts in the dashboard: the attribution window is one of the biggest levers on every performance metric you care about, and it is usually set by default before you ever look at it.
Stretch the window from 1-day to 7-day click and you scoop up every slow buyer who needed a week to decide. Reported conversions go up. ROAS goes up. CPA goes down. The campaign looks like it got better. It did not. You just told the platform to count more of the sales that were already happening.
This is exactly why two platforms reporting on the same campaign almost never agree. Meta might claim a sale on a 7-day click window. Google Analytics might credit the same sale to organic search because the buyer's last click before purchase was a branded Google search. Both are "right" inside their own rules. They are just answering different questions. If you add up conversions across every platform's self-reported numbers, you will routinely count more conversions than you had, because every platform grabs credit for the same sale. This double-counting is one of the quiet drivers behind wasted Google Ads spend: you cannot trust a budget decision built on inflated math.
A short window under-counts and makes good campaigns look weak. A long window over-counts and makes mediocre campaigns look like heroes, partly by claiming sales that would have happened anyway. Neither tells you whether the ad caused the sale. That question belongs to incrementality, which is a different and harder thing to measure.
How the windows work across platforms
Defaults differ by platform, they shift over time, and they are the single most common reason two reports disagree. Always check the window before you trust the number.
| Platform | Typical default | What it credits |
|---|---|---|
| Meta (Facebook/Instagram) | 7-day click, 1-day view | Clicks within 7 days, views within 1 day |
| Google Ads | Data-driven, ~30-day click lookback | Fractional credit across clicks in the path |
| GA4 | Data-driven, 30-day acquisition lookback | Last non-direct or modeled credit |
| TikTok Ads | 7-day click, 1-day view (adjustable) | Clicks within 7 days, views within 1 day |
Two notes worth burning into memory:
View windows are shrinking. Meta removed its longer view windows and now defaults to a 1-day view, so impression-only conversions that used to count for days no longer do. If your reported conversions dropped without a real campaign change, a window adjustment is a prime suspect.
Click and view windows are not equal. A click is a stronger signal of intent than a passive impression, which is why platforms credit clicks for longer. When you compare campaigns, compare them on the same window. A campaign measured on 7-day click against one measured on 1-day click is not a fair fight. The same trap shows up whenever you stack channels side by side, which is half the reason Meta and Google numbers never reconcile cleanly.
Click vs view attribution, decided
If you only optimize to one, optimize to click attribution. A click is a deliberate action. A view is the platform saying "we showed this to someone who later bought, so we'll take the credit." View attribution inflates results the most and explains the most platform-versus-platform discrepancy. Useful as a signal, dangerous as your headline number.
How to set your attribution window without fooling yourself
There is no universally correct window. There is only a window that matches how your customers buy, applied consistently so you can trust the trend line. A few rules that hold up in practice:
- Match the window to your sales cycle. An impulse ecommerce purchase resolves in a day or two, so a long window mostly adds noise and self-flattery. A considered B2B or high-ticket purchase can take weeks, so a 1-day window will under-credit campaigns that are genuinely working. Pick the window that reflects your real time-to-purchase, not the one that produces the prettiest screenshot. This is why measurement for an ecommerce brand looks nothing like measurement for a long-cycle service business.
- Lock it before you read results. Decide the window first, then look at the data. If you keep nudging the window until the report looks good, you are not measuring performance, you are reverse-engineering a flattering number.
- Standardize across every platform. Pick one click window and apply it everywhere you can. Google's data-driven default and Meta's 7-day click are not comparable out of the box. Align them before you compare channels, or you will keep arguing about which platform is "winning" when the only thing that differs is the ruler.
- Document the change history. Every time someone edits a window, conversions, ROAS, and CPA shift overnight. Without a note, a future you (or a future agency) will mistake an accounting change for a performance change and act on it.
The goal is not the perfect window. It is one honest, consistent window so that when a number moves, it means the campaign moved.
How this connects to the rest of your measurement
Attribution windows do not live alone. They sit underneath almost every metric on your dashboard:
- They directly shape ROAS and CPA, because both are just conversions divided by spend, and the window decides how many conversions you get to count.
- They depend on signal quality. A server-side Conversion API feed gives the platform cleaner, more durable data to match conversions back to clicks inside the window, especially as browser tracking and third-party cookies decay.
- They do not answer whether the ad caused the sale. For that, you need incrementality testing, which measures lift against a holdout instead of trusting a lookback rule.
Get the window wrong and every downstream number inherits the error. That is why our Google Ads and SEO teams standardize windows across an account before we report a single result.
Confused about why your numbers don't add up? Good. That means you're paying attention.
Plenty of agencies pick whichever attribution window makes their report look best, then never mention it again. We standardize windows across your accounts, tell you which conversions are real versus double-counted, and build measurement that survives a CFO asking hard questions. SEO, PPC, and AI search, all measured honestly, all on pricing you can see.
Want a straight read on what your campaigns are driving? Email us at admin@moonsauceagency.com or book 30 minutes. No pressure, just a real conversation.
Related terms: ROAS · CPA · Incrementality · Conversion API