You’re the analytics lead for DoorDash’s growth marketing org (US + Canada), which spends $45M/month across paid search, paid social, affiliate, and influencer channels to drive first-time orders. The core business goal this quarter is to grow new customer acquisition while keeping blended CAC under control.
After an iOS privacy-related change (SKAdNetwork updates + stricter consent prompts) and a parallel shift in media mix, the CMO notices that last-click attribution reports show paid search driving +18% more “new customer conversions” month-over-month, while paid social appears to drop -22%. However, finance is skeptical because overall new customers (from backend order data) are only up +3%, and total spend is up +12%. The team is debating whether to reallocate $8M/month from paid social to paid search based on the last-click dashboard.
At the same time, your data science team has rolled out a data-driven attribution (DDA) model (Markov/Shapley-style multi-touch) that assigns fractional credit across touchpoints. The DDA dashboard tells a different story: paid social’s contribution is flat, and paid search’s incremental contribution is much smaller than last-click suggests.
Stakeholders (CMO, finance, channel managers) ask you to explain the difference between last-click and DDA in a way that leads to a decision: Should we move budget? If so, how much and with what guardrails?
| Source | What it contains | Notes |
|---|---|---|
ad_clicks | click_id, user_id, timestamp, channel, campaign_id, device_os, cost | Click-level; some iOS users missing user_id (consent) |
ad_impressions | impression_id, (sometimes) user_id, timestamp, channel, campaign_id | View-through is partially observable |
attribution_last_click | order_id, click_id, attributed_channel, attributed_campaign_id | Deterministic last-touch rules |
orders | order_id, user_id, order_timestamp, is_first_order, subtotal, fees, promo_cost | Source of truth for conversions |
user_identity_map | hashed_email, user_id, device_id, confidence_score | Cross-device stitching with uncertainty |
experiments | experiment_id, user_id, variant, start_ts, end_ts | Some geo holdouts exist |
Constraints: