Facebook

Facebook & Meta Ads Campaign Report Sample CSV (Dirty + Clean)

A production-realistic Meta Ads Manager campaign export (3,200 rows) covering formatting issues that break ROAS calculations. The Facebook Ads quirk: Amount spent and CPC values inconsistently include the $ currency prefix depending on account regional settings. When pandas or DuckDB attempts SUM on these columns, the $ prefix forces the entire column to string type, returning zero or throwing type-cast errors. The 'dirty' version includes currency-prefixed cells, zero-spend zombie ads with impressions > 0, inconsistent campaign naming (Summer_Sale vs SUMMER-SALE), and mismatched date formats. Ideal for testing ROAS pivot tables and cross-platform merges. All processing happens locally — your ad spend data stays private.

Live Interactive Preview

Live Data Preview

See how this messy facebook data looks before downloading. All processing happens locally in your browser.

💡 Pro Tip: The $ prefix in 'Amount spent' just made your ROAS calculation return NaN. Drop this CSV into Ads ROAS Pivot to auto-strip currency symbols and build a clean profitability table.

⚡ Next Step: Campaign names a mess of underscores and casing? Clean them in bulk with Regex Replace — paste your pattern, preview live, and export. Your dashboards will finally group correctly.

Data Schema Definition

ColumnTypeDescription
Campaign namestringUser-defined name. Inconsistent conventions (Summer_Sale vs SUMMER-SALE) break pivot groupings. Normalize before aggregation.
Reporting startsdateReport start date. Format varies by locale (MM/DD/YYYY vs YYYY-MM-DD); detect dynamically.
Amount spent (USD)string⚠️ CRITICAL: Contains '$' prefix forcing column to string type. SUM returns 0 or NaN. Strip symbol and cast to decimal.
ImpressionsintegerAd view count. Can be > 0 when spend = 0 (zombie ads with free impressions). Filter before CPA calculation.
Link clicksintegerOutbound clicks. Includes accidental clicks; use 'outbound_clicks' for stricter attribution.
Purchase ROASdecimalRevenue / Spend multiplier. NULL or NaN when spend = 0. COALESCE to 0 or exclude from AVG.
ResultsintegerObjective-based conversions. Definition changes per campaign objective; never aggregate across objectives.
Ad set namestringAudience/targeting label. Often duplicated across campaigns; include campaign name for unique identification.
CTR (link click-through rate)stringPercentage string ('2.5%'). Strip '%' and divide by 100 for decimal. NULL when impressions = 0.
FrequencydecimalImpressions / Reach. Values > 5 indicate ad fatigue; flag for creative rotation.

⚠️ Highlighted rows contain known data traps. Review descriptions before building ETL pipelines.