{
  "slug": "attribution-window-shift-calculator",
  "title": "Attribution Window Shift Calculator",
  "heading": "Attribution Window Shift Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/attribution-window-shift-calculator",
  "summary": "See how much your reported CAC and ROAS change when you shorten or lengthen the attribution window.",
  "description": "Ad platforms let you choose attribution windows like 1-day click, 7-day click, or 28-day click-and-view, and the same campaign can look wildly different depending on which one you pick — a channel showing 3.0 ROAS on a 28-day window might show 1.4 ROAS on a 7-day window with no change in actual performance. This calculator estimates how conversions and revenue shift when you move between windows using a decay curve: most conversion credit front-loads in the first few days after click, then tails off with diminishing marginal conversions per additional day. Enter your current window's reported conversions and the assumed share of conversions that happen within the first day versus trickling in later, and it estimates what you'd see on a shorter or longer window, along with the resulting CAC and ROAS shift. This matters most when comparing performance across platforms that default to different windows, or when a platform quietly changes its default and your reported numbers jump without any real change in what happened. Always compare channels on the same window, and treat the CAC/ROAS spread across windows as a rough bound on attribution uncertainty, not a precise number.",
  "formula": "Conversions(window) ≈ total × (1 − e^(−decay × days)); shifted CAC = spend ÷ conversions(new window).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=attribution-window-shift-calculator",
  "inputs": [
    {
      "id": "spend",
      "label": "Campaign spend",
      "kind": "number",
      "hint": null,
      "default": 25000,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "currentWindowDays",
      "label": "Current attribution window",
      "kind": "number",
      "hint": null,
      "default": 7,
      "unit": "days",
      "min": 1,
      "max": 90
    },
    {
      "id": "currentConversions",
      "label": "Conversions reported at current window",
      "kind": "number",
      "hint": null,
      "default": 500,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "newWindowDays",
      "label": "New attribution window to compare",
      "kind": "number",
      "hint": null,
      "default": 1,
      "unit": "days",
      "min": 1,
      "max": 90
    },
    {
      "id": "aov",
      "label": "Average order value",
      "kind": "number",
      "hint": null,
      "default": 90,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "decayRate",
      "label": "Conversion decay rate (higher = faster front-loading)",
      "kind": "number",
      "hint": null,
      "default": 0.35,
      "unit": null,
      "min": 0.05,
      "max": 2
    }
  ],
  "outputs": [
    {
      "id": "newConversions",
      "label": "Estimated conversions at new window",
      "format": "number",
      "hint": null,
      "primary": true
    },
    {
      "id": "newCac",
      "label": "CAC at new window",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "newRoas",
      "label": "ROAS at new window",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "currentRoas",
      "label": "ROAS at current window",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "cacShiftPct",
      "label": "CAC change moving to new window",
      "format": "percent",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Campaign spend: 25000 $",
      "Current attribution window: 7 days",
      "Conversions reported at current window: 500",
      "New attribution window to compare: 1 days",
      "Average order value: 90 $",
      "Conversion decay rate (higher = faster front-loading): 0.35"
    ],
    "outputs": [
      "Estimated conversions at new window: 162",
      "CAC at new window: $154.70",
      "ROAS at new window: 0.58",
      "ROAS at current window: 1.8",
      "CAC change moving to new window: 209.4%"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter campaign spend ($).",
      "Enter current attribution window (days).",
      "Enter conversions reported at current window.",
      "Enter new attribution window to compare (days).",
      "Enter average order value ($).",
      "Enter conversion decay rate (higher = faster front-loading).",
      "Read your estimated conversions at new window on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "spend": 15000,
        "currentWindowDays": 4,
        "currentConversions": 300,
        "newWindowDays": 1,
        "aov": 55,
        "decayRate": 0.21
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "spend": 25000,
        "currentWindowDays": 7,
        "currentConversions": 500,
        "newWindowDays": 1,
        "aov": 90,
        "decayRate": 0.35
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "spend": 40000,
        "currentWindowDays": 11,
        "currentConversions": 800,
        "newWindowDays": 2,
        "aov": 145,
        "decayRate": 0.5599999999999999
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "Why does shortening the attribution window always raise reported CAC?",
      "a": "A shorter window credits fewer of the conversions that actually happened, because some people click an ad and buy several days later. Fewer counted conversions for the same spend mechanically raises CAC and lowers ROAS, even though nothing about actual performance changed."
    },
    {
      "q": "What decay rate should I use?",
      "a": "Impulse, low-consideration purchases (fast fashion, snacks, mobile games) decay fast — try 0.5-1.0. Considered purchases (furniture, software, big-ticket retail) decay slower, try 0.15-0.3, since people research over days or weeks before converting."
    },
    {
      "q": "How do I pick which window to actually report on?",
      "a": "Pick one window and use it consistently across all channels for internal comparison, ideally matching your typical sales cycle length. When comparing platforms with different default windows, normalize them to the same window using this kind of estimate before drawing conclusions about which channel performs better."
    },
    {
      "q": "Is this a substitute for a real attribution model?",
      "a": "No — this is a rough directional estimate for understanding reporting artifacts, not a replacement for multi-touch attribution or incrementality testing, which measure causal impact rather than just re-timing the same claimed conversions."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/incrementality-lift-calculator",
    "https://www.revenuelab.fyi/toolbox/mer-roas-breakeven-calculator"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Attribution Window Shift Calculator (https://www.revenuelab.fyi/toolbox/attribution-window-shift-calculator)"
}