# Create Salesforce Leads from qualified leads

URL: https://useembers.com/help/integrations/salesforce/
Category: Integrations
Plan: Solo and above
Updated: 2026-10-28
Last verified: 2026-10-28

> Connect one Salesforce org with OAuth so Embers creates a Lead, or updates the Lead or Contact you already have, with a completed Task, when a lead qualifies.

Embers can keep Salesforce in step with your LinkedIn pipeline. When a lead qualifies, Embers creates a Salesforce Lead, or updates the Lead or Contact your org already has for that person, and logs a completed Task saying why the lead matters.

> **Warning: Solo and above, administrators only**
>
> Integrations require Solo or above, and only an Embers workspace admin can connect Salesforce or change what it receives; on the Integrations page other members see "Administrators only". Salesforce connects with OAuth; there is no API key or password option. One Salesforce org per Embers workspace.

## Before you start

- **An edition with API access.** Enterprise, Unlimited, Performance, or Developer Edition, or Professional Edition with the API add-on. Without it, Salesforce refuses the connection with that sentence.
- **A Salesforce admin should connect.** Since September 2025, Salesforce lets only users with the "Approve Uninstalled Connected Apps" or "Use Any API Client" permission authorize an app their admin has not installed. Anyone else is refused on Salesforce's consent screen. Either have a Salesforce admin connect, or have one install the Embers app first under **Setup**, **Connected Apps OAuth Usage**, **Install**.
- **A user who can create Leads.** Embers writes as the Salesforce user who connects, so that user needs the "API Enabled" permission and Create on Leads. Embers only sets the fields that user is allowed to set.
- **A custom field for the LinkedIn URL**, recommended: a text or URL field on Lead (and on Contact, if you want Contacts matched too) that the user can edit.

## Connect Salesforce

### Choose where to log in

Open **Integrations** in the sidebar (`/integrations`) and choose **Salesforce**. Under **Environment**, pick how your org logs in:

- **Production** for your live org.
- **Sandbox** for a Salesforce sandbox.

Fill **My Domain (optional)** only for an org that refuses logins through login.salesforce.com. Enter the host, such as `acme.my.salesforce.com`; anything that is not a `my.salesforce.com` address is refused under the field. Then choose **Connect Salesforce**.

### Approve Embers in Salesforce

Salesforce's login and consent screen opens. Log in as the user Embers should write as and allow access. If Salesforce refuses, you come back to Embers with Salesforce's reason. Finish within 10 minutes, or start again.

Before saving the connection, Embers reads the org's name and edition, the user's username, and the Lead and Contact fields. It refuses a connection that could never deliver: an org without API access, a user without "API Enabled", or "The Salesforce user you connected cannot create Leads."

### Pick the LinkedIn URL field

In the **Fields** card, choose **LinkedIn field for Leads**, the custom Lead field that receives the lead's LinkedIn profile URL, and optionally **LinkedIn field for Contacts**. When exactly one custom field mentions LinkedIn in its name or label, Embers preselects it. Only custom text or URL fields the user can edit are offered. Without a LinkedIn field, a lead with no email can't be matched to a Lead or Contact you already have.

Optionally pick a **Lead Source** value from your org's own list, and decide whether Embers should **Log a completed Task** (on by default). Each choice saves as you make it.

### Choose what to send and test

**New leads** is on by default: a lead qualified, so Embers creates or updates the person. **Everything else** adds a known lead engaging again, changing status, or having a [company change](/help/leads/company-changes/), which updates the same record. Report-ready events write nothing to Salesforce.

**Send test** checks the connection and re-reads your fields. It writes no record.

## What Embers writes to a new Lead

| Lead field | Where it comes from |
| --- | --- |
| `FirstName`, `LastName` | The lead's name. A one-word name goes in `LastName`, which Salesforce requires |
| `Company` | The lead's company, or `[not provided]` when Embers has none, because Salesforce requires it |
| `Title` | The lead's title |
| `Website` | Their employer's website, which a converted Lead passes to its Account |
| `Email`, `Phone` | The stored email and phone, on a paid plan, when Embers has them |
| `Country` | The lead's country. With State and Country picklists on, `CountryCode` instead, when your org has that code |
| Your LinkedIn URL field | The lead's LinkedIn profile URL |
| `LeadSource` | The value you picked, if any |
| `Description` | Why the lead qualified: score, ICP verdict, top signals, the reason for the match, LinkedIn profile, headline, company size, industry and LinkedIn page, and a link to the lead in Embers |

Empty values are never sent, and each value is cut to its field's length. Email and phone are never looked up for Salesforce, and [contact details](/help/outreach/lead-enrichment-and-contact-info/) are not part of the [free trial](/help/account-and-billing/free-trial/).

A new Lead runs your org's active lead assignment rule, which picks the owner; without one, the connected user owns it. An update never reassigns a Lead.

**The Task.** The first time Embers sends a person, it logs a completed Task on the record: subject `Embers: qualified lead (score 82)`, the same text as the Description, dated today. An org without a Completed Task status, or a user who cannot create Tasks, still gets the Lead.

## How Embers finds someone already in Salesforce

Embers checks in this order and stops at the first hit:

1. **A record Embers linked before.** If that Lead was converted since, Embers follows it to the Contact. If it was deleted or merged away, Embers forgets the link and keeps looking.
2. **The email**: an unconverted Lead, then a Contact, with the lead's email. Only when Embers holds an email.
3. **The LinkedIn URL**: an unconverted Lead, then a Contact, with the same URL in the field you picked.
4. **Otherwise a new Lead.** If a blocking duplicate rule refuses it and names the record it matched, Embers updates that record instead.

Updating a Lead writes the same fields except `Description`, `LeadSource`, and the `[not provided]` placeholder. Updating a Contact writes only `Title` and your Contact LinkedIn field, because a Contact is someone your org already works with. A record the connected user can no longer see or edit, such as one an assignment rule gave a rep under private sharing, is left alone and the delivery counts as sent.

Without an email, the LinkedIn URL field is the only way Embers can find a person you added by hand, so pick one.

## Send the leads you already have

Salesforce gets a lead when it first qualifies, so leads found before you connected never reach it on their own. Choose **Send existing leads** to send them once, best score first. It works [as on HubSpot](/help/integrations/hubspot/#send-the-leads-you-already-have): only qualified leads count, your rules apply, and anyone already linked to a record in this org is skipped, so running it again sends only what is missing. You can also push chosen leads with [Send to](/help/leads/send-to-destination/); a lead already linked is skipped as `already synced to Salesforce Lead` and its record ID unless you tick **ignore rules**.

## Who gets delivered

Salesforce keeps its own [delivery rules](/help/integrations/delivery-rules/): a minimum score, ICP matches only, sources, and excluded titles and industries. A lead they hold back writes nothing and is listed as **Held back**, with **Send anyway** on its row.

## Activity, retries, and pauses

The **Activity** card lists 30 days of deliveries, each linking to its Lead or Contact in Salesforce once one exists. **Retry** re-sends a failed, blocked, or skipped row.

Salesforce's daily API limit, outages, and record locks are retried: the first attempt plus seven retries, from 30 seconds out to about 6.3 days. A record Salesforce refuses for its own values (a required field, a validation rule, an invalid email, a duplicate rule with no usable match, a restricted picklist value, or a trigger or flow that failed) fails that lead only. Five of those in a row, with nothing delivered between, pause Salesforce. So do a refused connection, lost API access, and a LinkedIn URL field that was deleted. Embers sends no email about a pause; [Salesforce delivery is paused](/help/troubleshooting/salesforce-delivery-paused/) walks through each reason.

**Disconnect Salesforce**, in the **...** menu beside the status, revokes Embers' access in Salesforce and forgets it. Everything already in Salesforce stays. Reconnecting the same org keeps your settings; a different org resets the LinkedIn URL fields and Lead Source.

## Troubleshooting

**Salesforce refuses on its consent screen.** The user is not a Salesforce admin and the Embers app is not installed in the org. Have an admin connect, or install the app under **Setup**, **Connected Apps OAuth Usage**.

**Logging in through Production fails.** Your org may only accept its My Domain. Connect again with **My Domain**.

**A new field is missing from the picker.** Choose **Refresh fields** in the **Fields** card, which re-reads your org's fields.

**Leads arrive as `[not provided]`.** Embers had no company for the lead. Salesforce requires one, so Embers sends the placeholder and never writes it over a real value.

## Related

- [Fix Salesforce delivery when it is paused](/help/troubleshooting/salesforce-delivery-paused/): Each pause reason and how to clear it.

- [Control which leads reach each destination](/help/integrations/delivery-rules/): Decide which leads are worth a Salesforce record.

- [Reveal a lead's email and phone](/help/outreach/lead-enrichment-and-contact-info/): Where email and phone come from.

## Frequently asked questions

**Will Embers create duplicate Leads?**

Embers looks for the person first, by the record it linked before, by email, then by the LinkedIn URL field you picked, and updates what it finds. A lead with no email can only be matched through the LinkedIn URL field, so pick one. A blocking duplicate rule that names its match makes Embers update that record instead.

**What happens when my org reaches its daily API limit?**

Deliveries wait and retry on the usual schedule, the first attempt plus seven retries over about 6.3 days. Hitting the limit never pauses Salesforce or asks you to reconnect. Changing settings meanwhile says the org has used its API requests for today.

**What if someone deletes the field Embers writes the LinkedIn URL to?**

Salesforce pauses with "Pick the LinkedIn URL field again". Choose a field again and delivery carries on. A field Embers writes that is hidden from the connected user is dropped from the next attempt without a pause.

**Can I try it on a sandbox first?**

Yes. Choose Sandbox when you connect. To move to production, disconnect and connect the production org. A different org resets the LinkedIn URL fields and Lead Source, which you pick again for that org.

**Does Embers send emails or anything else from Salesforce?**

No. Embers writes a Lead, updates a Lead or Contact, and logs a completed Task. It never sends email, starts a cadence, or adds anyone to a campaign.

**Does Embers create Contacts, Accounts, or Opportunities?**

No. A new person always becomes a Lead. Embers updates a Contact only when the person is already one, and never touches Accounts, Opportunities, or Campaigns.
