Skip to main content
Nerve Centre KPIs · Audit Profile · Sentiment Settings The questions every B2B SaaS marketer asks at 9am on Monday: did Lead Gen Forms and Conversation Ads generate qualified MQLs over the weekend, are campaigns burning premium LinkedIn CPCs without converting, and which audiences have saturated below the privacy floor. Cross-references CRM/MAP siblings (HubSpot, Salesforce) for the highest-leverage finding - a broken Lead Gen Form sync silently drops every captured lead and is the single most expensive, most fixable failure on the platform.

What this audit checks

Authentication & access

  • Access token (60-day) within 14 days of expiry
  • Refresh token (365-day) within 30 days of expiry - renew before merchant re-prompt
  • Ad account URN (urn:li:sponsoredAccount) resolves and account status is ACTIVE not CANCELLED/PENDING_DELETION
  • Required scopes present (r_ads, r_ads_reporting, rw_ads, r_organization_social)

Spend & budget pacing

  • Daily budget utilisation per campaign (under-pacing <70% or over-pacing >120% of dailyBudget)
  • Wasted-spend burst - zero-MQL spend >$X in last 72h on any active campaign
  • End-dated or COMPLETED campaigns still accruing spend
  • Bid creep - unitCost above category benchmark given premium LinkedIn CPC floor

Campaign performance (ROAS / CTR / CPC)

  • Cost-per-MQL (B2B ROAS proxy) spiked >50% vs prior 7D same-DOW window via /v2/adAnalytics
  • CTR below objective benchmark per campaign objectiveType (LEAD_GENERATION, WEBSITE_CONVERSIONS)
  • CPC above account median across active SPONSORED_UPDATES and TEXT_AD campaigns
  • Campaigns with >$X spend and <1% conversion (zero-conversion spend)

Conversion & attribution

  • Lead Gen Form sync to CRM/MAP broken - /v2/adFormResponses rising while contact creation <50% expected for >30min
  • Conversion tracking gap - WEBSITE_CONVERSIONS campaigns reporting clicks but zero recorded conversions
  • Lead Gen Form completion rate collapse vs trailing 7D baseline
  • Conversation Ads (SPONSORED_INMAILS) response rate <1% - sender reputation decay risk

Creative & audience health

  • AdCreatives with review_status REJECTED or PENDING in active campaigns
  • Member-match audiences below the 300-member privacy floor (won’t deliver, spend reallocates to broad)
  • Audience saturation - effective member-match reach <50K narrowing delivery
  • Orphan campaigns ACTIVE with no active AdCreative

Cross-channel revenue at risk

  • Lead Gen Form lead email_hash not found in hubspot.contact / salesforce.lead within sync SLA (MQL leak)
  • Active campaign targeting commerce-sibling SKU with qty=0 (rare B2B-commerce OOS spend)
  • Branded paid clicks cannibalising organic when google_search_console sibling ranks #1 for the query
  • Landing pages with website_performance LCP p75 >4s and conversion <0.5x account average

Severity thresholds

SignalWarnCritical
roas3.0-
ctr0.4-
conversion_rate5.0-
cpc1220
wasted_spend_pct815
budget_pacing70-
refresh_token_days_to_expiry307

Data sources

  • GET https://api.linkedin.com/v2/adAccounts - Auth + account status sanity
  • GET https://api.linkedin.com/v2/adCampaigns - Campaign state, budget, objective
  • GET https://api.linkedin.com/v2/adCreatives - Creative review_status + type
  • GET https://api.linkedin.com/v2/adAnalytics - Spend / impressions / clicks / conversions for ROAS, CTR, CPC
  • GET https://api.linkedin.com/v2/adFormResponses - Lead Gen Form submissions for CRM/MAP sync integrity
  • POST https://www.linkedin.com/oauth/v2/accessToken - Refresh OAuth access token