Attribution Models
5 attribution models: last touch, first touch, linear, time decay, and last non-direct
Atribu supports 5 attribution models that determine how conversion credit is distributed across marketing touchpoints. Each model answers a different question about your customer journey.
How attribution works
Models at a glance
Last Touch
All credit to the final touchpoint before conversion
First Touch
All credit to the first touchpoint that started the journey
Linear
Equal credit across every touchpoint in the path
Time Decay
More credit to touches closer to conversion
Last Non-Direct
Ignores Direct visits to find the real driver
Last Touch
All credit goes to the last touchpoint before conversion.
Best for: Understanding what closes deals and drives the final decision.
API value: last_touch
Ad Click -> Email -> Blog Visit -> [Purchase]
0% 0% 100%First Touch
All credit goes to the first touchpoint that started the customer journey.
Best for: Understanding what drives initial awareness and brings people in.
API value: first_touch
Ad Click -> Email -> Blog Visit -> [Purchase]
100% 0% 0%Linear
Credit distributed equally across all touchpoints in the conversion path.
Best for: Fair representation of every step in the customer journey.
API value: linear
Ad Click -> Email -> Blog Visit -> [Purchase]
33.3% 33.3% 33.3%Time Decay
More credit to touchpoints closer to the conversion. Uses exponential decay from first to last touch.
Best for: Short sales cycles where recent interactions matter most.
API value: time_decay
Ad Click -> Email -> Blog Visit -> [Purchase]
10% 30% 60%Last Non-Direct
All credit to the last touchpoint that isn't "Direct" traffic. If a customer clicks an ad, then later types your URL directly, the ad gets credit.
Best for: Removing noise from direct visits to identify the real marketing driver.
API value: last_non_direct
Ad Click -> Email -> Direct Visit -> [Purchase]
0% 100% 0% (ignored)Using models in the API
Pass the model parameter to any endpoint that supports attribution:
curl -H "Authorization: Bearer atb_live_YOUR_KEY" \
"https://www.atribu.app/api/v1/overview?date_from=2026-03-01&date_to=2026-03-25&model=time_decay"const response = await fetch(
"https://www.atribu.app/api/v1/overview?date_from=2026-03-01&date_to=2026-03-25&model=time_decay",
{
headers: {
Authorization: "Bearer atb_live_YOUR_KEY",
},
}
);
const data = await response.json();import requests
resp = requests.get(
"https://www.atribu.app/api/v1/overview",
headers={"Authorization": "Bearer atb_live_YOUR_KEY"},
params={
"date_from": "2026-03-01",
"date_to": "2026-03-25",
"model": "time_decay",
},
)
data = resp.json()Valid model values
last_touch (default) first_touch linear time_decay last_non_direct
Attribution windows
Attribution windows define how far back in time a touchpoint can receive credit for a conversion. These are configurable per profile.
| Window | Default | Description |
|---|---|---|
| Click window | 30 days | How long after a click can a conversion be attributed |
| View-through window | 24 hours | How long after an ad impression (no click) |
| First-touch window | 90 days | Maximum lookback for first-touch attribution |
Window behavior
If a customer clicks an ad on March 1 and converts on March 28, the click is within the default 30-day window and receives credit. If they convert on April 5 (35 days later), the click falls outside the window and is excluded from attribution.
Revenue and ROAS
ROAS uses cash revenue only
Only revenue_type = 'cash' (confirmed Stripe and MercadoPago payments) is used for ROAS calculations. GHL pipeline values (closed_won, appointment_booked) are tracked separately as pipeline value -- they are projections, not confirmed revenue. See Revenue Types for details.
The revenue and roas fields in API responses always reflect attributed cash revenue. Pipeline values appear in conversion counts but are never included in ROAS math.