---
title: "Salesforce: a read-only callout, no writeback"
summary: "This is an integration pattern over the HTTP API, not a shipped connector. There is no package, no managed application, no marketplace listing and nothing to install: what is described below is the shape of the integration you would build, written down because knowing the shape in advance is most of the work. The CRM route stays read-only on your side: a named credential holding the API key, a callout that resolves an account, and a set of custom fields that record what came back. Entity Bind writes nothing to your CRM at any point. The first thing a duplicate-account project needs is an answer nobody has acted on yet."
canonical_url: https://entitybind.com/integrations/salesforce
last_updated: 2026-10-12
copy: full
---

# Salesforce: a read-only callout, no writeback

> This is an integration pattern over the HTTP API, not a shipped connector. There is no package, no managed application, no marketplace listing and nothing to install: what is described below is the shape of the integration you would build, written down because knowing the shape in advance is most of the work. The CRM route stays read-only on your side: a named credential holding the API key, a callout that resolves an account, and a set of custom fields that record what came back. Entity Bind writes nothing to your CRM at any point. The first thing a duplicate-account project needs is an answer nobody has acted on yet.

Canonical page: https://entitybind.com/integrations/salesforce
Last updated: 2026-10-12

## Entity Bind and Salesforce

Pattern over the HTTP API

This is an integration pattern over the HTTP API, not a shipped connector. There is no package, no managed application, no marketplace listing and nothing to install: what is described below is the shape of the integration you would build, written down because knowing the shape in advance is most of the work. The CRM route stays read-only on your side: a named credential holding the API key, a callout that resolves an account, and a set of custom fields that record what came back. Entity Bind writes nothing to your CRM at any point. The first thing a duplicate-account project needs is an answer nobody has acted on yet.

- What this is: A pattern you build
- Steps to working: 4 below
- Limits: 5 below
- Written back to your systems: Nothing
- To install: Nothing at all

Before you build any of it: The answers land on your own rows before any code does, and looking costs no integration work. [Start free →](https://app.entitybind.com/app?signup=1)

By [James Rooney](https://entitybind.com/about), founder of Entity Bind · Last revised 12 October 2026

## How you get a key

Create your workspace online and verify your email, then create your own read or resolve API keys, each shown once and revocable. Free includes 300 credits and needs no card. Paid subscriptions are purchased through Stripe in Billing, with applicable VAT and no automatic usage or overage charges.

`host.example.com` is a placeholder everywhere below, and a client configured against it will not connect. The hosted base URL is https://app.entitybind.com. Replace the placeholder with that origin; registry checks follow your activated plan.

The full-pipeline evaluation is arranged separately and is not activated by signup. Request it for your workspace; we confirm availability, sources and the start date before activation. It starts with a conversation about your file.

Create your workspace online, verify your email and create your own API key. Free includes 300 credits and shallow matching with no card; choose a paid subscription in Billing when you need registry checks. [Start free →](https://app.entitybind.com/app?signup=1)

## What you would build for Salesforce

There is nothing to install, so the blocks below are the job itself: the query, the request, and the branch on what comes back. Endpoint paths, header names and field names are the API's own and are exact — the code around them is a shape to fit to your own stack.

### 01 Start with an export rather than a callout

Most Salesforce conversations should start as a file rather than as an integration, because the interesting output arrives before any code does. Send us a file. We tell you which of your rows are the same company, which of your existing matches are wrong, and what we could not decide — and we write nothing to your systems. The audit pack: twelve files, a receipt per decision, and a report that opens offline. Build the callout once you have seen what the answers look like on your own accounts.

### 02 Hold the credential where Salesforce holds credentials

A named credential holding the base URL and the Authorization header keeps the key out of Apex source and out of a custom setting a support user can read, and makes it rotatable without a deployment. The key you create in your Entity Bind workspace is the whole credential: there is no separate exchange step, no secondary token and no MCP-specific credential.

### 03 Resolve, and record the receipt

One callout per account, or a batch of up to 500 for a bulk pass. The fields worth adding to the account object are the ones that make the answer auditable later: the entity id, the match confidence, the decision id, and the typed reason where the record did not resolve. The decision id is the one people leave out and the one that matters — it reopens the whole evidence trail at a URL long after whoever ran the job has moved on.

```
{
  "client_ref": "0018d00000ABCDEAA1",
  "name": "Acme Widgets Ltd",
  "domain": "acmewidgets.co.uk",
  "country": "GB",
  "postal_code": "EC1A 1BB",
  "depth": "research"
}
```

### 04 Route abstentions to a queue, not to a default

A match below 0.90 confidence is unrepresentable. The record comes back as an abstention with a ranked shortlist instead. What comes back instead is a ranked shortlist, a typed reason, the column that would have decided the record, and a review id — and it costs nothing. Route those to a queue where a person sees the shortlist. The failure to design out is the familiar one: taking the top shortlist row because a field needed a value.

If a step above fails against your own deployment, send us what the client reported rather than working around it. [Talk to us →](https://entitybind.com/contact)

## What this route gets you

Every surface runs the same pipeline: the same cascade, the same confidence floor, the same evidence and the same credit rule. These are the things this route adds on top of it.

- Duplicate accounts identified in your own record ids, with a receipt per decision that reopens at a URL.
- The merges we refused, and why. One disagreeing strong identifier blocks a merge outright — a company number, an LEI — and so do two or more disagreeing weak signals, such as a domain and a phone number together.
- An independent second opinion on matches your incumbent proposed: we accept, withhold or contradict them, and report which, per provider and per jurisdiction.
- A work list rather than a silence: every unresolved account carries a typed reason and, wherever a column is nameable, the name of the field that would have settled it.

## What it will not do

Start with the first one: it decides whether there is anything to install at all. The rest are the parts of the shape that most often get scoped wrong.

01. This is an integration pattern over the HTTP API, not a shipped connector. There is no package, no managed application, no marketplace listing and nothing to install: what is described below is the shape of the integration you would build, written down because knowing the shape in advance is most of the work.
02. No managed package and no AppExchange listing. There is nothing to install, and no security review has been undertaken because there is nothing to submit to one.
03. We write nothing to Salesforce at any point. Merging accounts stays your operation in your system, which is the right way round for an action that is irreversible in the target.
04. We do not promise a count of dangerous merges prevented, and you should distrust anyone who does before they have seen your file. Zero is a normal, honest result: two rows carrying contradicting company numbers are refused outright and never reach the guard that would have counted them.
05. Person accounts and contacts are out of scope. Entity Bind resolves companies and organisations only, and a contact-level deduplication problem needs a different tool.

Check these integration limits before building. Create your Free workspace to inspect your own rows and keys; contact us if you need help choosing a supported integration shape. [Start free →](https://app.entitybind.com/app?signup=1)

## The other ways in

3 of the 6 are shipped integrations and 3 are patterns over the HTTP API. Every card says which kind it is, so you know what you are scoping before you open it.

- [Claude Code](https://entitybind.com/integrations/claude-code) (Shipped): 4 steps · 4 named limits
- [Claude Desktop](https://entitybind.com/integrations/claude-desktop) (Shipped): 4 steps · 4 named limits
- [Cursor](https://entitybind.com/integrations/cursor) (Shipped): 4 steps · 3 named limits
- [Snowflake](https://entitybind.com/integrations/snowflake) (Pattern): 4 steps · 5 named limits
- [Python](https://entitybind.com/integrations/python) (Pattern): 4 steps · 5 named limits

Salesforce sits with Snowflake and Python on the same shelf: nothing to install. If you are weighing a shipped integration against a pattern, [the line between the two shelves](https://entitybind.com/integrations#the-line) is drawn on the hub.

Whichever surface you land on, the cheapest first move is the same: a few hundred of your own rows. [Start free →](https://app.entitybind.com/app?signup=1)

## What to read next

The work this surface is installed to do, the method behind the answers it returns, and the terms those answers use. Each card names its own shelf.

- [CRM and RevOps](https://entitybind.com/use-cases/crm-and-revops) (Use case): Which accounts are one company, which merges to refuse, and a receipt for both.
- [How to deduplicate a CRM](https://entitybind.com/guides/how-to-deduplicate-a-crm) (Guide): Export, preview, tier the file, run it, review the abstentions, merge with receipts, measure. The full sequence for deduplicating a CRM account object without making a wrong merge you cannot undo.
- [Abstention](https://entitybind.com/glossary/abstention) (Definition): An abstention is a first-class 'we do not know' returned instead of a match: the record comes back unresolved, with a ranked shortlist, a typed reason and the column that would have decided it.
- [Review queue](https://entitybind.com/glossary/review-queue) (Definition): A review queue is where records the system refused to decide are held for a human, and the quality of a resolver is largely determined by how small, how well-evidenced and how accountable that queue is.
- [Decision receipt](https://entitybind.com/glossary/decision-receipt) (Definition): A decision receipt is the durable, retrievable record of why a particular match was made — the features, the probability, the thresholds in force, the sources cited and the version of the pipeline that decided — addressable by an identifier returned with the answer.

## Start with a file, not an integration.

Create your workspace, verify your email and run your first company file. The Free plan needs no card. Create API keys in your workspace when you need an integration.

[Start free](https://app.entitybind.com/app?signup=1) · [Read the API docs](https://entitybind.com/api)

300 credits. No card.

For a guided review of your file, explore [the Merge Safety Sprint](https://entitybind.com/audit-pack).

## Questions about Salesforce

### Will Entity Bind merge our Salesforce accounts for us?

No. We tell you which of your rows are the same company, which of your existing matches we would not have made, and which we could not decide — in your own record ids, with a reopenable receipt for each. Merging is an irreversible write in your system, and the party that proposed a merge should not be the party that performs it. That separation runs inside the product too: the credential that approves a merge is not the credential that proposed it.

### How does this compare with the native duplicate rules?

The native rules score how alike two strings look, which is a statement about the strings rather than about how often decisions like this one turned out right, and they write with no evidence attached — so six months later the answer to "why did these two accounts become one" is that a rule scored 0.87 and somebody clicked. The difference here is not a higher score. It is that the score is measured against labelled outcomes, that nothing below the confidence floor can come back as a match at all, and that every decision leaves a receipt you can reopen. Run the comparison on your own export, and look first at the rows we refused.

---

The 0.90 confidence floor. It is an acceptance contract, not calibration evidence: it says what we refuse to return, not how often an accepted match is right. Read it with the coverage it costs.

Internal fixtures only. The historical 2026-08-29 per-tier recording covers 317 GB companies with identifier-rich arrivals seeding the catalogue first; the context tier includes country and registered-town prose. Its legacy replay has no full-prompt-verified calls and cannot certify current calibration. The September 5 CI reports cover 1,176 labelled pairs and 705 records over 250 companies using offline stubs. These are not independent customer holdouts or live production validation; the 99% minimum-input product target remains unmet. Scope is company and organisation identity only — not people, vessels, bank-account ownership, sanctions or emissions. Results may not be used for eligibility decisions about individuals, including employment, credit and tenancy.

Entity Bind resolves companies and organisations only. It does not resolve people, vessels, bank-account ownership, sanctions exposure, emissions or geolocation, and its results may not be used for eligibility decisions about individuals, including employment, credit and tenancy.

This is the Markdown copy of https://entitybind.com/integrations/salesforce, assembled from the same data the page renders and carrying every sentence, table row, figure and question the page's main content carries. The HTML page is canonical; it adds the layout, the navigation and the interactive parts (the ask panel, the forms), which a copy can name but not run. Every page on the site, with a line on each: https://entitybind.com/llms.txt.
