Help center

CRM lifecycle stages by campaign

On Pro, connect HubSpot, Salesforce or Pipedrive, or send counts from any CRM by CSV or API, and Pacing Console shows contacts, MQLs, SQLs, opportunities and customers next to each campaign's spend, with the cost per stage.

Connect your CRM

  1. Open the CRM card
    In Pacing Console, open Connect platforms and find CRM lifecycle stages (marked Optional, Pro). You need to be an owner or editor.
  2. Choose your CRM
    Under Choose your CRM, press HubSpot, Salesforce, Pipedrive, Other CRM: CSV or Other CRM: API.
  3. Enter read-only credentials
    • HubSpot: in Settings, Integrations, Private apps (newer accounts: Development, Legacy apps), create an app named Pacing Console with the crm.objects.contacts.read scope only. Paste the token (it starts with pat-) and press Connect HubSpot.
    • Salesforce: in Setup, App Manager, create a New Connected App with the api scope and Enable Client Credentials Flow, and set Run As to an integration user that can read Leads and Opportunities. Enter My Domain, Consumer key and Consumer secret, then press Connect Salesforce.
    • Pipedrive: copy your personal API token from Personal preferences, API, and press Connect Pipedrive. For matching, add deal fields named utm_campaign and utm_source, or use Pipedrive's Channel and Channel ID fields.
  4. Make sure ads pass the campaign
    Ads should land with utm_campaign set to the ad campaign's name or ID. That is how CRM records are matched to campaigns.
  5. Read the results
    A CRM column appears in the Pacing table with contacts, MQLs, SQLs and opportunities per campaign. The campaign window shows Cost per MQL and Cost per SQL, and Insights shows Pipeline by campaign with cost per stage.

Any other CRM: CSV upload

Works with Microsoft Dynamics 365, Zoho CRM, Salesforce reports and others. Export the leads or contacts created this month with these columns, choose the file and press Upload:

Any other CRM: API

For a CRM that can call a webhook through Zapier, Make or Power Automate. Send this month's records in one call with your workspace key (the same key your scripts use):

POST https://pacing.planconversion.com/api/crm/ingest
{
  "key": "your workspace key",
  "records": [
    { "utm_source": "linkedin", "utm_medium": "paid_social",
      "utm_campaign": "ABM tier 1", "stage": "MQL", "count": 12 }
  ]
}

Good to know

Related articles