Skip to content
Synthetic educational data

Marketing Campaigns & Conversions Dataset

Analyze fictional campaign spending, leads, and conversions across related tables. Practice marketing reporting, data cleaning, and joins that preserve the totals you intend to measure.

Good for: campaign analysis, cost metrics, data cleaning, and reporting models.

Download this dataset

Choose the version that fits your project. You do not need to download every file.

Preview the data

Explore a sample before downloading. Select a table to see its columns, row count, relationships, and what each row represents.

Campaigns

One row represents: One row per campaign.

Rows in this table
120
Connects to
Daily spend, Leads

This preview shows a sample, not the full download.

Sample rows from campaigns. This preview is not the full download.
campaign_idcampaign_namechannelobjectivestart_dateend_datebudget
CMP0001Paid Search 2023 001paid_searchawareness2023-06-172023-08-1714867.16
CMP0002Paid Social 2023 002paid_socialawareness2023-09-272023-11-1849422.28
CMP0003Display 2024 003displaylead_gen2024-09-272024-12-2640769.77
CMP0004Video 2024 004videoacquisition2024-10-152025-02-1629625.96
CMP0005Affiliate 2024 005affiliateacquisition2024-10-202024-12-2918614.72

Campaigns data dictionary

Check identifiers, dates, numeric fields, and missing values before writing a query or building a chart.

ColumnWhat it meansData typeMissing valuesKey or requirement
campaign_idStable campaign key.text0Required
campaign_nameDisplay name.text0Required
channelPaid media channel.text0Required
objectiveAwareness, lead_gen, or acquisition.text0Required
start_dateFirst active date.date0Required
end_dateLast active date.date0Required
budgetPlanned campaign budget.decimal0Required
View the full data dictionary

campaigns

One row represents: One row per campaign.

ColumnWhat it meansData typeMissing valuesKey or requirement
campaign_idStable campaign key.text0Required
campaign_nameDisplay name.text0Required
channelPaid media channel.text0Required
objectiveAwareness, lead_gen, or acquisition.text0Required
start_dateFirst active date.date0Required
end_dateLast active date.date0Required
budgetPlanned campaign budget.decimal0Required

daily_spend

One row represents: One row per campaign active date.

ColumnWhat it meansData typeMissing valuesKey or requirement
spend_idStable delivery key.text0Required
campaign_idDelivered campaign.text0Required
spend_dateDelivery date.date0Required
impressionsServed impressions.integer0Required
clicksRecorded clicks.integer0Required
spendMedia cost.decimal0Required

leads

One row represents: One row per lead.

ColumnWhat it meansData typeMissing valuesKey or requirement
lead_idStable lead key.text0Required
campaign_idAttributed campaign.text0Required
created_atLead creation date.date0Required
lead_sourceAttributed source channel.text0Required
lead_scoreQualification score from 1 to 100.integer0Required

conversions

One row represents: One row per converted lead.

ColumnWhat it meansData typeMissing valuesKey or requirement
conversion_idStable conversion key.text0Required
lead_idConverted lead.text0Required
converted_atConversion date.date0Required
conversion_typetrial or purchase.text0Required
revenueAttributed revenue.decimal0Required

About the data

Marketing reports often combine records created at different levels of detail. In this release, planned budget is one row per campaign, spend is one row per campaign and active date, and leads and conversions are individual outcomes.

This synthetic scenario lets you practice connecting those records, choosing a reporting period, and explaining last-touch attribution before comparing performance.

What one row represents
Varies by source table
Data covers
Start: 2023-01-01 · End: 2025-12-31
Dataset version
1.0.0
Release published
2026-09-05

How the tables connect

Generated from the same relationship metadata as the table documentation.

Daily spendcampaign_idCampaignscampaign_id

many-to-one

Leadscampaign_idCampaignscampaign_id

many-to-one

Conversionslead_idLeadslead_id

one-to-one

Start your first analysis

Open a download, inspect the table, and answer one question. Each example identifies the file and dataset version it uses.

Start with Excel

Use the prepared campaign-day workbook to compare spending and attributed outcomes.

Download Excel
File used
marketing-campaigns-v1.0.0-analysis.xlsx
Dataset version
1.0.0
File size
528.8 KB
  1. 01Open "marketing-campaigns-v1.0.0-analysis.xlsx" and select the "Marketing Campaigns & Conversio" sheet.
  2. 02Place channel in Rows and spend and conversions in Values.
  3. 03Check the grand total against the source before calculating cost per conversion.

What you can build

Finished output from this release

How do spend and attributed conversion revenue compare by channel?

How do spend and attributed conversion revenue compare by channel?

channelspendattributed_revenue
affiliate857835.075610700.73
paid_search897091.535439329.35
paid_social984731.884690137.28
display9552973734117.43
video828094.542087554.22
View the checked SQL
WITH campaign_spend AS (
  SELECT campaign_id, SUM(spend) AS spend
  FROM daily_spend
  GROUP BY campaign_id
),
campaign_revenue AS (
  SELECT l.campaign_id, SUM(c.revenue) AS revenue
  FROM conversions c
  JOIN leads l USING (lead_id)
  GROUP BY l.campaign_id
)
SELECT c.channel,
       ROUND(SUM(COALESCE(s.spend, 0)), 2) AS spend,
       ROUND(SUM(COALESCE(r.revenue, 0)), 2) AS attributed_revenue
FROM campaigns c
LEFT JOIN campaign_spend s USING (campaign_id)
LEFT JOIN campaign_revenue r USING (campaign_id)
GROUP BY c.channel
ORDER BY attributed_revenue DESC;

Campaign performance report

Compare recorded spending, leads, and conversions across campaigns using a consistent reporting period.

Cost-per-conversion analysis

Divide spending by the conversions covered by your definition. Explain what happens when a campaign has spending but no conversions.

Marketing data-cleaning report

Investigate the documented challenge, explain each correction, and compare the resulting totals with the unchanged reference files.

Campaign reporting model

Combine spending and outcomes without duplicating either one. Document the attribution and aggregation rules.

Questions about this dataset

Can I calculate cost per conversion?

Yes. Use recorded campaign spending and the conversions included by your stated rule. Keep reporting periods aligned, and report campaigns with no conversions separately.

Does the data prove that advertising caused a conversion?

No. A last-touch connection between a campaign and a recorded conversion is not a causal estimate.

Source, license, and versions

This dataset represents a fictional business. Its records and patterns were generated for education and testing. Use it to practice analytical methods, not to estimate real-world revenue, churn, conversion rates, or market conditions.

Before you interpret the results

  • This is synthetic educational data generated to model a fictional business. It does not represent a real company or establish industry benchmarks.
  • Synthetic attribution is last-touch.
  • Offline and view-through conversions are excluded.
  • No PII is included.

Source, license, and version

Use the version number when sharing your work so others can reproduce it with the same files. Coverage dates describe the records; the release date describes when this package was published.

Maintainer
Analytics Engineering
License
CC BY 4.0
Version
1.0.0
Published
2026-09-05T16:52:47.003Z

Cite this dataset

Analytics Engineering. (2026). Marketing Campaigns & Conversions Dataset (Version 1.0.0) [Data set]. https://www.analyticsengineering.com/datasets/marketing-campaigns.

Found an issue?

Tell us which dataset, version, and file you used, and what you expected to happen. A small example helps us investigate.

Report a dataset issue →

Keep learning

Clean campaign imports and preserve the daily-spend grain before joining to individual leads and conversions.

This exercise uses a smaller teaching example, not the full downloadable dataset.