Paid media

Cost per opportunity by ad campaign: how to calculate cost per SQL, opportunity and pipeline dollar

The short answer

Cost per opportunity by campaign is the campaign’s ad spend divided by the sales opportunities attributed to that campaign in the same period or cohort. Cost per SQL and cost per pipeline dollar use the same spend divided by SQLs and by pipeline value. To calculate them you need three things in the CRM: the ad campaign captured on every lead (click ID or UTM), lifecycle stage dates on the contact, and the contact associated with the deal. We recommend judging B2B campaigns on cost per opportunity and pipeline per dollar, reported by lead cohort, not on cost per lead.

Key takeaways

  • Cost per opportunity = campaign spend / opportunities attributed to that campaign; pipeline per dollar = pipeline value / spend.
  • Use one attribution rule for cost per opportunity (we use the first ad campaign that created the contact) and show influence separately.
  • Report by lead cohort (leads created in the month) for long sales cycles, or this month’s opportunities will be divided by this month’s spend that did not create them.
  • The CRM setup is the hard part: capture click IDs and UTMs into fields, keep stage dates, associate contacts to deals.
  • The cheapest cost per opportunity is not always the best campaign; compare pipeline per dollar and win rate before moving budget.

Why cost per lead misleads B2B budget decisions

Ad platforms optimize and report on the conversions they can see: form fills, lead gen form submits, calls. In B2B, most of those leads never become pipeline, and the share that does varies widely by campaign. A webinar campaign on LinkedIn can produce leads at a third of the cost of a high-intent search campaign and still produce fewer opportunities per dollar.

When budget moves on cost per lead, it flows toward the cheapest form fills. When it moves on cost per opportunity and pipeline per dollar, it flows toward the campaigns that sales actually works. That is the shift CFOs and CROs ask for, and it is the core of a pipeline-first paid media report.

The formulas

MetricFormulaUse it to
Cost per SQLCampaign spend / SQLs attributed to the campaignCheck lead quality early, before deals are created
Cost per opportunityCampaign spend / opportunities attributed to the campaignCompare campaigns and channels on the outcome sales cares about
Cost per pipeline dollarCampaign spend / pipeline value attributed to the campaignCompare campaigns that create deals of different sizes
Pipeline per ad dollarPipeline value / campaign spendPresent the same thing to finance as a return multiple
SQL to opportunity rateOpportunities / SQLs for the campaignSpot campaigns that pass qualification but stall in sales

A worked example with example inputs for one quarter. These are illustration numbers, not benchmarks: use your own CRM data.

Worked example: three campaigns, one quarter

Campaign (example inputs)SpendSQLsOpportunitiesPipelineCost per SQLCost per opportunityPipeline per US$1
Google Ads, non-brand searchUS$60,0004024US$720,000US$1,500US$2,500US$12.00
LinkedIn Ads, target account listUS$45,0001512US$600,000US$3,000US$3,750US$13.33
Microsoft Advertising, non-brand searchUS$9,00063US$75,000US$1,500US$3,000US$8.33

On cost per opportunity, search looks best. On pipeline per dollar, the LinkedIn account-list campaign wins because its deals are larger. Neither metric alone justifies a budget move; together they tell you to protect both and look harder at the Microsoft campaign, which has the same cost per SQL as Google but loses half its SQLs before the opportunity stage. That is a qualification or targeting question to take to sales, not a reason to cut by default.

With small numbers like six SQLs, treat any single quarter as directional. We look at rolling two-quarter cohorts before moving more than 20% of a campaign’s budget on down-funnel cost alone.

Is your paid spend creating pipeline?

Bring your funnel numbers to a 30-minute pipeline plan session. We show where spend is leaking against your CRM data and what to fix first.

Get your pipeline plan

Period view or cohort view

There are two honest ways to line up spend and opportunities, and mixing them is the most common reporting mistake we see.

The period view divides this quarter’s spend by opportunities created this quarter, whichever campaign or month their leads came from. It is simple and works when the sales cycle from lead to opportunity is short, a few weeks.

The cohort view divides the spend of a month by the opportunities later created from the leads that month generated. It is fairer for long B2B cycles, but the latest cohorts are incomplete, so show them with a note such as "cohort still maturing" rather than as a bad month.

Pick one per report, label it, and keep it for at least two quarters. Changing method every review makes trends meaningless.

The CRM setup you need

None of these metrics work unless the CRM can tell which ad campaign created or influenced each contact, and when each contact reached each stage. Here is what to put in place in HubSpot or Salesforce.

  1. Capture the ad click ID (such as Google’s GCLID) and all UTM parameters into hidden form fields, and store them on the contact or lead. Keep the first values; do not let later visits overwrite them.
  2. Make campaign names in UTMs match ad platform campaign names exactly, so spend can be joined to CRM records without a mapping table that someone has to maintain.
  3. Use lifecycle stages with dates. HubSpot records "date entered" and "date exited" for each lifecycle stage; Opportunity means the contact or company is associated with a deal. In Salesforce, use lead and opportunity creation dates and stage history.
  4. Associate contacts with deals. In HubSpot, the Opportunity lifecycle stage means the contact or company is associated with a deal, so deal associations are what make opportunities countable by campaign. In Salesforce, use contact roles or Campaign Influence, which can automatically associate influential campaigns to an opportunity within an influence time frame you set.
  5. Agree with sales on what an SQL and an opportunity are, in writing, and on who sets each stage.
  6. Send qualified stages back to the ad platforms. Google’s offline conversion imports use the GCLID (or enhanced conversions for leads) to measure what happens after the click, so bidding can learn from SQLs and opportunities instead of form fills.

For attribution, HubSpot’s deal create and revenue attribution reports require Marketing Hub Enterprise and can include ad click interactions from connected LinkedIn and Google ad accounts. You do not need multi-touch attribution to start: a first-campaign rule for cost per opportunity plus an influence view for programs is enough for most budget decisions.

Mistakes that make cost per opportunity wrong

  • Dividing all paid media spend by all opportunities, including those from outbound, partners and organic.
  • Letting the last form fill overwrite the original source, which hands credit to retargeting and brand search.
  • Counting opportunities that sales created for existing customers, renewals or upsells in new-business cost.
  • Comparing a campaign’s cost per opportunity this month with spend this month when its cycle is 90 days.
  • Using platform-reported spend for some channels and invoiced spend for others in the same table.

Putting cost per opportunity next to pacing

Most teams compute cost per opportunity once a quarter in a slide. It is far more useful while the month is running, next to pace: an on-pace campaign with a rising cost per SQL is the one to fix this week.

Pacing Console puts it there. On Pro, CRM lifecycle stages by campaign come from HubSpot, Salesforce, Pipedrive, or any CRM by CSV or API, so cost per SQL and per opportunity sit next to spend and pace. On Enterprise, pipeline and revenue (deals) by campaign are added, so cost per pipeline dollar is visible for every campaign in the same view finance uses for the forecast. The first month is free, and you can try the live demo before connecting anything.

Frequently asked questions

How do you calculate cost per opportunity?

Divide the campaign’s spend by the number of sales opportunities attributed to that campaign in the same period or lead cohort. Use one attribution rule consistently, such as the first ad campaign that created the contact.

What is the difference between cost per SQL and cost per opportunity?

Cost per SQL divides spend by leads that sales has qualified. Cost per opportunity divides spend by leads that became deals in the pipeline. The gap between the two shows how many qualified leads stall before a deal is created.

Should I use the period view or the cohort view?

Use the period view when leads become opportunities within a few weeks. Use the cohort view for long sales cycles, and label the newest cohorts as still maturing so they are not read as poor results.

What CRM data do I need for cost per opportunity by campaign?

The ad campaign on every contact (click ID and UTMs kept from the first visit), lifecycle stage dates, contacts associated with deals, and agreed definitions of SQL and opportunity.

Is the lowest cost per opportunity the best campaign?

Not always. Compare pipeline per dollar and win rate too. A campaign with a higher cost per opportunity can create larger deals and more pipeline for each dollar spent.

Related service: Paid media. See also pricing and client results.

We run enterprise B2B demand generation for teams in Montreal, Toronto, Ottawa and the United States.

Keep reading

Related insights

Every resource on this topic

Free 30-minute pipeline plan

Let’s have a quick chat.

No pitch and no commitment. We would genuinely love to hear what you are working on, what needs to change, and share what we would bring to the table. Two short steps, and a senior strategist replies within one business day.

  • Senior-led first call, no junior handoff
  • Your top three fixes, whether or not we work together
  • NDA on request, transparent paid media fees
$120M+pipeline influenced
18,000+qualified leads
92%clients expand scope
PlanConversion Strategy TeamSenior strategists in ABM, paid media, search, RevOps and AI. Every request is read by a person.

Trusted by enterprise and growth B2B teams

  • ABB logo
  • KNIME logo
  • Nakisa logo

Founder’s in-house leadership. Before PlanConversion, the founder led enterprise marketing in-house at these companies as Director of Revenue Growth. They are not clients.

  • Coveo logo
  • Assent logo
You are requesting: Free 30-minute pipeline plan
About your team

This helps us bring relevant examples and a realistic scope.

Reply in one business dayNDA on requestSenior team on every call

We use your details only to reply to this request. No mailing lists, no sharing. Privacy policy

Pipeline planPricing