DATA PROVENANCE — Merci Maman Meta Ads Audit ========================================== Account: FB France / Merci Maman (act_160529217450882) Currency: EUR Timezone: Europe/Paris 3-LAYER ANALYSIS: Layer 1 (Scoring): 2025-12-02 to 2026-03-02 (3 months) Layer 2 (Trends): 2025-09-02 to 2026-03-02 (6 months, monthly) Layer 3 (YoY): 2024-09-02 to 2026-03-02 (18 months, monthly) API: Meta Marketing API v21.0 Pull method: Insights-based entity discovery (spend > 0 filter) — 35 API calls in 124 seconds (vs 200+ with old approach) Pull timestamp: 2026-03-03 ~16:45 UTC+1 LAYER 1 DATA (Scoring — 3 months): Account-level insights (default + 7d_click attribution) 19 campaigns with spend > 0 (batch metadata via ?ids=) 31 ad sets with spend > 0 (batch metadata with targeting) 500 ads with spend > 0 (batch metadata) 417 unique creatives 91 daily insight rows 22 placement breakdown rows 5 pixels LAYER 2 DATA (Trends — 6 months monthly): 7 account-level monthly rows 107 campaign-level monthly rows LAYER 3 DATA (YoY — 18 months monthly): 19 account-level monthly rows ROAS CALCULATION: Source field: action_values where action_type = "purchase" Formula: purchase_value / spend NEVER used: total action_values (includes non-purchase actions) Cross-check: purchase_roas field from API (match: 0.0000 diff) ATTRIBUTION: Default: 7d_click + 1d_view (Meta default) Click-only: action_attribution_windows: ["7d_click"] View derived: Default total - Click only Post-view: 27.2% of purchases are view-through SANITY CHECKS (all passed): 1. ROAS field validation: PASS (API 7.2681x = Manual 7.2681x) 2. AOV check: PASS (EUR 97.75, expected EUR 60-120) 3. Spend reconciliation: PASS (campaign sum = account total, diff EUR 0.00) 4. Attribution split: 27.2% post-view (acceptable range) 5. False retargeting: 3 flagged (IT/DE/FR catalog campaigns), 5 valid RTG SCORING: Engine: 55-check weighted scoring (V3) Overall: 52.1/100 (Grade D — Poor) Categories: Pixel/CAPI: 37.5/100 (F) [LIMITED DATA — 2/10 evaluated] Creative: 36.6/100 (F) [10/15 evaluated] Structure: 62.5/100 (C) [12/18 evaluated] Audience: 66.7/100 (C) [4/8 evaluated] Funnel: 75.0/100 (B) [4/4 evaluated] KEY FINANCIAL METRICS: Spend: EUR 77,813.40 Revenue: EUR 565,559.24 ROAS: 7.27x (VERY PROFITABLE) Click-only ROAS: 5.29x Purchases: 5,786 AOV: EUR 97.75 CPA: EUR 13.45 Net Profit: EUR 487,745.84 YOY CONTEXT: Q4 2024 vs Q4 2025: Spend -12.4%, ROAS +105.0%, CPA -49.6% Q1 2025 vs Q1 2026: Spend -38.0%, ROAS +72.3%, CPA -40.7% Bug fixes applied (from Eclo audit): - funnel.py M-AT1: Fixed double-counting (use 7d_click sub-field, not value) - funnel.py M-FA1: ASC campaigns excluded from false RTG flags - funnel.py: Only count purchase action_type (not omni_purchase) Data pull optimization applied: - Use insights endpoint to discover entities with spend > 0 - Batch-fetch metadata via ?ids= endpoint (50 IDs per call) - Reduced API calls from 200+ to 35 - Fixed ad_id KeyError on paginated responses (filter with .get())