# How to map Salesforce Lead Status

Translate SourceLoop's internal lifecycle stages into Salesforce's Lead Status picklist values. Both directions, custom picklist values supported.

Source: https://sourceloop.ai/help/map-salesforce-lead-status/
Updated: 2026-05-28

---

Salesforce orgs use the `Status` picklist on the Lead object to track lead state (Open, Working, Converted, Unqualified, plus custom values your team has added). SourceLoop has its own internal lifecycle stages (New, Contacted, In Progress, Converted, Lost). This article walks through aligning the two so SourceLoop dashboards reflect your Salesforce pipeline and Salesforce records show the SourceLoop stage as data your reps can filter on.

## Before you start

You'll need:

- [Salesforce connected to SourceLoop](/help/connect-salesforce-to-sourceloop/)
- **Admin** or **Owner** role in SourceLoop
- A list of your **Lead Status picklist values** (visible in Salesforce at Setup -> Object Manager -> Lead -> Fields & Relationships -> Lead Status)

## How the mapping works

The Lead Status mapping is **per-connection** and **bidirectional**:

- **Inbound** (Salesforce → SourceLoop): when a Lead is pulled in, SourceLoop reads its `Status` value (e.g., `Working`) and translates it to the matching SourceLoop stage (e.g., `In Progress`). The mapped stage drives funnel dashboards in SourceLoop.
- **Outbound** (SourceLoop → Salesforce): when a SourceLoop contact's stage changes (e.g., based on a Stripe payment), the mapping translates back to a Salesforce picklist value and updates the Lead's `Status` field.

## Step 1: Open the Stage Mapping panel

1. Sign in to [SourceLoop](https://app.sourceloop.ai/).
2. Open **Setup -> CRM -> Salesforce**.
3. Click the **Stage Mapping** tab inside the drawer.

The panel shows your Salesforce Lead Status values in the left column, each with a dropdown of SourceLoop stages on the right.

## Step 2: Map each Salesforce Lead Status to a SourceLoop stage

A typical mapping for an org using Salesforce's standard values:

- `Open - Not Contacted` → New
- `Working - Contacted` → Contacted
- `Closed - Converted` → Converted
- `Closed - Not Converted` → Lost

For an org with custom values (e.g., `MQL`, `SQL`, `Working`, `Nurturing`):

- `MQL` → Contacted
- `SQL` → In Progress
- `Working` → In Progress
- `Nurturing` → In Progress
- `Disqualified` → Lost

For each row, pick the matching SourceLoop stage and the mapping saves automatically on selection.

> **Many-to-one is the norm**
> Salesforce orgs often have 8-15 Lead Status values for granular pipeline reporting; SourceLoop's 5 default stages cover the broader funnel. Mapping several Salesforce values to one SourceLoop stage is normal and recommended, the mapping is for analytics aggregation, not granular state.

## Step 3: Map Converted leads carefully

Salesforce's `IsConverted` flag is separate from `Status` — a Lead can be marked Converted via Lead conversion (which creates a Contact, Account, and optionally Opportunity) independently of its Status picklist value.

For revenue and funnel analytics in SourceLoop, the practical rule:

- Map any `Closed - Converted` or `Qualified` Status values to SourceLoop's **Converted** stage
- Map any `Closed - Not Converted`, `Disqualified`, or `Unqualified` Status values to SourceLoop's **Lost** stage
- Leave any in-progress Status values mapped to **In Progress** so they appear in active funnel reports

## Step 4: Verify the mapping is taking effect

1. Wait 15 minutes for the next delta sync (or click **Resync now** on the Salesforce card).
2. Open a Lead in SourceLoop's Contacts Hub. Its **Lifecycle stage** should reflect the mapped Salesforce value.
3. Update the Lead's `Status` in Salesforce. Within 15 minutes the SourceLoop contact's stage updates to match.

If the stage stays blank, see [Troubleshoot Salesforce sync issues](/help/troubleshoot-salesforce-sync/).

## Mapping a custom Lifecycle Stage field (not Lead Status)

If your Salesforce org has a custom field like `Lifecycle_Stage__c` (some orgs add this to mirror HubSpot's concept), SourceLoop can map to it instead of (or in addition to) the standard `Status` field.

1. In the Stage Mapping tab, click **Change target field**.
2. Pick your custom field (e.g., `Lifecycle_Stage__c`) from the dropdown of available picklist fields.
3. Save.
4. Map each picklist value the same way as in Step 2.

You can have both `Status` and `Lifecycle_Stage__c` mapped at once; SourceLoop writes both.

## Opportunity Stage (a separate flow)

Opportunity Stage is **not** mapped via this panel. Salesforce Opportunities use multi-pipeline stage flows that vary by record type, and SourceLoop preserves your existing pipeline structure as-is, no per-stage mapping is needed.

On inbound sync, Opportunities flow into SourceLoop with their current Stage and pipeline. Funnel reports respect the Salesforce stage order automatically.

## What's next

If the mapping isn't behaving as expected, the troubleshooting article walks through the common causes: [Troubleshoot Salesforce sync issues](/help/troubleshoot-salesforce-sync/).

## Frequently Asked Questions

### Does Salesforce have a lifecycle stage field like HubSpot?

Not natively. Salesforce's closest equivalent is the Lead Status picklist (`Status` field on Lead). Some orgs add a custom field like `Lifecycle_Stage__c` to mirror HubSpot's concept; SourceLoop can map to either. The Stage Mapping tab in the Salesforce drawer lets you pick which Salesforce field to use.

### My team uses Salesforce's standard Lead Status (Open, Working, Converted, Unqualified). Can I map to those?

Yes, that's the most common case. SourceLoop's Stage Mapping panel pre-loads your org's Lead Status picklist values from Salesforce's Describe API, so you'll see exactly what your team uses (including any custom values).

### What about Opportunity Stage? Can SourceLoop map to it?

Opportunity Stage is handled separately. SourceLoop pulls Opportunity records and their stages on inbound sync; the standard Opportunity stages flow into SourceLoop dashboards automatically. No manual mapping needed because Opportunities use Salesforce's own multi-pipeline stage flow, which SourceLoop preserves as-is.

### If my Salesforce admin adds a new Lead Status value, do I need to update the mapping?

Yes. New picklist values appear in SourceLoop's Stage Mapping dropdown after the next properties cache refresh (every 24 hours, or after a manual reconnect). Map the new value to a SourceLoop stage and save.

### What happens if SourceLoop sees a Salesforce Lead Status I haven't mapped?

The raw Salesforce value is preserved on the contact in `lead_status_raw`, but the mapped `lead_status_id` stays NULL. You can add the mapping later, and the next sync re-applies it.

### Can I map multiple Salesforce Lead Status values to the same SourceLoop stage?

Yes. SourceLoop's stages are a fixed funnel (New → Contacted → In Progress → Converted / Lost) while Salesforce orgs often have many granular statuses. Mapping multiple Salesforce values to one SourceLoop stage (e.g., 'Working', 'Nurturing', 'Awaiting Response' all → 'In Progress') is the standard pattern.
