> ## Documentation Index
> Fetch the complete documentation index at: https://docs.os.default.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Default and Salesforce: what syncs, what triggers, which permissions

> See what Default reads from and writes to Salesforce, which objects start workflows, how Data sync and Watched fields work, and which package, permissions, and user mappings the connection needs.

Default connects to Salesforce through the Default managed package and a Salesforce sign-in. Once
connected, Default workflows start when Salesforce records are created or updated, read and write
standard and custom objects, and set record owners from Default queues. Default can also import
Salesforce records into its own data every hour.

> [!NOTE]
>
> Select **Settings** in the sidebar, then **Connections** under **Workspace Settings**, and open
> **Salesforce**. Admin access is required.

## What Default supports in Salesforce

| Question | Answer | Where |
| - | - | - |
| Start a workflow when a record is created | Yes | **CRM Record Created** trigger |
| Start a workflow when a record is updated | Yes, on any update or only when chosen fields change | **CRM Record Updated** trigger |
| Start a workflow when a record is deleted | No | |
| Create, update, and find records | Yes, standard and custom objects | **Create Record**, **Update Record**, **Match Record** nodes |
| Convert a Lead | Yes | **Convert Lead** node |
| Log and update Tasks and Events | Yes | **Create Activity**, **Match Activity**, **Update Activity** nodes |
| Assign a record owner from a queue | Yes, by writing **Owner ID** | **Round-Robin** and **Update Record** nodes |
| Import records into Default | Yes: Account, Contact, Lead, and Opportunity, refreshed every hour | **Data sync** on the Salesforce page |
| Connect a sandbox org | Yes | **Connect** → **Sandbox** |
| Look up a lead from the Chrome extension | Yes, a Contact or Lead by email | [Chrome extension](/chrome-extension.md) |

Data sync and triggers only read from Salesforce. Default changes Salesforce records only when a workflow
node writes to them, or when someone confirms a `crm_write` update through the
[MCP server](/mcp-server.md) (Beta).

## Connect Salesforce to Default

Salesforce needs the Default managed package installed in your org before you authorize the
connection. No Connected App or developer setup is needed.

**1. Choose Production or Sandbox**

On the Salesforce page, **Connect** is a menu with 2 choices:

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

**2. Install the Default package**

The **Connect to Salesforce** dialog opens on **Install the Default package**. Select
**Install in Production** or **Install in Sandbox** to open the install page, or select
**Copy URL** and send the link to your Salesforce admin.

On the Salesforce install screen, choose **Install for All Users**. **Admins Only** and
**Specific Profiles** can stop Default from reading the objects it needs.

When the install finishes, check **I've already installed the Default package**.

**3. Enter your sandbox subdomain (sandbox only)**

Enter the part of your sandbox URL before `.my.salesforce.com`, for example `acme--dev` from
`acme--dev.my.salesforce.com`. You can paste the full URL, and Default keeps only the subdomain.

**4. Authorize the connection**

Select **Connect** and sign in to Salesforce in the popup.

**5. You're connected**

The Salesforce page shows **Data sync** and **Watched fields**, and the Salesforce card on the
Connections page shows a check mark. Default also starts mapping members
to Salesforce users by email.

## The Default managed package

Default checks the package when it loads the Salesforce connection: whether it is installed, its
version, and whether it was installed for all users. When the package is missing right after you
authorize, Default removes the new connection and asks you to install the package and connect again.

After the connection exists, the Salesforce page shows an alert when the package needs attention:

| Alert | What it means | What to do |
| - | - | - |
| **Our Salesforce package was uninstalled** | Default can't find the package in your org. The integration counts as disconnected until it is back. | Select **Reinstall**, choose **Production** or **Sandbox**, then reconnect. |
| **Your Salesforce package is out of date** | The installed version is below the version Default supports. | Select **Upgrade**, choose **Production** or **Sandbox**, then install the newer version. |
| **Salesforce package wasn't installed for all users** | The package was installed for **Admins Only** or **Specific Profiles**. | Select **Reinstall**, choose **Production** or **Sandbox**, then choose **Install for All Users**. |

## Salesforce permissions Default needs

| Requirement | Why | If it's missing |
| - | - | - |
| The Default package, installed for all users | The integration depends on it. | Connecting fails, or the page shows a package alert. |
| The Salesforce user who authorizes can read Account, Contact, and Lead | Default reads these objects while it sets up the connection. | Connecting fails with "The Salesforce user you connected with doesn't have permission to read Account, Contact, or Lead." |
| That user has the **Author Apex** permission | **Convert Lead** runs Salesforce's lead conversion as anonymous Apex. Only this node needs it. | **Convert Lead** fails with a message that the connected user needs the **Author Apex** permission. |
| That user has **API Enabled**, **Manage Flow**, and **Customize Application** | Default deploys a Flow and Outbound Message for triggers it can't deliver through Change Data Capture. Only [Flow delivery](#flow-delivery) needs them. | Publishing a workflow with a Flow-delivered trigger stops with Salesforce's error, and the workflow isn't published. |
| The **Admin** role in Default | Only admins can open the Salesforce page, so connecting, disconnecting, and **Data sync** are admin-only. | Members see a message that they can only access calendar integrations. |

Default's reads and writes go through the connection that Salesforce user authorized. Give that user
access to every object and field your workflows read or write.

## Salesforce objects Default supports

| Salesforce object | Starts a workflow | **Create Record**, **Update Record**, **Match Record** | **Data sync** | Default record |
| - | - | - | - | - |
| **Account** | Yes | Yes | Yes | Company |
| **Contact** | Yes | Yes | Yes | Person |
| **Lead** | Yes | Yes, and **Convert Lead** | Yes | Person |
| **Opportunity** | Yes | Yes | Yes | Opportunity |
| **User**, **Task**, **Case**, **Campaign**, **Campaign Member**, **Opportunity Contact Role** | If the object supports Change Data Capture, or record-triggered Flows and Outbound Messages, in your org | Yes | No | None |
| Custom objects (`__c`) | If the object supports Change Data Capture, or record-triggered Flows and Outbound Messages, in your org | Yes | No | None |
| Other standard objects | If the object supports Change Data Capture, or record-triggered Flows and Outbound Messages, in your org | No | No | None |

**Create Activity**, **Match Activity**, and **Update Activity** work with Salesforce **Task** and
**Event** records. For every node's fields, see [CRM nodes](/workflows/steps-crm.md).

## Workflow triggers from Salesforce

2 triggers start a workflow from a Salesforce record. Both appear once Salesforce is connected and use
the same fields:

| Field | What it does | Example |
| - | - | - |
| **CRM** | The connected CRM to watch. | **Salesforce** |
| **Record** | The Salesforce object to watch. | **Lead** |
| **Condition** | Optional. Only records that match start the workflow. | `Lead Source` is `Inbound` |

* **CRM Record Created** fires when a new record of that object appears in Salesforce.
* **CRM Record Updated** fires when an existing record changes. A **Condition** that uses **Fields
  Updated** limits it to changes in the fields you name. For triggers delivered by a Flow, **Fields
  Updated** only contains fields the trigger's **Condition** proves changed. See [Flow
  delivery](#flow-delivery).

For Salesforce, the **Record** list shows Account, Contact, Lead, and Opportunity, plus the other
standard and custom objects in your org that support Salesforce Change Data Capture or
record-triggered Flows and Outbound Messages.

Deleting a record in Salesforce does not start a workflow.

## How Salesforce changes reach Default

Salesforce sends record changes to Default through Salesforce Change Data Capture, or through a
record-triggered Flow when Change Data Capture can't serve the object (see [Flow delivery](#flow-delivery)).
When you publish a workflow with a Salesforce trigger, Default subscribes to change events for that object and the fields
the workflow needs, before the new version goes live.

* **No Setup step for Change Data Capture.** Default selects the objects for Change Data Capture when you publish, so there is
  nothing to turn on in Salesforce Setup. The selection can sit on a custom channel, so it might not
  appear on the Change Data Capture page in Setup.
* **Publishing can need an admin.** If a publish needs Default to watch a new object or field, or to
  set up or change a Flow, the person publishing must be an admin who can manage integrations in Default. Otherwise the publish stops with a message asking an
  admin to publish the workflow once.
* **A failed setup blocks the publish.** If Default can't set up change delivery, the workflow is not
  published and the previously published version keeps running.

### Flow delivery

Salesforce limits how many objects an org can select for Change Data Capture. Without Salesforce's
Change Data Capture add-on, the limit is 5 objects, shared with every other tool in your org that
uses Change Data Capture. Salesforce doesn't count the selections an AppExchange app makes for
itself. Each object your published Default workflows trigger on uses 1 selection.

When Change Data Capture has no room for an object, or the object has no change event, Default
delivers that trigger with a record-triggered Flow and an Outbound Message in your Salesforce org
instead. Default deploys both when you publish, and turns them on after the publish.

* **Prerequisites.** Enterprise, Unlimited, Performance, or Developer Edition, the editions with
  Outbound Messaging. The Salesforce user connected to Default needs **API Enabled**, **Manage
  Flow**, and **Customize Application**.
* **Some objects can't use a Flow.** Salesforce can't send Outbound Messages for some objects, such
  as **Attachment** and **Note**. Default offers them as triggers only when they support Change Data
  Capture, and publishing one stops with a message when your org has no Change Data Capture
  selection left.
* **Don't edit the Flow or Outbound Message.** They appear in Setup under **Flows** and **Outbound
  Messages**, with names that start with `Default_Flow_`. One that Default set up before it used
  that name keeps an older name that also starts with `Default_`. To stop one, pause or unpublish
  the workflow. If one is switched off, replaced, or deleted in Salesforce, Default finds out when
  you open the workflow, and the trigger's panel shows a warning. Publish the workflow again once
  that warning appears to restore it. A publish before then can succeed without restoring the Flow.
* **Deleting a field a Condition uses.** Salesforce may refuse to delete a field that a
  Flow-delivered trigger's **Condition** uses, saying a Flow version references it. Remove the
  field from the **Condition** and publish the workflow first.
* **Fields Updated is partial.** On a Flow-delivered **CRM Record Updated** trigger, **Fields
  Updated** only contains fields the trigger's **Condition** proves changed.
* **Outbound Message limits.** Each save that matches the Flow's entry formula sends 1 Outbound
  Message, which counts toward your org's Outbound Message limits. A trigger with an empty
  **Condition** sends every create or update on the object.
* **Conditions the Flow can't check.** A Flow can't filter on a long or rich text area, or on a
  formula field that reads another record, such as a related record's field, the running user, or a
  roll-up summary. It can only approximate a work or company domain check, some multi-select
  picklist comparisons, and text that looks like a number or a Salesforce ID. For those parts of a
  **Condition**, the Flow filters loosely or not at all, and Default checks the full **Condition**
  before it starts the workflow. Such a trigger sends more Outbound Messages.
* **Retries.** Salesforce retries an Outbound Message for up to 24 hours. Default deduplicates
  retries, so each change starts the workflow once.

## Data sync

**Data sync** on the Salesforce page imports Salesforce records into Default. It lists **Account**,
**Contact**, **Lead**, and **Opportunity**.

| Button or label | What it does |
| - | - |
| **Choose fields** | Opens **Choose *Object* fields**. Turn on **Import all fields**, or pick fields under **Fields to import**, then select **Start sync**. |
| **Enable sync** | Opens the same dialog with the fields you chose before, ready for **Start sync**. |
| **Manage fields** | Changes the fields of an object that is already syncing. Select **Save changes**. |
| **Stop** | Stops syncing the object. Default keeps your field choice for next time. |
| **Syncing** | The object is imported, and the row reads **Refreshed hourly**. |

How Data sync works:

* The first sync imports every existing record of the object. For **Opportunity**, the first import
  covers open opportunities only.
* After that, Default refreshes the object every hour.
* Adding fields to an object that is already syncing imports those fields for existing records too.
* Accounts become Company records in Default, Contacts and Leads become Person records, and
  Opportunities become Opportunity records. To choose which source fills each Company or Person field,
  see [Objects](/settings/configurations/objects.md).

Data sync and workflow triggers are separate. Starting or stopping a sync doesn't change which
workflows run, and triggers work with Data sync off.

## Watched fields

**Watched fields** shows what Default monitors in Salesforce for your workflow triggers. It carries a
**Managed by workflows** badge and is read-only: your published workflows with **CRM Record Created**
or **CRM Record Updated** triggers set it. Select **View workflows** to open them.

Each object shows its current state:

| Badge | Meaning |
| - | - |
| **New records** | A published workflow starts when records of this object are created. |
| **Any field update** | A published workflow starts on any update to this object. |
| ***N* fields** | Published workflows start only when these fields change. Hover to see them. |
| **Record updates** | A published workflow starts on updates to this object, with no field list. |
| **No active triggers** | No published workflow uses this object as a trigger. |

The list covers Account, Contact, Lead, and Opportunity. Triggers on other objects work the same way
but don't appear here.

## What Default writes to Salesforce

Default writes to Salesforce only from the workflow nodes you add, and from confirmed `crm_write`
calls through the [MCP server](/mcp-server.md) (Beta):

| Node | What it writes |
| - | - |
| **Create Record** | A new record. With **Update on conflict**, it updates the record that has the same **Match field** value instead of creating a duplicate. |
| **Update Record** | Field values on an existing record. |
| **Convert Lead** | Converts a Lead into an Account and Contact, and optionally a new Opportunity. |
| **Create Activity** | A new Task or Event, optionally related to a record. |
| **Update Activity** | Field values on an existing Task or Event. |

When a node writes **Owner ID**, Default converts the chosen Default user into their Salesforce user
ID through that user's mapping. A write for a user without a mapping fails.

## Map Default users to Salesforce users

Every Default user who owns Salesforce records needs a Salesforce user mapping.

* **Automatic mapping.** When Salesforce connects, Default matches each member's email to a Salesforce
  user and saves the mapping. It does the same when a new member joins. The Salesforce page shows the
  result, for example "Auto-mapping complete. Matched 12 out of 14 members by email to Salesforce
  users."
* **Manual mapping.** For members whose Salesforce email differs, set their Salesforce User ID in
  [Settings → Users](/settings/users.md): the **User ID** field on the **Salesforce** card of the
  member's **Connections** page, or the **Mappings** tab.
* **Invite from Salesforce.** When inviting teammates in **Settings** → **Users**, **Add from
  Salesforce** adds people from your Salesforce users.

## Limits and behavior to know

| Item | Behavior |
| - | - |
| Data sync refresh | Every hour. |
| First Opportunity import | Open opportunities only. |
| Change delivery | Pushed by Salesforce Change Data Capture. Default doesn't poll Salesforce for changes. |
| Change Data Capture objects | Salesforce's per-org limit applies, 5 objects without the add-on. Triggers past it use Flow delivery. |
| Flow delivery | A record-triggered Flow and Outbound Message that Default deploys in your org at publish, for objects that can't use Change Data Capture. See [Flow delivery](#flow-delivery). |
| Outbound Messages | Each save matching the Flow's entry formula counts toward your org's Outbound Message limits. Salesforce retries for up to 24 hours, and Default deduplicates. |
| Salesforce API usage | Default calls the Salesforce REST API and Tooling API (version 59.0). These calls count toward your org's API request limits. |
| Deleted records | Don't start workflows. |
| Updates made by Default | A **CRM Record Updated** workflow can react to any change. Add a **Fields Updated** condition so it runs only when the fields you care about change. |

## Disconnect Salesforce

Select **Disconnect** on the Salesforce page.

> [!WARNING]
>
> Disconnecting takes effect right away:
>
> * Salesforce triggers stop, and workflow nodes can't read or write Salesforce.
> * Publishing a workflow with a Salesforce trigger fails until Salesforce is connected again.
> * Your Data sync settings are removed with the connection.
>
> If you connect Salesforce again, turn Data sync back on for each object, and republish every
> workflow that uses a Salesforce trigger so Default sets up change delivery again. Triggers that
> Default delivers through a Flow are set up again on their own when you reconnect. If one can't
> be, its trigger panel says why.

Related: [Default integrations](https://www.default.com/integrations)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.