Skip to content
SourceLoop
Salesforce

How to push UTM parameters to Salesforce

Map SourceLoop's UTM and source fields to Salesforce Lead, Contact, Account, and Opportunity records. Default mapping, custom fields, and the standard LeadSource field.

On this page
  1. Before you start
  2. The fields SourceLoop can push
  3. Default mapping
  4. Step 1: Open the Salesforce Field Mapping tab
  5. Step 2: Add a custom mapping
  6. Step 3: Configure Salesforce’s Lead → Contact conversion mapping
  7. Step 4: Verify the mapping is working
  8. Should you also map to Salesforce’s standard LeadSource?
  9. Pushing to custom objects
  10. What’s next

By default, SourceLoop ships with a mapping that writes UTM and source data to sourceloop_* custom fields on the Lead and Contact objects. For most teams that’s enough. For teams that need to populate the standard LeadSource field, map to existing custom fields, or push to Accounts and Opportunities, the Field Mapping tab supports it.

This article walks through the mapping system end to end.

Before you start

You’ll need:

The fields SourceLoop can push

Same fields as every CRM integration:

Contact identity: email, contact name, phone, company name, country, city, title, LinkedIn URL

Attribution (per touchpoint):

  • First-touch: source, medium, campaign, content, term, landing page, channel, keyword
  • Last-touch (converting session): same set

Lifecycle: lead status (raw + mapped), lifecycle stage (raw + mapped), lead score, qualified flag

Revenue: quote value, sales value

Default mapping

When you connect Salesforce and enable outbound sync, SourceLoop sets up these default mappings on the Lead object:

  • first_sourcesourceloop_first_source__c
  • first_mediumsourceloop_first_medium__c
  • first_campaignsourceloop_first_campaign__c
  • first_landing_pagesourceloop_first_landing_page__c
  • latest_sourcesourceloop_latest_source__c
  • latest_mediumsourceloop_latest_medium__c
  • latest_campaignsourceloop_latest_campaign__c
  • latest_landing_pagesourceloop_latest_landing_page__c
  • lead_status_rawStatus (standard Salesforce Lead Status picklist)

Same set is mirrored on the Contact object so that data survives Lead conversion.

These fields are created on the Salesforce side automatically the first time SourceLoop writes to them, no manual setup required (provided the connecting user has create-custom-field permission).

Step 1: Open the Salesforce Field Mapping tab

  1. Sign in to SourceLoop.
  2. Open Setup -> CRM -> Salesforce.
  3. Click the Field Mapping tab inside the drawer.

You’ll see existing mappings (defaults + any you’ve added), an Add mapping button, and a Salesforce field picker that lists every standard and custom field SourceLoop’s introspection picked up.

Step 2: Add a custom mapping

  1. Click Add mapping.
  2. Pick the entity type:
    • Lead (the most common starting point)
    • Contact (for after conversion)
    • Account (account-level rollup)
    • Opportunity (closed-won attribution)
  3. Pick the SourceLoop field (left dropdown), e.g., first_source.
  4. Pick the Salesforce field (right dropdown), e.g., LeadSource (standard) or Original_UTM_Source__c (custom).
  5. Pick the direction:
    • Outbound (SourceLoop → Salesforce) — for fields SourceLoop owns.
    • Inbound (Salesforce → SourceLoop) — pull existing Salesforce values into SourceLoop (e.g., Opportunity Amount, Owner, Stage).
    • Bidirectional — both ways; most-recent value wins.
  6. Click Save.

New mapping takes effect on the next sync cycle (within 15 minutes).

Step 3: Configure Salesforce’s Lead → Contact conversion mapping

This is the most-missed step. Salesforce’s standard Lead conversion only copies custom fields from Lead to Contact if you’ve explicitly configured the mapping. Without it, your sourceloop_first_source__c value on the Lead gets dropped when the Lead converts to a Contact.

  1. In Salesforce, go to Setup -> Object Manager -> Lead -> Fields & Relationships -> Map Lead Fields.
  2. For each sourceloop_* custom field on Lead, map it to its same-named counterpart on Contact.
  3. Save.

Now your attribution carries through every conversion. If you converted Leads before doing this, the historical conversions won’t have the source data on the Contact, but every conversion going forward will.

Step 4: Verify the mapping is working

  1. Wait for one full sync cycle (~15 minutes) after a new conversion happens.
  2. Open the Lead in Salesforce.
  3. Check the sourceloop_* custom fields and any standard fields you mapped, values should match what’s shown on the contact in SourceLoop’s Contacts Hub.

If a field isn’t getting written, see Troubleshoot Salesforce sync issues.

Should you also map to Salesforce’s standard LeadSource?

A common question. Two camps:

  • Don’t map (default behavior): SourceLoop writes to sourceloop_* fields. Your team’s existing LeadSource conventions stay intact. Reports built on LeadSource keep working unchanged. SourceLoop adds new fields you can pivot on separately.
  • Do map: SourceLoop writes first-touch source to LeadSource directly. Useful when your existing Salesforce reports are heavily built on LeadSource and changing them is more work than letting SourceLoop populate it. Caveat: SourceLoop will overwrite any prior LeadSource value (including manual entry).

There’s no wrong answer, it depends on how much existing Salesforce reporting depends on LeadSource. Most teams start with the default and add the LeadSource mapping later if reporting is awkward.

Pushing to custom objects

Custom objects (e.g., Custom_Application__c) aren’t supported via the Field Mapping tab. For those, use the Outbound Webhook (Setup -> Integrations -> Webhooks) to send raw conversion events as JSON and write to the custom object via an Apex trigger or Flow on your side.

What’s next

After fields are mapped, the next step is aligning SourceLoop’s lifecycle stages with Salesforce’s Lead Status picklist. See Map SourceLoop stages to Salesforce Lead Status.

Frequently asked questions

  1. Do I need to create custom fields in Salesforce first?

    No. SourceLoop auto-creates the default `sourceloop_*` custom fields on the Lead and Contact objects the first time it tries to write them. The connecting Salesforce user needs Modify All Data + the ability to create custom fields. If you'd rather map to existing fields, add the mapping in the Field Mapping tab and skip the auto-create.

  2. Should I map first-touch source to Salesforce's standard LeadSource field?

    Personal preference. Mapping to `LeadSource` means SourceLoop overwrites whatever was there (manual entry, web-to-lead default, etc.). If your team already uses LeadSource for high-level categorisation (Web, Partner, Trade Show), it's safer to leave it alone and map SourceLoop to `sourceloop_first_source__c` so both values coexist. Some teams do map to LeadSource specifically so existing Salesforce reports work without modification.

  3. Can I push UTMs to the Account record, not just Lead and Contact?

    Yes. Add a mapping with entity type 'account' and pick the Salesforce Account field as the target. SourceLoop aggregates UTM values across all Contacts on the Account and writes the consensus value.

  4. What about pushing to Opportunity?

    Yes. Opportunity-level attribution is supported. The source values come from the converting Lead / Contact (the person who opened the Opportunity), and SourceLoop writes them onto the Opportunity record on each sync.

  5. Does the mapping survive Salesforce's Lead → Contact conversion?

    Yes, with one caveat. Salesforce's standard conversion only carries fields you've explicitly mapped in its Lead Convert Settings (Setup -> Customize -> Leads -> Lead Custom Field Mapping). After SourceLoop auto-creates `sourceloop_*` fields on both Lead and Contact, you should configure Salesforce's conversion mapping to copy each `sourceloop_*` field from Lead to its Contact counterpart. SourceLoop's docs panel in the Salesforce drawer has a step-by-step on this.

  6. My custom field has a Field-Level Security restriction. Will SourceLoop be able to write?

    SourceLoop writes via the OAuth-connected user. If that user's profile doesn't have edit access to the field, the write fails silently. Either grant the user FLS edit access, or connect with a System Administrator user.

Track every conversion to its true source

Capture and send full attribution data from every signup, lead, booking, and sale to your CRM and ad platforms, so you know exactly what's driving revenue.

Without SourceLoop

Untagged

Kayden Floyd

kayden@abc.com

  • SourceUnknown
  • MediumUnknown
  • CampaignUnknown
  • Landing pageUnknown
Journey
No touchpoints captured

With SourceLoop

Auto-tagged

Kayden Floyd

kayden@abc.com · Acme Co.

  • Channel Paid Social
  • CampaignFree_demo
  • Landing page/pricing
Journey
Synced to HubSpot Google Ads Meta