AdvancedMD and Salesforce Integration: What Syncs Each Way

25K patients and 107,626 appointments synced, intake time down 70%. What moves each way between AdvancedMD and Salesforce, and what stops duplicate charts.

By Published

25K

patients kept in step between AdvancedMD and Salesforce

107,626

appointments synced from AdvancedMD into Salesforce

70%

less intake time

GAT-delivered outcomes for a multi-state psychiatric practice on AdvancedMD.

A multi-state psychiatric practice was entering every patient by hand twice: once in Salesforce, where admissions and scheduling work, and once in AdvancedMD, where the chart lives. The two records drifted and staff checked both. We connected them so a patient entered once appears in the other system within seconds, appointments included, with guards that stop a duplicate chart before it exists. This page is the operating view of that build: what moves, in which direction, and what keeps one patient one chart. The engineering view, with the webhooks and Platform Events, is in our AdvancedMD architecture write-up.

What syncs between AdvancedMD and Salesforce?

Salesforce → AdvancedMD

  • New patients, with the Salesforce record ID
  • Referral providers, with their NPI

AdvancedMD → Salesforce

  • Patient demographic and coverage changes
  • Chart number and AdvancedMD patient ID
  • Appointments, keyed by visit ID

The identity key: the Salesforce record ID is stored in AdvancedMD as an additional MRN, and AdvancedMD's IDs are stored on the Salesforce record. Every later message is matched on those IDs.

What each system sends the other in our AdvancedMD build. Clinical notes and charting stay in AdvancedMD.
What syncs, in which direction
RecordDirectionWhat travelsWhere it lands
New patientSalesforce to AdvancedMDName, date of birth, sex, email, mobile, home, work and other phone, mailing address, and the Salesforce record ID as an additional MRNA new patient in AdvancedMD
Patient changesAdvancedMD to SalesforceName, date of birth, gender, email, phones, address, chart number, AdvancedMD patient ID, insurance carrier, group ID, subscriber ID, relationship to the beneficiary, referral sourceThe patient's Salesforce person account, matched by ID
AppointmentsAdvancedMD to SalesforceVisit ID, appointment type, start time and duration, status, facility and providerAn event on the patient's opportunity, created or updated by visit ID
Referral providersSalesforce to AdvancedMDProvider name, NPI, address, phone, fax, email, Salesforce record IDA referring provider in AdvancedMD
Clinical notes and chartingNeitherNothing; they are not in the field mapThey stay in AdvancedMD

The field map is configuration. Each pair (AdvancedMD field name on one side, Salesforce field on the other) is a Custom Metadata record, so when AdvancedMD adds a compatible field, an admin adds one record instead of waiting on a deployment. Patient data is encrypted throughout.

How are duplicate charts stopped?

Duplicates start in three places: intake creating a patient who already exists, a sync message matched to the wrong record, and the same message processed twice. The build closes each one, in this order.

  1. A warning at entry. Salesforce duplicate rules on person accounts check each new patient against existing ones, on an exact phone match and on Salesforce's standard person account rule, and ask intake “Use one of these records?” before the save. A duplicate rule decides what happens when someone starts creating a duplicate record (Duplicate Rules, Salesforce Help, read 16 October 2026). Ours alert rather than block, so staff make the call; a shared household phone is one reason a match is not the same patient.
  2. Matching by ID, never by name. When a patient goes to AdvancedMD, the Salesforce record ID goes with it as an additional MRN, and AdvancedMD's chart number and patient ID come back onto the Salesforce record. Every later message is matched on those IDs, so two patients with the same name and birth date stay two records.
  3. Appointments keyed by visit ID. Before writing an appointment, the flow looks for an event with the same AdvancedMD visit ID. If it finds one it updates it; if not, it creates one. A message that arrives twice, or a later status change on the same visit, updates the same event.
  4. Every failure logged and alerted. A send or update that fails writes an error log record tied to the patient, with the response that explains it, and we get an alert when something upstream breaks, so a gap shows up as a record with an owner instead of a mismatch found weeks later.

What happens to an appointment once it reaches Salesforce?

Each AdvancedMD visit becomes a Salesforce event on the patient's opportunity, so the people working admissions see the schedule where they already work. Around it, the build turns appointment changes into work: a no-show or a cancellation updates the opportunity and opens a follow-up task, the opportunity carries a flag while the patient has a future appointment, and the visit's office location is copied to the opportunity. The 107,626 appointments in the stat rows above arrived this way, without anyone keying a schedule into Salesforce.

What does AdvancedMD require before you can connect?

Access is the vendor's process and it sets the earliest start date. AdvancedMD's developer page says (AdvancedMD developer solutions, read 16 October 2026):

  • Its FHIR APIs are read-only and support GET requests only.
  • An app that needs to create or update records uses the proprietary Connect APIs, which replicate nearly all of the AdvancedMD interface.
  • Developers sign a Certified API Developer Agreement that carries licensing and support fees; the page publishes no amounts.
  • Full documentation and a sandbox follow the signed agreement.
  • Production credentials, including a unique app name, follow a successful integration demo with AdvancedMD's interoperability team.

A Salesforce side that is ready before those credentials arrive waits for them, so start the agreement when the project starts.

AdvancedMD integration fit check

Map what should sync between AdvancedMD and Salesforce.

What does a referral provider need before it syncs?

Referral providers live in Salesforce as business accounts and go to AdvancedMD with their NPI. The rule we designed for that send, built as a draft flow in the sandbox and not yet switched on: a provider has to sit under a parent account, or be the parent itself. A provider without one would be held back, and the record would get a sync error message that says “Business Account must have a Parent Account”, so the person who entered it sees what to fix instead of a failed sync in a log.

Where does an AI phone agent fit?

The practice's AI phone agent feeds the same path. A call answered after hours arrives in Salesforce as a lead staff can work, and from there the patient follows the same send and the same guards to AdvancedMD. How we connect a voice agent to Salesforce is in voice AI lead intake for Salesforce.

What should you decide before building an AdvancedMD integration?

AdvancedMD integration decisions, and what this build chose
DecisionWhat this build choseWhy it matters
Which system creates the patientIntake creates it in Salesforce; AdvancedMD receives itTwo systems creating patients is how duplicates begin
The identity keysSalesforce ID in AdvancedMD, AdvancedMD IDs in SalesforceMatching on names fails on the first two patients who share one
Who owns each fieldDemographics and coverage come from AdvancedMD after the first sendUndecided ownership is where drift starts
Alert or block on a likely duplicateAlertA block stops intake when a match is wrong; an alert leaves the call to staff
What a failure producesAn error log record on the patient and an alertA silent failure becomes a mismatch nobody can date

The same decisions apply to any EHR. For the census that runs next to this kind of sync, see how to build a self-correcting daily census in Salesforce; for API capacity, see Salesforce API limits for EHR integrations.

Frequently asked questions

Does AdvancedMD integrate with Salesforce?

Yes, through AdvancedMD's Connect APIs, which require a Certified API Developer Agreement and AdvancedMD's approval before production credentials are issued. AdvancedMD's FHIR APIs are read-only, so on their own they can feed Salesforce but cannot create a patient in AdvancedMD.

How do you stop duplicate patients between AdvancedMD and Salesforce?

With four guards: a duplicate warning when intake creates a patient, matching every sync message by record ID instead of by name, appointments keyed by the AdvancedMD visit ID, and a logged, alerted failure for anything that does not land.

Which fields sync from AdvancedMD to Salesforce?

In our build: name, date of birth, gender, email, phone numbers, address, chart number, AdvancedMD patient ID, insurance carrier, group ID, subscriber ID, relationship to the beneficiary and referral source for patients, plus visit ID, type, start time, duration, status, facility and provider for appointments. Clinical notes stay in AdvancedMD.

What happens when an AdvancedMD sync fails?

The failure writes an error log record tied to the patient, with the message AdvancedMD or Salesforce returned, and we are alerted. A failed sync shows up as a record someone owns rather than a mismatch someone finds weeks later.

Can an admin change which AdvancedMD fields map to Salesforce?

Yes, for mapping changes. Each field pair is a Custom Metadata record, AdvancedMD field name on one side and Salesforce field on the other, so remapping a field is a configuration change. A new kind of record or a changed API contract still needs a developer.

Continue the decision

View all resources →

AdvancedMD integration fit check

Map what should sync between AdvancedMD and Salesforce.

Free, 30 minutes, no obligation.

  • Fit Check readout
  • A probable integration shape for the workflow
  • API, access, and system-of-record risks to verify
  • A recommendation: vendor discovery, paid Blueprint, or no custom build