Facebook

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

A production-realistic Meta Ads Manager campaign export (3,200 rows) covering the 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 a SUM on these columns, the $ prefix forces the entire column to a 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 (MM/DD/YYYY vs YYYY-MM-DD). Ideal for testing ROAS pivot tables and cross-platform merges. All processing happens locally — your ad spend data stays private.

This Facebook dataset contains realistic, fully anonymized records. We purposely engineered it to include common messy data patterns—such as unmapped columns, dirty formatting, and duplicate IDs—so you can safely test your processing pipelines without exposing real PII.

💡 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

Column NameData TypeDescription
Campaign namestringInconsistent naming conventions break pivot groupings
Reporting startsdateOften formatted as MM/DD/YYYY
Amount spent (USD)stringOften contains '$' prefix forcing column to string type
ImpressionsintegerCan be > 0 even when spend is 0 (zombie ads)
Link clicksintegerClick volume
Purchase ROAS (return on ad spend)decimalRevenue multiplier, frequently contains nulls or NaN
ResultsintegerObjective-based conversion metric

Recommended Tools

Related Workflows

Reconcile Facebook Ads Spend with Shopify Revenue

Attributing Facebook Ads spend to actual Shopify revenue is a nightmare because Shopify exports Name (e.g., #1042) and Order ID, but completely strips UTM parameters or Campaign IDs from the standard order CSV. Meanwhile, your Facebook Ads export groups spend by Campaign ID and Ad Set Name. You cannot directly VLOOKUP these two datasets. This workflow walks you through extracting UTM tags from Shopify's Note or Tags fields, parsing them with regex, and executing a memory-safe local VLOOKUP to bridge ad spend and realized revenue without touching a cloud server.

Clean WooCommerce Exports for Financial System Import

WooCommerce's native CSV export is notoriously hostile to accounting workflows. Product descriptions in the post_content column arrive wrapped in raw HTML tags and shortcodes like [woocommerce_reviews]. Custom meta fields (e.g., _regular_price, _sku) frequently shift columns when plugins inject hidden postmeta, and the post_date column alternates between Y-m-d H:i:s and Unix timestamps depending on your WordPress version. This SOP strips HTML remnants via regex, realigns displaced meta columns, and standardizes all date fields to ISO 8601 so QuickBooks and Xero accept the import without throwing schema validation errors.

Calculate True ROAS from Facebook Ads Manager Exports

Exporting half a year of daily campaign performance from Meta Ads Manager yields a CSV riddled with data type inconsistencies. Days with zero spend often leave the Amount spent (USD) column completely blank rather than showing a zero, while other rows include currency symbols or thousands separators depending on your account's locale settings. When you attempt to build a Pivot Table in Excel to calculate Return on Ad Spend by dividing Purchases conversion value by Amount spent (USD), these blank cells and text characters trigger #DIV/0! and #VALUE! errors that corrupt your entire analysis. This workflow standardizes the Amount spent (USD) column by replacing blanks with zeros and stripping currency symbols, then aggregates daily spend and conversion value by Campaign name to compute true ROAS at the campaign level.

Generate Bulk UTM Links for Black Friday Without Excel Auto-Increment

Media buyers preparing for Black Friday often need to generate hundreds of UTM-tagged URLs across multiple ad sets, creatives, and placements. The standard approach involves building a concatenation formula in Excel like =A2&"?utm_source=facebook&utm_medium=cpc&utm_campaign="&B2 and dragging it down 500 rows. But Excel's auto-fill logic sometimes interprets bfcm-1 in the campaign parameter as a sequence and increments it to bfcm-2, bfcm-3, bfcm-4 without warning. You only discover this weeks later when GA4 shows 47 phantom campaign sources instead of one unified bfcm-1. This workflow accepts your base URLs and UTM parameter mappings, validates that campaign names remain static across all generated rows, and outputs a clean CSV of fully-formed tracking URLs.