Atribu
Settings

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

WindowDefaultRangeWhat it controls
Click window30 days1-365 daysHow long after an ad click can a conversion be attributed
View-through window24 hours1-168 hoursHow long after seeing an ad (without clicking) can a conversion be attributed
First-touch window90 days1-365 daysMaximum 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

Endpoint
GET /api/v1/profile/attribution-settings
cURL
curl -H "Authorization: Bearer atb_live_YOUR_KEY" \
  "https://www.atribu.app/api/v1/profile/attribution-settings"
JavaScript
import { AtribuClient } from "@atribu/node";

const client = new AtribuClient({ apiKey: "atb_live_YOUR_KEY" });
const settings = await client.profile.attributionSettings();
Response (200 OK)
{
  "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

Endpoint
PATCH /api/v1/profile/attribution-settings

A 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
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"
JavaScript
const result = await client.profile.updateAttributionSettings({
  click_window_days: 14,
});
Response (200 OK)
{
  "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:

Response (400 Bad Request)
{
  "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.

On this page