Marketing analytics
How to measure and analyze marketing campaign performance
Campaign performance measurement means judging a campaign against the one job it was given, using a primary KPI set before launch. Track every channel through to a CRM outcome and calculate cost and conversion metrics with standard formulas. Campaign performance analysis then compares results by segment and funnel stage so you can decide whether to keep, change or stop.
Campaign performance, measurement and analysis: what each means
The terms overlap, but in marketing campaign measurement they mean different things.
- Campaign performance is what a campaign produced compared with the goal set before launch.
- Campaign measurement is the system that makes results countable: KPIs, tracking, baselines and data sources.
- Campaign performance analysis is interpreting those results by segment and funnel stage to decide what to do next.
- MQLs and SQLs: an MQL (marketing-qualified lead) meets your agreed fit and interest criteria; an SQL (sales-qualified lead) is one sales has agreed to pursue.
- Outputs vs outcomes: impressions and clicks are outputs; qualified leads, pipeline and revenue are outcomes. Reach can be the right KPI for awareness, but for campaigns meant to create leads or revenue, only outcomes show whether they worked.
A 6-step campaign measurement framework
This campaign measurement framework works for a single email or a multi-channel launch. Reuse it for every campaign and it becomes your marketing measurement framework.
1. Name the campaign's job
Pick one job: awareness, lead generation, pipeline acceleration, reactivation or a message test. The job decides the KPI, and therefore how you measure campaign success; a campaign judged against five goals can always claim success on one. For lead generation, start with building a simple lead-generation campaign.
Example: "create qualified leads for the free assessment," not "raise awareness and drive leads."
2. Choose one primary KPI and two supporting metrics
The primary KPI decides success; the two supporting metrics explain why it moved. Everything else is context.
| Campaign job | Primary KPI | Supporting metrics |
|---|---|---|
| Awareness | Reach in the target audience | Frequency; branded search |
| Lead generation | Qualified leads (MQLs) | Cost per lead; landing-page conversion rate |
| Pipeline acceleration | Opportunities from existing leads | MQL-to-SQL rate; days between stages |
| Reactivation | Meetings booked from existing contacts | Email click rate; reply rate |
| Message test | Conversion rate by variant | CTR by variant; lead-to-MQL rate by variant |
3. Record a baseline, a target and a review window
Record what the last comparable campaign produced, set the target to beat, and fix the review date before launch. Pipeline and revenue lag behind leads, so their review window must cover your sales cycle.
Illustrative example: baseline 12 MQLs, target 15, leads judged at 4 weeks, pipeline at 90 days.
4. Set up tracking before launch
Tag every campaign link that points to your site with UTMs, make the lead action a GA4 key event and confirm the CRM stores source and campaign. Tracking added mid-campaign leaves gaps you cannot fill; see the tracking setup section below.
Example: one test lead per channel, checked in GA4 and the CRM.
5. Analyze results by segment and funnel stage
Compare each channel, audience and offer with the baseline and find the funnel stage that fell short; the analysis section below shows how.
Example (from the hypothetical scorecard below): paid social's cost per MQL is double the blended figure.
6. Decide: keep, change or stop
A report is finished when it says what to keep, change or stop and what to test next. Agree these rules before launch, apply them to the whole campaign and to each channel, and write the decision next to the numbers.
| Decision | When | Example |
|---|---|---|
| Keep | Primary KPI hit its target at or below the planned cost per qualified lead | Keep the email follow-up |
| Change | Primary KPI missed or cost too much, but a segment or funnel stage beat its baseline | Keep the offer; change the paid audience |
| Stop | Primary KPI missed in every segment over the full review window, with tracking confirmed working | Move the budget to the best-performing channel |
Campaign performance metrics and formulas
Write your definitions down once and compare against your own baseline; other companies' averages rarely match your channel, offer or deal size. The qualified-lead metrics depend on how to define MQLs and SQLs.
| Metric | Formula | What it tells you | Where the data lives |
|---|---|---|---|
| Click-through rate (CTR) | Clicks ÷ impressions × 100 (for email: clicks ÷ delivered emails × 100) | Whether the ad or email earns the click | Ad platform, email tool |
| Landing-page conversion rate | Leads ÷ landing-page sessions × 100 | Whether the page turns visits into leads | GA4 key event |
| Cost per lead (CPL) | Campaign spend ÷ new leads | What one lead costs | Ad spend + CRM |
| Cost per qualified lead | Campaign spend ÷ MQLs (or SQLs) | Whether you pay for leads sales will work | Ad spend + CRM |
| Lead-to-MQL rate | MQLs ÷ new leads × 100 | Whether the campaign reaches buyers who fit | CRM lifecycle stage |
| MQL-to-SQL rate | SQLs ÷ MQLs × 100 | Whether sales accepts what marketing sends | CRM lifecycle stage |
| Pipeline created | Value of new opportunities in the window from contacts who converted on the campaign (state your rule) | Potential revenue the campaign started | CRM deals |
| Pipeline influenced | Value of opportunities where an associated contact engaged with the campaign before the opportunity was created (state your rule) | Potential revenue the campaign touched | CRM deals |
| Return on ad spend (ROAS) | Revenue attributed to ads ÷ ad spend | Revenue returned per dollar of ad spend | Ad platform or CRM |
| Marketing ROI | (Attributed revenue − total campaign cost) ÷ total campaign cost × 100 | Revenue returned on the full campaign cost | CRM + finance |
| Customer acquisition cost (CAC) | Sales and marketing cost ÷ new customers, same period | What a new customer costs overall | Finance + CRM |
ROAS vs marketing ROI: which one to report
ROAS covers media only and suits comparing ad sets or platforms. Marketing ROI adds creative, tools and people; it is what leadership asks about. Report either only when revenue is attributable; until then, use cost per qualified lead and pipeline created.
Hypothetical example: $8,000 of attributed revenue from $2,000 of ads is a ROAS of 4.0. Add $3,000 of other costs, for a total of $5,000, and marketing ROI is ($8,000 − $5,000) ÷ $5,000 × 100 = 60% on revenue.
Both formulas use revenue, not profit, so a positive ROI can hide a loss. At a 50% gross margin, ROI on the $4,000 of gross profit is ($4,000 − $5,000) ÷ $5,000 × 100 = −20%. If you know your margin, use gross profit.
How to analyze campaign performance
To analyze campaign performance, compare results with your baseline and target, split them by segment, find the weakest funnel stage, and check that your sources agree.
Compare against your baseline and target
Month-over-month comparisons on their own mislead, because seasonality and budgets shift. Compare with the pre-launch target and the last comparable campaign; beating last month while missing the target is still a miss.
Segment by channel, audience and offer
A blended average hides the winning segment. Split by channel, then by audience or offer where volume allows. To track cross-channel performance, use one utm_campaign value everywhere and compare channels on the same CRM outcome, not on each platform's conversion count.
Find where the funnel drops off
Follow the path from impressions to clicks, sessions, leads, MQLs, SQLs and opportunities, and calculate the conversion rate between each stage. Every funnel narrows, so look for the stage furthest below its own baseline. To optimize campaign performance while it runs, fix that stage first rather than changing everything at once.
| Stage below its baseline | What to check first |
|---|---|
| Impressions to clicks | Ad creative, targeting, audience fatigue |
| Clicks to sessions | Broken UTMs, redirects, slow pages |
| Sessions to leads | Landing page, offer, message match with the ad, form length |
| Leads to MQLs | Audience fit, or an MQL definition that does not match the offer |
| MQLs to SQLs | The shared lead definition and the sales handoff |
| SQLs to opportunities | Sales follow-up speed and offer fit |
Reconcile ad-platform numbers with CRM records
Ad platforms and the CRM count differently: attribution windows vary, and the CRM may already know the person. Pick one source of truth per metric: spend from the ad platform, sessions from GA4, leads and pipeline from the CRM. For ROAS and ROI, also name the attribution rule, such as first touch, last touch or multi-touch; the same deals give different revenue under each. I cover why ad-platform and CRM numbers disagree in a separate article.
Worked example: a campaign scorecard (hypothetical numbers)
These numbers are invented to show the math. They are not client results or benchmarks.
Scenario: a B2B services firm runs a 4-week free-assessment campaign with MQLs as the primary KPI and a target of 15.
- Paid social: $3,000 spend, 60,000 impressions, 600 clicks, 30 leads, 9 MQLs.
- Email, no media cost: sent to newsletter subscribers who were not yet leads; 150 clicks, 15 leads, 9 MQLs.
- Both channels combined: 6 SQLs and 2 opportunities worth $24,000.
| Metric | Target (set before launch) | Actual | Note |
|---|---|---|---|
| MQLs (primary KPI) | 15 | 18 | 9 paid social, 9 email |
| Cost per lead | $75.00 | $66.67 | $3,000 ÷ 45; paid social alone $100.00 |
| Landing-page conversion rate | 5.0% | 6.0% | 45 ÷ 750 clicks, a stand-in for sessions |
| Paid social CTR | — | 1.0% | 600 ÷ 60,000 |
| Cost per MQL | $200.00 | $166.67 | $3,000 ÷ 18; paid social alone $333.33 |
| Lead-to-MQL rate | — | 40.0% | 18 ÷ 45; paid social 30.0%, email 60.0% |
| MQL-to-SQL rate | — | 33.3% | 6 ÷ 18 |
| Cost per SQL | — | $500.00 | $3,000 ÷ 6 |
| Pipeline created | — | $24,000 | 2 opportunities |
| ROAS | — | Not measurable yet | No closed revenue in the window |
Reading the scorecard
The campaign beat its target with 18 MQLs against 15, but email produced half of them at no media cost, so paid social's own cost per MQL ($333.33) is double the blended $166.67.
Decision: by the step 6 rules, keep the offer and the email follow-up, change the paid audience, and judge ROAS after one more sales cycle. To reuse the table, fill the Target column before launch and the Actual column on the review date.
Advertising campaign measurement: what changes for paid media
Advertising campaign measurement, for PPC search ads and paid social alike, follows the same framework, plus five checks.
- Attribution windows differ. Each platform's click and view windows mean its totals will not match GA4 or the CRM.
- Tag every ad URL with UTMs, including boosted posts.
- Watch frequency and overlap. High frequency wears out an audience, and overlapping audiences let several platforms claim the same lead.
- Send outcomes back. Where supported, import qualified-lead or deal outcomes as offline conversions so bidding optimizes for quality.
- Test incrementality at larger budgets. A holdout or lift test is the most direct way to estimate what the ads caused, rather than what they were credited with.
Tracking setup: UTMs, GA4 key events and CRM fields
UTMs show where a visit came from, GA4 key events show which visits became leads, and CRM fields show what happened next.
A UTM naming convention
Use lowercase, hyphens instead of spaces and one campaign name on every channel, recorded in a shared naming sheet. Never tag internal links; it overwrites the visit's original source. Do tag external links in SMS messages, QR codes and influencer or partner posts, with a separate utm_content value for each influencer or partner.
To track email campaign performance with UTM parameters, reuse the ads' utm_campaign, set utm_medium to email and give each link its own utm_content.
| Parameter | What it records | Example |
|---|---|---|
| utm_source | Platform or list | linkedin, google, newsletter |
| utm_medium | Channel type, from a fixed list | cpc, paid-social, email |
| utm_campaign | Campaign name, same on every channel | 2026-10-free-assessment |
| utm_content | Creative, link or variant | video-a, footer-link |
| utm_term | Paid search keyword (optional) | crm-cleanup |
GA4 key events
Mark the form submission or booking confirmation as a GA4 key event. Then send a test lead and confirm it shows in GA4's realtime report and in the CRM.
CRM source, campaign and lifecycle fields
GA4 stops at the lead; the CRM carries the rest. If source fields are patchy or lifecycle stages inconsistent, audit your CRM data first. The CRM needs:
- Source and campaign captured from UTMs through hidden form fields or source properties.
- Campaign association on contacts and deals, so pipeline can be reported per campaign.
- Lifecycle-stage dates, so stage conversion rates and time between stages can be calculated.
Reporting cadence: weekly, end of campaign, quarterly
When should you report on marketing campaign performance? Weekly while it runs, once at the end, and quarterly for slower numbers. A scorecard covers one campaign; an always-on marketing KPI dashboard tracks the whole system.
| When | What to check | Typical decision |
|---|---|---|
| Weekly, during the campaign | Spend pacing, tracking health, CTR, cost per lead | Fix tracking; pause broken ads |
| End of the campaign | Full scorecard against targets, by segment | Keep, change or stop |
| Quarterly | Pipeline, closed revenue, ROAS, marketing ROI, CAC | Next quarter's budget split |
How to automate campaign reporting
Much of the work in a manual report is collection, not analysis. Pulling data from ad platforms, GA4 and the CRM, calculating KPIs, refreshing the scorecard and alerting on broken tracking can all be automated. Definitions, commentary and decisions stay with people; AI can draft a recap for review, as in AI marketing workflows.
In HubSpot or your CRM
If your HubSpot subscription includes the campaigns tool, associate the campaign's emails, forms, landing pages and ads with a HubSpot campaign. If not, save utm_campaign to a contact property through a hidden form field and filter reports by it. Either way, put source, lifecycle-stage and deal reports on a dashboard that updates as records change. Salesforce and other CRMs work the same way with campaign records.
In Power BI or Tableau
Connect each source directly or through a staging table, schedule the refresh, and keep one KPI definitions table that every chart reads from, so cost per lead means the same thing everywhere.
Connecting sources with Make or Zapier
Where no native connector exists, a scheduled Make scenario or Zapier Zap can pull daily spend and results into Google Sheets, Airtable or a database, and send an alert when a day shows spend but zero leads.
This is the work I do in marketing reporting automation: agreeing the numbers, connecting the sources and setting up a scorecard that refreshes itself.
Common campaign measurement mistakes
- Reporting reach for a lead-generation campaign. Activity is not the job.
- Changing the primary KPI after launch. That turns measurement into storytelling.
- No baseline or target. Nothing to judge against.
- Inconsistent UTM tags. "LinkedIn" and "linkedin" become two sources.
- Judging pipeline too early. A 4-week review of a campaign with a 60-day sales cycle can judge leads and early pipeline, not revenue or ROAS.
- Counting platform conversions as leads. A lead is a record in the CRM.
- Different MQL definitions in marketing and sales. Stage rates mean little until both count the same thing.
- A report that ends without a decision. That is a status update.
Questions this guide answers
What is the most important campaign metric?
The one tied to the campaign's job, chosen before launch. For lead generation that is usually qualified leads, supported by cost per lead and landing-page conversion rate; for reactivation, meetings booked from existing contacts. Everything else is context that explains why the primary KPI moved.
What is the difference between ROAS and marketing ROI?
ROAS is attributed revenue divided by ad spend, so it covers media only. Marketing ROI subtracts total campaign cost, including creative, tools and people, from attributed revenue, then divides by that cost. ROAS shows what each ad dollar returned; ROI shows the return on everything the campaign cost. Both use revenue, not profit.
How do you calculate cost per lead?
The cost per lead formula is campaign spend ÷ new leads from the same period. For example, a hypothetical $3,000 of spend and 45 leads gives $66.67 per lead. Count leads in the CRM, not the ad platform, and calculate cost per qualified lead the same way; a cheap lead that sales will not work is not cheap.
How long should a campaign run before you judge its performance?
Long enough to cover the outcome you are judging. Lead volume and cost per lead can be read when the campaign ends; pipeline and revenue need at least one full sales cycle. Fix the review date before launch and ignore the first few days, when small numbers swing.
How do you measure campaign performance without a CRM?
Use a spreadsheet. Log each lead with the date and the UTM source, medium and campaign captured by hidden form fields, add a status column (lead, qualified, meeting, customer) and update it weekly. That covers cost per lead, cost per qualified lead and stage conversion rates. When the sheet gets hard to keep current, move to a CRM.
How much data does a small business need to measure a campaign?
Enough to make the next decision: one primary KPI, two supporting metrics and a baseline. With a few dozen leads, treat differences between segments as signals to test again rather than proof, and judge the campaign on its primary KPI against the target you set.
Can campaign performance reporting be automated?
Mostly. Pulling data from ad platforms, GA4 and the CRM, calculating KPIs and refreshing the scorecard can run on a schedule in HubSpot, Power BI or Tableau, with Make or Zapier filling gaps. Agreeing definitions, writing commentary and deciding keep, change or stop still need a person.
Rebuilding this scorecard by hand every month?
Bring the campaign report you put together manually to a 20-minute call. I'll show you which numbers can refresh on their own and which still need a person's judgment.
Book a 20-minute reporting reviewMichelle Ivanova runs imivs consulting, building marketing operations, CRM workflows and reporting automation in the tools a team already uses.
