Attribution Windows
Configure how far back Atribu looks when attributing conversions to touchpoints
Attribution windows define the maximum time between a marketing touchpoint (like an ad click) and a conversion (like a payment) for the touchpoint to receive credit.
Default windows
| Window | Default | Range | What it controls |
|---|---|---|---|
| Click window | 30 days | 1-365 days | How long after an ad click can a conversion be attributed |
| View-through window | 24 hours | 1-168 hours | How long after seeing an ad (without clicking) can a conversion be attributed |
| First-touch window | 90 days | 1-365 days | Maximum lookback period for the first-touch attribution model |
How windows work
When a customer converts (e.g., makes a payment), Atribu looks back in time for touchpoints:
- If the customer clicked an ad within the click window (default 30 days), the touchpoint gets credit
- If the customer saw an ad within the view-through window (default 24 hours) but didn't click, the impression may get credit
- For first-touch attribution, Atribu looks as far back as the first-touch window (default 90 days) to find the original discovery touchpoint
Example
Your click window is 30 days. A customer clicks your Facebook ad on March 1, browses your site, leaves, and comes back on March 25 to buy. The purchase IS attributed to the Facebook ad (25 days < 30-day window). If they buy on April 5, it's NOT attributed (35 days > 30-day window).
Configuring windows
Go to Settings > General (or Settings > Tracking)
Find the Attribution Windows section
Adjust the values for your business:
- Short sales cycle (e-commerce): 7-14 day click window
- Medium sales cycle (SaaS, services): 30 day click window (default)
- Long sales cycle (B2B, high-ticket): 60-90 day click window
Click Save. Changes apply to future attribution calculations.
Changing windows affects ROAS
Wider windows = more conversions attributed = higher apparent ROAS. Narrower windows = fewer attributions = more conservative ROAS. Choose based on your actual sales cycle, not the number you want to see.
Best practices
- Match your sales cycle: If most customers buy within 2 weeks, a 14-day window is more accurate than 90 days
- Be consistent: Changing windows frequently makes period-over-period comparisons unreliable
- Use view-through conservatively: A 24-hour view-through window means someone who saw (but didn't click) your ad yesterday gets credit if they buy today. This can inflate attribution.
Recommendation from your sales cycle
For every customer whose first payment landed in the last 12 months, Atribu measures how many days passed from their first ad to that payment. With 10 or more measured customers it recommends:
- First touch: a window covering 80% of those customers (at most 365 days).
- Click: a window covering the median (at most 90 days). A year-long click window would let an old click take credit from the click that closed the sale; the long tail is the first-touch window's job.
The recommendation never shortens a window. It shows above the fields with an
«Apply recommendation» button, which saves exactly like «Save» and recomputes
your numbers. GET /api/v1/profile/attribution-settings/recommendation returns
the same measurement (scope analytics:read).
Cash window
For high-ticket sales that close long after the ad click, cash_window_days
overrides the click/first-touch windows for cash conversions only. Leads
and appointments always use the normal windows above; only a cash
conversion checks this wider window when it is set. Leave it unset (null,
the default) to use the normal windows for cash too.
API
GET / PATCH /api/v1/profile/attribution-settings read and write the same
four windows this page configures. Scope: analytics:read for the GET,
goals:write for the PATCH.
Get the current windows
GET /api/v1/profile/attribution-settingscurl -H "Authorization: Bearer atb_live_YOUR_KEY" \
"https://www.atribu.app/api/v1/profile/attribution-settings"import { AtribuClient } from "@atribu/node";
const client = new AtribuClient({ apiKey: "atb_live_YOUR_KEY" });
const settings = await client.profile.attributionSettings();{
"data": {
"click_window_days": 30,
"view_window_hours": 24,
"first_touch_window_days": 90,
"cash_window_days": null
},
"meta": { "profile_id": "..." }
}A profile with no attribution-settings row yet returns these same defaults — there is nothing to configure before your first change.
Update the windows
PATCH /api/v1/profile/attribution-settingsA partial update — send only the fields you want to change; an omitted
key is left untouched. Send "cash_window_days": null to clear the override.
Every successful call queues a full-profile attribution replay, since a
window change redefines which touches attach to which conversion
retroactively — reported back as replay_queued (and replay_error when the
replay could not be queued; the setting itself is still saved).
curl -X PATCH \
-H "Authorization: Bearer atb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"click_window_days": 14}' \
"https://www.atribu.app/api/v1/profile/attribution-settings"const result = await client.profile.updateAttributionSettings({
click_window_days: 14,
});{
"data": {
"click_window_days": 14,
"view_window_hours": 24,
"first_touch_window_days": 90,
"cash_window_days": null,
"replay_queued": true,
"replay_error": null
},
"meta": { "profile_id": "..." }
}An out-of-range value answers 400 invalid_parameter, naming the field:
{
"error": {
"code": "invalid_parameter",
"message": "click_window_days must be an integer between 1 and 365",
"status": 400,
"request_id": "..."
}
}Session/enrichment settings are not here
This endpoint publishes only the four windows above. Session timeout, geo/
device enrichment, channel classification, and export destinations are
configured in Settings > Tracking and have no /api/v1 surface yet.