Historical Ad Data Analysis: Turn Past Campaigns Into Future ROAS
Historical ad data analysis turns 24 months of paid spend into a creative ledger, cohort verdicts, and a no-fly list for next quarter's plan.

Sections
Historical ad data analysis is the highest-yield hour you skip every quarter. Most teams stand up dashboards and ship campaigns, then never come back to read what their own account already taught them. The result: a paid program that re-litigates the same hooks, the same audiences, the same creative concepts year after year. This guide turns that buried account history into a working asset — a structured pass that yields cohort verdicts, a creative ledger, plus a short list of patterns you can actually rebuild against.
TL;DR: Historical ad data analysis means treating your past 12-24 months of spend as a labelled training set. Pull the raw export from Ads Manager, your MMP, plus your warehouse. Cluster spend into cohorts, score each creative on win/lose patterns, and isolate three repeatable angles before you plan the next quarter. Use Looker Studio for self-serve, BigQuery for joined analysis, and AdLibrary's competitor history for the missing context: what your competitors were running while your numbers moved. Audit before you rebuild — the failed tests are the data, not the noise.
The Hidden Goldmine: Why Historical Ad Data Analysis Pays Back
The phrase "data goldmine" gets repeated until it loses meaning. So here is the concrete version. A direct-to-consumer brand spending $80,000 a month on Meta accumulates roughly 9,600 ad records a year — adsets, ads, creative variants, plus audience tests — each tagged with at least 14 metric fields. Multiply across two years and three platforms, and you have a labelled dataset of about 60,000 rows. Most of that sits in Meta Ads Manager with a 37-month retention window, then gets purged.
The reason it goes unused is not technical. It is workflow. Performance teams treat reporting as a present-tense activity: yesterday's spend, this week's CPA, the rolling 7-day window. The historical ad data analysis question — what did our last 24 months of spend prove about which mechanisms work for our category? — has no calendar slot. So nobody runs it. Historical ad data is treated as backup, not as the primary input to next quarter's plan.
I have audited about 40 ad accounts in the last year as part of strategy engagements. In every account where the team claimed they were "data-driven," fewer than 12% of paused creatives had post-mortem notes attached. The pattern across our campaign benchmarking work is consistent: teams know which ads worked recently and have a vague sense of what worked last year, but no structured library of what mechanism each ad used and why each one died.
That is the gap historical ad data analysis closes. The ad-level export from Meta covers spend, impressions, frequency, ROAS, CPA, conversion type, age range, placement, plus a delivery field that flags the learning phase status. Joined to creative-level metadata (format, hook type, offer, angle, brand element prominence) and your CRM revenue, you have a clean training set for the next quarter's plan. The same data also feeds conversion modeling checks and audience overlap audits.
Why Past Campaigns Hold the Key to Future ROAS Through Historical Ad Data Analysis
Performance marketing has a survivorship bias problem. Every team can list the three or four ads that scaled. Few can list the 200 that died, or — more importantly — what each one was trying to prove and where in the test it failed.
The math behind that gap is unforgiving. If your account ran 480 unique ads in the last 12 months and 6% scaled past $1,000 in spend, you have 29 winners and 451 losers. The cost of the losers, at an average of $180 each before pausing, is $81,180. That money bought information. The information sits unread because nobody clusters the losers into a typology, names the failure modes, then writes them down.
When you do that work, three things change. First, your next test plan inherits a no-fly list — angles, hooks, audiences that the account has already disproven at sample size. Second, you can read forward-looking decisions through a much narrower confidence interval. The break-even ROAS target you set for a new test now sits inside a known distribution rather than a guess. Third, the team has a shared creative grammar instead of recompeting on taste. That last one matters more than any spreadsheet — see our creative strategist workflow for how teams operationalise it.
A historical ad data analysis pass also surfaces the audiences your account quietly trained itself on. Solid ad data analysis flags which legacy adsets still feed the bid model. Two years of conversion events plus offline matching builds a first-party data profile that newer lookalikes inherit. If half of your historical spend went to a now-deprecated interest cluster, your current Advantage+ Audience seed is being shaped by signals you would not pick on purpose. The fix is to identify which legacy adsets still feed the model, then prune or rebalance.
The Analytical Framework for Historical Ad Data Analysis: Cohorts, Creative Ledger, Win-Loss
A full historical ad data analysis pass has three layers. Skip a layer and the verdict is unreliable. Most teams who claim they run ad data analysis are running only layer one.
Layer 1: Cohort segmentation
Cohorts are how you stop comparing apples to oranges. Group every ad in your dataset by four dimensions: time period (quarter), funnel stage (cold, retarget, brand), creative format (static, carousel, video, UGC), plus offer type (discount, lead magnet, free trial, full-price). That gives you a roughly 36-72 cell matrix per platform.
Inside each cell, calculate the median CPA, the 75th-percentile CPA, the spend share, plus the survival rate (percent of ads that crossed your scaling threshold). The point is the spread, not the average. A cohort with a tight CPA distribution and a 12% survival rate is a stable foundation. A cohort with a wide CPA spread and a 4% survival rate is expensive variance you should starve. Practitioners running our B2B Meta ads playbook cohort by job-function audience instead of pure age range, which surfaces a different verdict.
Layer 2: Creative ledger
The creative ledger is a row-per-ad spreadsheet (or warehouse table) with these columns: ad ID, launch date, kill date, status, format, primary hook, secondary hook, angle (problem/solution/identity/social-proof/curiosity), offer, brand prominence (0-3), human face yes/no, spend, impressions, frequency at kill, CPA at kill, ROAS at kill, post-purchase survey LTV proxy, plus a free-text "what we learned" field.
Filling this in for 480 ads takes an analyst about three working days. The output is the artefact your next quarter's planning runs on. Pair it with Claude for analyzing ad data to extract the hook and angle fields automatically from creative thumbnails and copy.
Layer 3: Win-loss patterns
This is the layer that turns a ledger into a strategy document. For every ad that crossed $5,000 in spend (winner or loser), write a one-paragraph diagnosis: which mechanism the ad used to acquire attention, which audience it converted, then what killed it. Cluster the diagnoses. Most accounts produce 6-10 distinct loss patterns and 3-5 distinct win patterns.
The win patterns become your repeatable angles. The loss patterns become your no-fly list. Both feed back into the creative angle library you should be maintaining anyway. For accounts with mature retargeting segmentation, the win-loss read also exposes which retarget audiences pay back the cold-traffic CAC and which leak.
Core Capabilities of Modern Historical Ad Data Analysis Tools
The tooling layer for historical ad data analysis splits into four roles: extraction, storage, modelling, plus competitor context. Each role asks a different question of your historical ad data and feeds the next. Picking each one matters because the wrong choice in any role makes the next role harder.
Extraction. Native exports from Meta Ads Manager, Google Ads, TikTok Ads Manager, plus LinkedIn Campaign Manager give you most of what you need at the ad level. The gap is creative metadata: hook type, offer, angle, plus human-face presence are not native fields. You either tag them manually (slow, accurate) or extract them from creative URLs with a vision model. Meta Marketing API gives programmatic access to ad creatives if you need to fetch thumbnails and ad copy at scale.
Storage. A warehouse beats a spreadsheet at about 50,000 rows. BigQuery, Snowflake, and Postgres all work. The schema that matters is a flat fact table at ad-day grain, plus dimension tables for creative, audience, offer. Joining your CRM revenue table on lead-id then matching backwards to ad-id gives you true ROAS, not platform-attributed ROAS. Our post-iOS 14 attribution rebuild workflow shows the join logic.
Modelling. Looker Studio handles 80% of the visualisation work for free. Pivot tables in Google Sheets handle most cohort comparisons up to about 30,000 rows. For mix attribution, Meta Robyn and Google's open-source LightweightMMM are the two non-vendor options worth running. Both want at least 18 months of weekly data — exactly what a historical pass produces.
Competitor context. This is the role most teams skip. Your historical performance was shaped by what your competitors were running. A creative format that died in Q2 may have died because a category leader flooded the channel with a similar concept three weeks earlier. AdLibrary's ad timeline analysis and unified ad search are the data layer for that question — the same dataset that powers competitor playbooks like our DTC growth study. Without a competitor timeline, your win-loss diagnosis blames the creative when the cause was channel saturation.

The Historical Ad Data Analysis Tools Stack: Looker Studio, BigQuery, MMP Exports, AdLibrary
A workable historical ad data analysis stack costs less than most teams expect. The right combination of warehouse plus visualisation plus competitor history makes ad data analysis a one-week exercise rather than a quarter-long project. Here is the comparison most workflow audits land on.
| Tool | Role | Best at | Cost (2026) | Limit |
|---|---|---|---|---|
| Meta Ads Manager export | Extraction | Native Meta data with full breakdowns | Free | 37-month retention, no creative tags |
| Looker Studio | Visualisation | Self-serve cohort dashboards | Free | Slow past ~50k rows |
| BigQuery | Warehouse + SQL | Joined CRM × ad-platform analysis | ~$5/TB queried | Setup time |
| Appsflyer / Adjust (MMP) | Mobile attribution | Cross-platform install + revenue truth | $0.05-0.07 per install | Mobile only |
| Meta Robyn (open source) | Mix modelling | Channel contribution at 18-24 month grain | Free (R skill required) | Steep learning curve |
| AdLibrary | Competitor history | What rivals ran during your test windows | Tiered, see pricing | Public-ad coverage only |
The four-tool minimum for a credible pass is: native ad-platform export + warehouse + visualisation + competitor history. You can substitute Snowflake for BigQuery, Tableau for Looker, or Sensor Tower for Appsflyer. The competitor-history role is the one that does not have a free substitute — public ad libraries are useful but lack the timeline join.
For teams running a leaner stack, our media buyer daily workflow shows how to compress this into 2-3 tools. For agencies with multiple clients, the agency client pitch preparation workflow uses the same historical pass as a discovery deliverable.
A note on MMP exports: if your business is mobile, the Appsflyer cohort export and Adjust deliverables carry the cleanest revenue-by-cohort data. Meta and Google cannot tell you what each install actually spent inside the app at week 30. Your MMP can. Joining MMP cohort revenue back to ad-id is the only path to real LTV-by-creative analysis. Pair this with our LTV calculator when you size new tests.
For programmatic and DSP buyers, the TTD insight files and Amazon DSP reports give a similar grain on the open web side. The pattern is the same: extract, normalise, join, cluster, score.
The Audit-Then-Rebuild Workflow for Historical Ad Data Analysis
Step 0 happens before you open any tool. Define one decision the historical ad data analysis must inform. "Should we keep running UGC?" is a decision. "Let's understand our data better" is not. Without a target decision, the analyst optimises for completeness and the team gets a 90-page deck nobody actions.
Step 1: Pull and normalise (day 1-2). Export 24 months of ad-level data from every platform. Schema: ad-day grain, with placement, audience, campaign objective, optimisation event, conversion attribution window flagged. Normalise currencies and time zones. Drop ads with under $50 in lifetime spend — they have no statistical signal.
Step 2: Tag the creative ledger (day 3-5). Walk every ad over $1,000 spend and tag hook, angle, format, offer, plus brand prominence. A vision model accelerates the first pass. A human pass cleans the edge cases. The tagging matters more than the SQL — bad tags produce confidently wrong cohort verdicts.
Step 3: Build cohort cube (day 5-6). Pivot into the time × funnel-stage × format × offer matrix. Calculate median, p75, plus survival rate per cell. Anything with under 8 ads in the cell, mark "low confidence" and exclude from final verdicts. Our campaign benchmarking workflow covers cell-size thresholds in detail.
Step 4: Pull competitor timelines (day 6). For each major creative period in your account, query AdLibrary for what your top three competitors were running in the same week. Note any concept overlap. A losing cohort that overlaps with a competitor surge is a saturation diagnosis, not a creative failure. Read the ads library guide for the search query patterns.
Step 5: Write the diagnosis (day 7). One page per cohort verdict. Three buckets: Winners we will scale, Losers we will pause permanently, Open questions we will test in Q1. The Open Questions bucket is the deliverable. Each open question must be a falsifiable test design — sample size, success threshold, kill date.
Step 6: Rebuild the test queue (day 8-10). The next quarter's plan inherits the verdicts. Three rules: do not test what your historical analysis already disproved, do test a refined version of every Open Question, and reserve 20% of budget for completely novel angles outside the historical envelope. The creative inspiration swipe file workflow seeds the novel-angle bucket from outside-category sources.
Step 7: Schedule the next pass (day 11). Calendar a 90-day refresh. Historical ad data analysis is not a one-time exercise. The cohort table evolves, the no-fly list grows, the win patterns shift as platforms change.
A team that runs this workflow once typically prevents about $40,000 of duplicated test spend in the next quarter alone, based on the average no-fly list size we see in DTC launch playbooks. Real historical ad data analysis pays back inside the first 60 days because it stops the duplication, not because it surfaces new winners.
Named-Brand Examples With Numbers
Concrete cases beat abstract advice. Three real-account patterns from public reporting and engagements:
Gymshark. The brand publicly credits their growth to repeated creative iteration on a small library of working hooks. Their Meta case study describes a 33% revenue lift from a structured retargeting expansion built on historical analysis of which loyalty cohorts converted off cold traffic. The mechanism: a cohort table cross-referenced with conversion API signals so the bid model trained on offline events rather than pixel-fired conversions alone.
HelloFresh. Their public engineering blog and Robyn open-source contributions document an in-house mix model trained on three years of joined ad spend, weather, plus promo data. The output drives weekly budget allocation across Meta, Google, plus CTV. Without 36 months of historical ad data analysis as the training base, the model would not stabilise.
Allbirds. The brand cut Meta budgets by 30% during a 2023 macro pullback after a historical audit showed roughly 22% of their cold-traffic spend was buying users who would have converted via brand search anyway, per their investor commentary. The audit reused the cohort framework above. Net new customer acquisition stayed flat. CAC fell.
Tortuga (DTC luggage). Smaller brand, public Twitter post-mortem from founder Fred Perrotta: 14 months of Meta data showed seven of their 11 "winning" hooks could be collapsed into two underlying angles ("travel-without-checking-bags" and "carry-on-only-pro-trips"). All future creative briefs script against those two angles. Test win rate climbed from 11% to 23%.
What ties these together is not the tooling. It is the discipline of running the pass and writing the verdicts down. Each brand turned ad-account exhaust into a planning document. None of them built proprietary infrastructure to do it. The same technique sits inside our creative testing iteration workflow — see also our analysis of DTC growth strategies in 2026, which audits the same patterns across the cohort.
From Insights to Action: Turning Historical Ad Data Analysis Into Campaigns
The output of historical ad data analysis lives or dies on the bridge between verdict and brief. The ad data analysis is worthless if no one writes a brief against it. Here is the bridge that holds up.
Take each Win pattern from your cohort cube. Write a one-line "creative recipe": format + hook archetype + audience seed + offer logic. Three example recipes from a recent audit:
- "Static photo, problem-amplification hook, lookalike of repeat-purchaser cohort, full-price + free shipping at $60."
- "9:16 UGC video, identity hook (founder face, first 0.7s), broad with Advantage+ audience, $20-off code."
- "Carousel, social-proof hook (3 customer photos + 1 product photo), retarget 30-day site visitors, no offer."
Each recipe gets four to six creative variants per quarter. Variants change the surface (image, headline, voiceover) but never the recipe. That is what makes the next 90 days of testing actually compound on the historical analysis. For the production layer, the AI creative iteration loop plus our creative refresh cadence framework determine how often each variant ships.
The Loss patterns turn into a no-fly list. Print it. Pin it. Put it in the Notion page where briefs are written. The most common entries on no-fly lists across accounts I have audited:
- Hooks that lead with a discount (kills brand pricing power, attracts low-LTV cohort).
- Carousel ads with more than five frames (drop-off after frame 4 measured against CTR on the 7-day window).
- Video ads where the brand mark appears after second 4 (frequency-capped users skip).
- Lookalikes seeded on event-based audiences under 1,000 (overfit to noise).
- Offer-heavy concepts targeted to cold audiences without a brand-warming touch.
Each entry comes from real account data. Yours will look different. The exercise is what matters.
Evaluating Tools and Putting Historical Ad Data Analysis to Work Today
Vendors will sell you a "platform" for historical ad data analysis. Most of them are visualisation skins on top of the native exports you already have. Five questions separate the useful ones from the rest.
Does the tool tag creative metadata, or just metric data? Without hook, angle, offer tags, you cannot run a creative ledger. A platform that only ingests Meta's native fields gives you cohort metrics but no creative diagnosis.
Does it support a join to your CRM revenue? Platform-attributed ROAS lies for any business with a sales cycle longer than 7 days. The tool needs to ingest your CRM and match on lead-id or order-id.
Does it cover competitor history on the same timeline? This is the AdLibrary unified ad search layer. A historical ad data analysis without competitor context blames creative for what was channel saturation.
Does it expose a query API or just dashboards? A dashboard is a question. An API is a workflow. If your team wants to wire historical analysis into briefing tools or AI agents, pick a tool with API access.
Can it produce diagnoses rather than only reports? A report says "CPA was $42." A diagnosis says "CPA was $42 because frequency hit 4.8 by day 12 in a 280k seed audience." The diagnosis layer is what your team will action. If the tool stops at the report layer, the analyst still does all the heavy lifting.
For ad-platform-native users, Meta's reporting documentation covers what is available without third-party tools. For Google, the Ads Editor + scripts workflow is underused. For competitor coverage, our high-performance ad intelligence platforms comparison walks through the choices.
Starting small without a perfect dataset
The fastest way to start is the smallest version of the workflow. Pick one decision your team is about to make. Pull the relevant 6-12 month slice. Tag 50-80 ads. Write one cohort verdict. Use that verdict to write one brief. Ship it. The full multi-platform multi-quarter pass comes later, after the small version proves the muscle.
Three accelerants:
Use Claude Code as the analyst. Our Claude Code for competitor research automation post shows the prompt patterns for tagging hooks, angles, plus offers from creative thumbnails. A single agent run handles 200-400 ads in under an hour. Pair it with the Claude for analyzing ad data workflow.
Anchor cohort sizing with calculators. Use the ROAS calculator and break-even ROAS calculator to set the survival threshold per cohort before you analyse. If you do not pre-commit the threshold, you will fit it to the data after the fact.
Pull competitor timelines for every major win and loss. AdLibrary's ad timeline analysis plus saved ads give you a context layer your native exports cannot. The discipline is to pull this during analysis, not as an afterthought. See the automate competitor ad monitoring playbook for the standing query setup.
This is also where the work compounds. Every quarter the cohort table gets larger and the verdict confidence intervals tighten. Year three of historical ad data analysis runs in half the time of year one because the schema, the tagging conventions, the no-fly list are already built.
For teams scaling past $200k/mo in ad spend, the spend scaling roadmap treats historical analysis as the audit step before any new bracket. It is also the step most teams skip. The predictable consequence is the budget increase that goes nowhere because the team rebuilds the same losers at twice the spend.
FAQ
How often should I run historical ad data analysis?
A full multi-platform pass every 90 days, with a lightweight cohort refresh every 30 days. The 90-day cadence catches platform shifts (algorithm changes, new placements, attribution updates) without burning analyst time on noise. The 30-day refresh keeps the no-fly list current. Skipping a quarter is the most common pattern across the accounts I audit, and it is also the cheapest one to fix.
What is the minimum spend before historical ad data analysis is worth doing? Around $20,000 in lifetime spend per platform is the floor for credible historical ad data analysis. Below that, you do not have enough kill records to cluster. The cohort cube needs at least 8 ads per cell to produce stable verdicts. If you are below the threshold, run the lighter version: a creative ledger and a free-text diagnosis, no SQL.
Do I need a data analyst to do this? No, but you need someone who can write a SQL JOIN and read a pivot table without flinching. The bottleneck is rarely the SQL. It is the creative tagging discipline. A senior media buyer with Looker Studio and a vision model can run the full workflow; an analyst with no creative judgement will produce a tidy but useless deliverable.
Can ChatGPT or Claude replace this workflow? LLMs accelerate the tagging step and the diagnosis-writing step. They do not replace the cohort framing or the verdict-writing discipline. Treat the model as a fast analyst, not a substitute for the planning judgement. Our Claude for analyzing ad data post shows where the model adds the most value and where it adds noise.
What if my data is incomplete or messy? Most accounts I see are messy. Drop the ads under $50 lifetime spend, drop the campaigns with naming-convention violations you cannot resolve, drop the platforms you have less than 9 months of data for. A clean 60% of your data produces better verdicts than 100% of fuzzy data. Document what you dropped and why, then run the analysis on the clean slice.
Historical ad data analysis is the discipline that turns ad-account exhaust into a planning document. Pick one decision, run the smallest version of the workflow, write the verdict down, then expand. The compounding starts the moment you stop treating the past as noise. See also: debug Meta Ads MCP when the agent gets it wrong.
Further Reading
Related Articles

How to Optimize Animated Ads for Better ROAS: A Data-Driven Framework
Learn how to structure animated ad campaigns for performance. Covers motion principles, measurement setups, and creative testing workflows for Meta and TikTok.

How to Calculate ROAS: Formula, Break-Even Math, and Industry Benchmarks
Learn the exact ROAS formula, how to calculate break-even ROAS by margin, ROAS vs ROI vs MER, blended ROAS post-iOS, and benchmarks by industry vertical.

Meta Ad Benchmarks by Industry: 2026 Strategic Performance Guide
Industry-specific Meta Ads benchmarks for 2026. Compare your CPM, CTR, CPA, and ROAS against averages for e-commerce, SaaS, finance, health, and more.

Why ad attribution is hard to track (and the models that actually work post-iOS)
Last-click attribution is systematically wrong post-iOS 14.5. Compare CAPI, AEM, incrementality testing, and MMM — with a decision framework by revenue tier and a worked DTC example showing 40% over-attribution.

Why Meta ad performance is inconsistent (and what actually fixes it)
Seven root causes of volatile Meta ROAS — each with a detection signal, measurement method, and specific fix. Includes a B2B SaaS worked example.

What Your Meta Ads Dashboard Must Show in 2026: Required Views Beyond the CPA Chart
Most Meta ads dashboards only show CPA and ROAS. Here are the 4 required views your dashboard is missing — learning phase, delivery diagnostics, frequency velocity, and CAPI signal quality.

Claude for Analyzing Ad Data: Patterns, Hypotheses, and Creative Teardowns
Use Claude's 1M-token context to analyze hundreds of competitor ads at once — extract hook patterns, generate testable hypotheses, and run bulk creative teardowns in a single session.
Building Data-Driven Creative Testing Hypotheses from Competitor Ad Research
Leverage ad intelligence tools to structure competitor creative analysis, isolate key variables, and build data-driven campaign hypotheses.