Marketing Campaign Attribution

Last update: 2026-06-12

Healthy Degraded / under review Broken Frozen / historical Consumer
🪣 Bucket / raw files 🧭 DAG 🔌 Fivetran connector ⚙️ Dataform → dbt 📄 Sheet 📊 BI / dashboard
Scroll to zoom · drag to pan · click linked nodes for details
flowchart LR subgraph REBRANDLY["Validated source: Rebrandly click attribution"] direction LR RB_BUCKET["🪣 S3 / GCS Rebrandly
click-stream files"] RB_DAG["🧭 DAG rebrandly-to-bq"] RB_RAW["BigQuery raw
moises_raw.rebrandly_raw"] CREATORS_SHEET["📄 Sheet
mkt_creators_campaigns"] RB_DATAFORM["🧱 dbt
rebrandly models
migrated · sole writer (2026-06-12)"] CLICKS["⚙️ Dataform → dbt
campaigns_funnel_clicks"] FUNNEL["⚙️ Dataform → dbt
campaigns_funnel"] CREATORS_REPORT["⚙️ Dataform → dbt
campaigns_funnel_creators"] end subgraph SRC_NC["Not curated yet — other Marketing sources"] direction LR AF_RAW["🪣 AppsFlyer raw
moises_raw.appsflyer_organic_raw
moises_raw.appsflyer_non_organic_raw"] RDK_EVENTS["RDK events (BQ)
client_web · client_ios · client_android
service_billing"] GA4["GA4 export
bae_ga4__events"] FT_STORES["🔌 Fivetran stores
Apple App Store · Google Play"] FT_ADS["🔌 Fivetran ads / social
Apple Search Ads · Google Ads
Facebook Ads · Instagram"] SHEETS_OTHER["📄 Connected Sheets (others)
mkt_campaigns_infos · mkt_organic_campaigns
youtube_tracking · channel definitions"] end subgraph DERIVED_NC["Not curated yet — derived/marketing (Dataform → dbt)"] direction LR FUNNEL_STEPS["⚙️ campaigns_funnel steps
installs · sales · views"] MKT_ATTR["⚙️ marketing_attribution
marketing_attribution_installs"] ADS_METRICS["⚙️ ads metrics
all_channels_metrics"] MKT_FUNNEL["⚙️ marketing_funnel
campaigns_revenue_by_month"] CHANNEL_DEF["⚙️ channel_definition
users_by_channel_definition"] AUX_MODELS["⚙️ other models
tagger · reviews · organic_search
organic_campaigns_funnel · campaigns dims"] end subgraph REPORT_NC["Not curated yet — report/marketing (Dataform → dbt)"] direction LR CAMPAIGN_REPORTS["⚙️ campaigns reports
click_devices · clicks_countries
c_lvl · sales_creators · funnel_infos"] MKT_REPORTS["⚙️ marketing reports
cohort revenue · social_media_metrics"] ABTEST_REPORTS["⚙️ A/B test reports
paywall · price · trial"] end TABLEAU["📊 Tableau
Creators Campaigns / Marketing dashboards"] RB_BUCKET --> RB_DAG RB_DAG --> RB_RAW RB_RAW --> RB_DATAFORM RB_DATAFORM --> CLICKS CREATORS_SHEET --> CLICKS CLICKS --> FUNNEL FUNNEL --> CREATORS_REPORT CREATORS_REPORT --> TABLEAU AF_RAW -.-> MKT_ATTR RDK_EVENTS -.-> MKT_ATTR RDK_EVENTS -.-> FUNNEL_STEPS GA4 -.-> FUNNEL_STEPS FT_STORES -.-> FUNNEL_STEPS FT_STORES -.-> CHANNEL_DEF FT_STORES -.-> AUX_MODELS FT_ADS -.-> ADS_METRICS SHEETS_OTHER -.-> FUNNEL_STEPS SHEETS_OTHER -.-> CHANNEL_DEF CREATORS_SHEET -.-> CHANNEL_DEF MKT_ATTR -.-> MKT_FUNNEL ADS_METRICS -.-> MKT_FUNNEL FUNNEL_STEPS -.-> FUNNEL RB_DATAFORM -.-> CAMPAIGN_REPORTS FUNNEL -.-> CAMPAIGN_REPORTS RDK_EVENTS -.-> ABTEST_REPORTS FT_ADS -.-> MKT_REPORTS MKT_FUNNEL -.-> TABLEAU CHANNEL_DEF -.-> TABLEAU CAMPAIGN_REPORTS -.-> TABLEAU MKT_REPORTS -.-> TABLEAU ABTEST_REPORTS -.-> TABLEAU classDef muted fill:#f6f8fa,stroke:#d8dee4,color:#8c959f,stroke-dasharray:4 4 classDef focus fill:#fff8c5,stroke:#9a6700,color:#000,stroke-width:2px classDef issue fill:#ffebe9,stroke:#cf222e,color:#000,stroke-width:2px classDef file fill:#f6f8fa,stroke:#6e7781,color:#000 classDef sheet fill:#dafbe1,stroke:#1a7f37,color:#000,stroke-width:2px classDef consumer fill:#d6e0ff,stroke:#0969da,color:#000,stroke-width:2px classDef migrated fill:#ddf4e4,stroke:#2da44e,color:#000,stroke-width:2px class AF_RAW,RDK_EVENTS,GA4,FT_STORES,FT_ADS,SHEETS_OTHER muted class FUNNEL_STEPS,MKT_ATTR,ADS_METRICS,MKT_FUNNEL,CHANNEL_DEF,AUX_MODELS muted class CAMPAIGN_REPORTS,MKT_REPORTS,ABTEST_REPORTS muted class RB_DAG,RB_RAW,CLICKS,FUNNEL,CREATORS_REPORT focus class RB_BUCKET file class RB_DATAFORM migrated class CREATORS_SHEET sheet class TABLEAU consumer click RB_BUCKET "rebrandly.html#pipeline" "Open Rebrandly source" click RB_DAG "rebrandly.html#pipeline" "Open Rebrandly source" click RB_RAW "rebrandly.html#pipeline" "Open Rebrandly source" click RB_DATAFORM "rebrandly.html#pipeline" "Open Rebrandly source" click CLICKS "campaigns_funnel.html#lineage" "Open 2026-06-08 clicks (rebrandly) attribution issues" click FUNNEL "campaigns_funnel.html#lineage" "Open 2026-06-08 clicks (rebrandly) attribution issues" click CREATORS_REPORT "creators_campaigns_validation.html" "Open 2026-05-27 creators campaigns attribution issues" click TABLEAU "creators_campaigns_validation.html" "Open 2026-05-27 creators campaigns attribution issues" linkStyle default stroke:#d8dee4,stroke-width:1.2px,color:#8c959f linkStyle 0,1,2,3,4,5,6 stroke:#9a6700,stroke-width:2.5px,color:#000 linkStyle 7 stroke:#0969da,stroke-width:2.5px,color:#000

Source status & changelog

Keep this table curated. Add one row per source only after the source path has been validated. Gray dashed groups in the graph are the high-level Marketing map taken from the Dataform repo (definitions/derived/marketing and definitions/report/marketing, scanned 2026-06-11); they move into this table one by one as each source path is validated.

Source pathStatusCurrent roleChangelog / known issueDetail
Rebrandly Migrated (dbt) Click tracking and campaign click attribution. 2026-06-12: rebrandly clicks chain fully migrated to dbt; cutover complete, dbt is the sole writer (#647/#648/#652, dataform #357). The 2024 OneLink NULL campaign_utm_ct is expected and recovered downstream via the slug→creators-sheet join (production already attributes ~86% of 2024 clicks); the dashboard "crater" is the YouTube-only slice plus a real YoY decline, not a tracking bug — see funnel drop trace. Guardrail: assert_rebrandly_new_links_attributable warns on new unattributable links. Rebrandly source · 2026-06-08 clicks (rebrandly) attribution issues

Report pages

Update rules

  1. For a source change, update the source row above first.
  2. If the status changes, update the Mermaid node color in the graph.
  3. If the change explains a dashboard break, add a dated changelog note and link the detailed report page.
  4. Keep detailed per-model debugging on the source/report pages; keep this home page as graph + source status + changelog.