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.
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.