---
name: configure-attribution-settings
description: >-
  Sets the per-ad-set attribution window via mads_create_adset/mads_update_adset, how long
  after a click or view Meta credits a conversion to an ad, plus the separate reporting window
  exposed by mads_run_insights's action_attribution_windows. Currently-supported: 1-day
  click, 7-day click, 1-day view (default 7-day click + 1-day view); the 28-day windows were
  removed after iOS 14 in 2021, and per this repo's ground truth the 7-day VIEW window is ALSO
  gone as of January 2026, reject 7-day-view and any 28-day window as invalid. Covers matching
  the window to the real sales cycle, the over-crediting risk of view-through, and the
  interaction with Aggregated Event Measurement's one-event-per-opted-out-user counting. THIS IS
  TIME-SENSITIVE: verify current values in Ads Manager before trusting any window named here.
  Ends at a window matched to the buying cycle, whether that credit is real incremental impact
  is run-incrementality-and-lift-tests, not this skill.
---
# Configure Attribution Settings

## Purpose
Attribution setting is per ad set, not account-wide, and it decides how long after a click or a
view Meta will still credit a conversion back to that ad. Get it wrong and every downstream
number, ROAS, CPA, which campaigns look like they're working, is measured on the wrong clock.
This skill picks the window against the real sales cycle and keeps the choice honest against
Meta's currently-supported set, which has already shrunk once (2021) and, per this repo's ground
truth, shrunk again in January 2026.

## When to run
- Standing up a new ad set where the default window may not fit the sales cycle (considered B2B
  purchase vs impulse D2C).
- Reported ROAS looks inflated and a view-through window is suspected of over-crediting passive
  impressions.
- Comparing ad sets or campaigns that use inconsistent attribution windows.
- A stale runbook, template, or stakeholder request references a removed window (28-day, or
  7-day-view) and needs correcting.

## When NOT to run
- The question is whether attributed conversions are truly incremental, not which window to use
  → `run-incrementality-and-lift-tests`.
- No conversion signal exists yet to attribute anything to → `set-up-pixel-and-standard-events` /
  `implement-conversions-api` first.
- The open question is AEM domain verification or event priority, not the click/view window →
  `configure-aggregated-event-measurement`.

## Prerequisites
- Existing or new ad set(s) to configure (`mads_create_adset` / `mads_update_adset`).
- The business's real sales-cycle pattern (impulse vs considered) from the client or historical
  data.
- Current Meta-supported attribution windows confirmed in Ads Manager, do not trust a hardcoded
  list, including this one, without checking.

## Procedure
1. **Confirm currently-supported windows before doing anything else.** HUMAN STEP: check Ads
   Manager's ad-set attribution setting UI. Working assumption: {1-day click, 7-day click, 1-day
   view} only. If the UI shows something different, trust the UI over this or any other document.
2. **Characterize the sales cycle.** Impulse/low-consideration (D2C under roughly $50,
   single-session purchase) → a shorter click window is honest. Considered purchase (B2B,
   high-ticket, multi-session research) → 7-day click captures the realistic path; 1-day view adds
   light view-through credit without a longer window's inflation risk.
3. **Set the ad-set-level attribution setting.** `mads_create_adset` (new) or `mads_update_adset`
   (existing) with the chosen window combination. Default to 7-day click + 1-day view unless step
   2 gives a specific reason to narrow it (e.g., 1-day click only, to strip view-through for a
   channel-conflict audit).
4. **Reject removed windows on sight.** IF a request or legacy config specifies 28-day click,
   28-day view, or 7-day view THEN correct it to the nearest supported window and flag the
   change, these are gone, not deprecated-but-working.
5. **Pull the reporting comparison separately.** `mads_run_insights` with
   `action_attribution_windows` set to the windows being compared, polled to completion via
   `mads_get_insights`, or `mads_get_insights` for a small immediate pull, this
   reporting lens is independent of the ad set's delivery setting from step 3.
6. **Keep windows consistent across ad sets being compared.** IF two ad sets use different
   attribution windows THEN their ROAS/CPA are not directly comparable, align windows before
   drawing conclusions, or normalize by pulling both with the same `action_attribution_windows`.
7. **Re-check after any Meta policy change.** HUMAN STEP: attribution window support has changed
   before and, per this repo's ground truth, changed again, treat this as a setting to
   periodically re-verify, not a one-time decision.

## Decision rules
- IF the sales cycle is impulse/short THEN the default (7-day click + 1-day view) is fine, or
  narrow to 1-day click if view-through inflation is a live concern.
- IF the sales cycle is long/considered THEN keep 7-day click and check via step 5 whether 1-day
  view materially changes the read before trusting it.
- IF a stakeholder asks for 28-day or 7-day-view attribution THEN explain it no longer exists and
  offer the nearest supported window plus `run-incrementality-and-lift-tests` for the underlying
  "how much is this channel really worth" question.
- IF retargeting ad sets show suspiciously high ROAS THEN check the view-through share of credited
  conversions first, the classic over-credit pattern.
- IF comparing ad sets THEN confirm identical `action_attribution_windows` before concluding one
  beats the other.
- **Done means:** every ad set's attribution window is a currently-supported value, chosen
  deliberately against the sales cycle, and any cross-ad-set comparison uses a matched
  `action_attribution_windows`.

## Common failure modes
- Copy-pasting an old runbook's "28-day click" setting into a new build, it will not apply.
- Trusting a long view-through window on a retargeting-heavy account and concluding the channel
  is more incremental than it is.
- Comparing two campaigns' ROAS when one uses 1-day click and the other 7-day click.
- Testing `mads_run_insights`/`mads_get_insights` against a sandbox ad account, which
  returns no insights data at all, verify window behavior on a real account, not a sandbox.
- Treating this skill's window list as permanently fixed instead of re-verifying, Meta has
  changed supported windows before, and again as of January 2026 per this repo's ground truth.
- Confusing the ad-set delivery attribution setting with the reporting
  `action_attribution_windows` and assuming changing one changes the other.

## Related skills
- Prerequisite: `set-up-pixel-and-standard-events`, `implement-conversions-api` (signal must exist
  to attribute).
- Run after, for the real question: `run-incrementality-and-lift-tests` (attribution is not
  incrementality).
- Interacts with: `configure-aggregated-event-measurement` (AEM's one-event-per-opted-out-user
  counting sits alongside, not instead of, the attribution window).
- Related: `select-campaign-objective` (the optimization event chosen earlier shapes which window
  matters).
