2026-05-27 creators campaigns attribution issues

Status report for creator-campaign attribution: current measurement health, platform-source diagnosis, planned tests/freshness checks, and incident log.
Last update: 2026-06-11

TL;DR. Creator-campaign attribution is broken on all three platform source paths (iOS, Android, Web). Each broke for a different reason at a different date. The dashboard appears to show "creators stopped converting", but the measurement pipeline is broken — not the campaigns.
Reporter: Blanche (Marketing) · Dashboard owner: Caio Priszculnik.

Report scope

This is the creator-campaign attribution report. Use Marketing Campaign Attribution home for the pipeline map and source changelog; use this page for the creator-campaign business impact and platform-specific diagnosis.

Executive status

Creator-matched installs collapsed from the 2023 peak because attribution sources broke, not because creator campaigns stopped performing.

Platform-source diagnosis

iOS, Android, and Web each have a different source-path failure. Those source pages are parked until curated.

Tests & freshness

Planned: add a small quality panel per source/model with freshness SLA, last successful load, row-volume checks, null-rate checks, and dbt/Dataform test status.

Incident log

Use the Attribution incident log for postmortems/changelog entries. Each major issue should include symptom, impact, root cause, fix status, and a Mermaid impact graph on the detailed page.

The headline issue

Creator-campaign attribution started collapsing in 2024, not 2025. By event year (not post cohort), creator-matched installs across all platforms halved from 64,052 (2023)29,255 (2024)9,261 (2025). Each platform broke for a different reason at a different date — but the dashboard makes it look like the creator program stopped working. It didn't. The measurement did.

Event yearAndroidiOSWebTotalYoY
202210,88026,6125,68743,179
202333,71719,15111,18464,052peak
202415,1426,4507,66329,255−54%
20254,8692,8491,5439,261−68%

iOS is the biggest absolute loss (26,612 → 2,849 = −89% over 3 years) and the only platform with two distinct breaks:

PlatformBreak point(s)Diagnosis statusWhat we knowWhat we don't
iOS Nov 2023 + April 2025 + Nov 2025 All three confirmed Three issues stacked: (1) Nov–Dec 2023 — creator-matched share collapsed (~1,500/mo → ~500/mo) while the source stayed healthy → tracking-link coverage issue, not source. (2) 2025-04-10 — Apple Ads registered with AdAttributionKit; total first-time download volume dropped 89% (12,205 → 1,348) — almost all of this was Apple Search Ads, NOT creators. (3) 2025-11-01 — THE BIG ONE: new Fivetran source landed, but the Dataform filter download_type = 'first-time download' now captures only 0–5 creator installs/month while 15k–25k creator-tagged installs/month are sitting in auto-update rows (Apple's post-AdAttributionKit persistent attribution). Whether AppsFlyer / PostHog give clean TRUE-new-install counts; auto-update is persistent attribution, not new installs
Android August 2025 Symptom confirmed, root cause not yet Attributed installs collapsed 24,405 (Jul) → 92 (May 2026), a −99.6% drop. Both utm_campaign AND utm_source collapsed together. Total event volume unchanged (~9M/mo). Verified at the raw GA4 export — dbt is innocent, the Android client itself stopped sending UTM params. The 2025-07-22 source swap was NOT the cause (July was the peak). Why the Android client stopped sending UTMs. Could be app version, Firebase SDK upgrade, account-flow rewrite, SDK migration, or Android Privacy Sandbox. Needs Android team input.
Web 2026-03 → 2026-04 Root cause confirmed Rudderstack client_web.signed_up is dying — flat utm_* 100% null since Apr 2026. Migration to PostHog (posthog.tracks filtered client = 'studio') is the active source. PostHog overtook RDK in May 2026 (168k vs 120k). Marketing's official cutover date for RDK → PostHog (likely sometime in 2026)

At a glance

P0

iOS

−87%
campaign-attributed first-time downloads, Mar → Apr 2025. Apple Ads registered with AdAttributionKit on 2025-04-10.
P1

Android

−99.6%
attributed installs collapsed Jul 2025 (24,405) → May 2026 (92). Root cause: Android client stopped sending UTM params on account_created in Aug 2025 — July 22 source swap was NOT the cause. AppsFlyer + PostHog available as alternatives.
P1

Web

0
flat utm_campaign in Rudderstack since Apr 2026. Real cause: RDK → PostHog migration in progress.
P0 sep.

Pipeline freshness

monthly
Dataform main_pipeline cron changed daily → monthly on 2026-05-15 (commit 89f525a). Independent issue.

Status by platform source path

PrioritySource pathFirst affectedRoot causeFix proposedDetail
P0 iOS / App Store 2025-04-10 Apple Ads + AdAttributionKit. Model filters only first-time download, where campaign is mostly null post-event. Split metrics: first_time vs campaign_attributed_non_first_time. Do NOT silently inflate installs. Not curated
P1 Android / GA4 Aug 2025 Android client stopped sending utm_campaign / utm_source on account_created events. Attributed installs collapsed Jul (24,405) → May 2026 (92). The 2025-07-22 source swap was NOT the cause — Jul was actually the peak. Total event volume unchanged. Build source-tagged union in dbt: GA4 + AppsFlyer (4.6M Android rows already ingested) + PostHog (~700k Android events/mo). AppsFlyer and GA4 are complementary — only 9 campaigns overlap. Not curated
P1 Web / RDK → PostHog 2026-03 transition; 2026-04 complete Migration from Rudderstack client_web.signed_up to PostHog posthog.tracks (client = 'studio'). New dbt model unioning RDK (historical) + PostHog (current) with user_id dedup. Not curated

Pipeline shape (high-level)

For the full upstream-to-downstream lineage graph with per-node health status, see Lineage graph. Quick view:

External
  Platform sources: iOS/App Store + AdAttributionKit · Android/GA4 + AppsFlyer + PostHog · Web/RDK + PostHog
  Marketing sources: Rebrandly · YouTube · Google Sheets
  Commercial sources: Stripe · App Store purchases
        ↓
Raw / landing tables  (Fivetran · Rudderstack · PostHog · GA4 export · Sheets)
        ↓
Prep (derived_marketing_prep — Dataform)
        ↓
Master (derived_marketing_master — Dataform)
        ↓
Report (moises_report.campaigns_funnel_creators — Dataform)
        ↓
Consumers
  Tableau "Creators Campaigns / Overall"  · dbt creators_campaigns_*  · (future) Metabase

Tests & freshness (planned)

This is the missing operational layer. Add it once the dbt replacement models and source contracts stabilize.

Check areaWhat the report should showStatus
Source freshnessLatest partition/event date per raw source, expected update cadence, and stale/not-stale badge.Planned
Volume guardrailsDaily/monthly row counts by source path with alerts for sudden drops like Android UTM loss or Web RDK sunset.Planned
Attribution completenessNull-rate checks for campaign keys (utm_campaign, campaign_utm_ct, AppsFlyer campaign fields) by source and month.Planned
Model testsdbt/Dataform test results for uniqueness, relationships to campaign metadata, accepted platforms, and duplicate user/order handling.Planned

Attribution incident log

Treat this as the postmortem/changelog area. The naming I recommend is Attribution incident log: it is specific enough for broken measurement issues, but still works as a changelog when a source intentionally migrates. Detailed incident pages should include a small Mermaid graph showing source change → affected model → dashboard symptom.

DateFinding / incident
2026-05-27 Web root cause revised. Not array-format UTM parsing (small side-effect); real cause is RDK → PostHog migration. PostHog studio client now exceeds RDK in web signup volume (May 2026: 168k vs 120k).
2026-05-27 iOS root cause confirmed against Apple Ads official docs: "Apple Ads registered with AdAttributionKit on April 10, 2025" — exactly matches the observed −87% data collapse.
2026-05-27 Android root cause revised. The 2025-07-22 GA4 source swap was NOT the cause — Jun/Jul 2025 were the best months on record (peak 24,405 attributed installs in July). The real break is August 2025: both utm_campaign and utm_source collapsed together while total event volume stayed flat (~9M/mo) — meaning the Android client stopped sending UTM params on account_created. Impact on final table: attributed installs collapsed 24,405 → 92 (-99.6%) by May 2026.
2026-05-27 AppsFlyer evaluated as alternative for Android + iOS. Already ingested (DAG bq-import-appsflyer): 4.6M Android + 1.67M iOS non-organic rows. For Android, AppsFlyer and GA4 are complementary, not equivalent — only 9 campaigns overlap since Aug 2025 (AppsFlyer covers 37 of 1,500 creator campaigns, GA4 covers 48). AppsFlyer captures much higher install volume for shared campaigns (e.g. ig-bio: 1,314 vs 9). Web not covered by AppsFlyer.
2026-05-27 Dataform main_pipeline cron change (2026-05-15) noted as separate operational concern; does NOT explain 2024-2025 attribution issues.

Stakeholders

Dashboard owner
Caio Priszculnik
Issue reporter
Blanche (Marketing)
Data Platform
Moises Data Platform team
Repo (this folder)
moises-airflow/dags/domains/marketing/docs/creators_campaigns_attribution/
Dataform repo
moises-dataform/definitions/derived/marketing/campaigns_funnel/