← All guides
Guides · CRM integration

Salesforce vs. HubSpot Integration for an AI SDR

An AI SDR is only as useful as its grip on your CRM. It has to read who to work, send as itself, and write the result back where your team already looks. The catch is that HubSpot and Salesforce hand out that grip on completely different terms. HubSpot's API is free on every tier. Salesforce paywalls its API on the editions many companies actually run. Get this difference wrong and you build a tool that cannot serve half its market. This guide is how we handle both, and why the design is shaped the way it is.

Why the two CRMs need two designs

The whole story comes down to one fact: who pays for the API, and when.

HubSpot gives every customer API access for free, from the free tier up. So software can talk to HubSpot directly, server to server, no browser involved, in real time.

Salesforce is different. It does not charge us for the API. It gates the API by the customer's edition. Enterprise and Unlimited include the REST API. Professional (and the older Group edition) do not, and those customers pay Salesforce extra to switch it on. That means an API-only tool simply cannot serve a Professional-edition Salesforce customer unless that customer buys the add-on. A real slice of the Salesforce market is invisible to API-only competitors.

So we run two designs on purpose. HubSpot gets the direct API. Salesforce gets a browser bridge that never touches the paywalled API and therefore works on every edition. Same brain, two sets of hands.

HubSpot: direct API, free, real time

For HubSpot the desk connects directly with a private app token you paste once. From there it does the full loop, server-side and in real time.

Selection: filter the CRM server-side

The desk reads your account's live contact and company fields and builds a filter on them: a field, an operator, and a value, grouped so conditions are ANDed inside a group and ORed across groups. That maps one to one onto HubSpot's own Search API, so the filter is a direct translation, not an approximation. You preview how many contacts match before anything runs, and opted-out people are removed at selection time so they are never even pulled into a campaign.

Sending: as the persona, from its own mailbox

Matches import into a campaign and the desk sends from its own mailbox, on a pace, with a warm-up ramp. Salesforce and HubSpot are never in the send path. The mailbox is.

Write-back: real time

When a prospect replies, the desk logs the email on the contact, drops a short note summarizing the reply, moves the lifecycle stage or lead status, and sets opt-out when needed. All of it lands on your own HubSpot records the moment it happens. Because HubSpot's API is free on every tier, there is nothing to unlock and nothing to keep open.

HubSpot is the reference implementation. The filter model, the resolver, and the write-back verbs we built for HubSpot are the exact shapes the Salesforce path reuses. One model, two executors.

Salesforce: the extension bridge that works everywhere

Salesforce cannot copy the HubSpot pattern for everyone, because Professional edition locks the API. So the desk uses the Ervona browser extension, which already acts inside the rep's real, logged-in Salesforce tab. That is not a UI convenience. It is the integration.

Because every read and write happens in the rep's own authenticated session, we never call the Salesforce REST API. The integration costs zero API dollars, and, more importantly, it works on every Salesforce edition, including Professional. It drives the same buttons a human would, so it works everywhere a rep can log in. That is a defensible edge, not a hack.

Getting a list in

Salesforce list views already have powerful native filtering your reps know. The rep builds or picks a filtered list view, and the extension harvests it into campaign targets, one per row, deduplicated. From there it is a normal campaign that sends through the rep's connected mailbox with pace, warm-up, and suppression already built in.

Getting the result back

Write-back rides a small task queue. When a reply is classified, the desk queues a typed task: reference the record, log a note, update a field (a stage, an owner, a custom field), assign an owner, or mark do-not-contact. The extension drains that queue in the open tab, navigating to each record by the URL it already harvested and making the change the way a person would. Same drain loop, more verbs.

HubSpot (direct API)Salesforce (extension bridge)
Works on every editionYes, free on every tierYes, including Professional
API costNoneNone
SelectionSearch API filter, server-sideNative list view, harvested by the extension
SendingThe desk's own mailboxThe rep's connected mailbox
Reply to the prospectReal timeReal time (through the mailbox)
CRM write-backReal timeWhen a rep has Salesforce open

The honest constraint

The extension bridge only syncs while a rep has Salesforce open in Chrome. A reply classified at 9pm reaches Salesforce the next morning when someone opens it. We say that plainly. Two things soften it. First, the prospect is answered right away by email, so only the CRM bookkeeping waits. Second, the queue is per account, not per person, so any one teammate opening a tab drains the whole team's backlog. In a team of five, someone is almost always logged in.

The optional dedicated Salesforce account

For editions that already include the REST API (Enterprise and Unlimited), there is a later add-on: connect a dedicated Salesforce account through a Connected App. Then write-back becomes real time and headless, no open tab required, exactly like HubSpot. It is the same desk brain with a faster set of hands, and most teams never need it because the bridge already works. The customer picks by edition, and in most cases they never have to think about it.

The bot's own accounts

Whichever CRM you run, the desk shows up like a new hire with its own credentials, not a script borrowing a login:

Every key is stored write-only. The desk can use a credential but can never read one back, and only the secure server side ever touches a secret. That is what lets the desk own real accounts without those secrets ever leaking to a screen.

Which path fits you

The short version

Ervona Desk is one AI SDR with two grips on your CRM. HubSpot through a free direct API in real time, Salesforce through a browser bridge that serves every edition including Professional, with an optional dedicated account for the editions that include the API.

Start free at ervona.ai

Related: The architecture behind the modern AI SDR · AI CRM vs. CRM automation software · HubSpot and Salesforce in the Help center