Connecting Salesforce to Golden Suite
Set up the Salesforce OAuth connector. Production-ready in 10 minutes.
The Salesforce connector ingests Account, Contact, Lead, and (optionally) Opportunity records via OAuth — the standard auth flow you've seen on every SaaS integration. No service account, no SOQL writing by hand.
What you need before starting
- A Salesforce org you're a System Administrator on (or an admin willing to authorize the connector once)
- The Salesforce edition supports the REST API (most paid editions; Essentials does NOT — Professional and above)
- About 10 minutes
Setup (~5 clicks)
- In Golden Suite, go to
/golden/sources→ "Add source" → "Salesforce." - OAuth redirect: Golden Suite redirects to Salesforce's login. Pick the org you want to ingest from.
- Authorize the scope. Golden Suite requests
api refresh_token— read-only API access plus a refresh token so we can re-ingest without re-auth. - Pick the object (Account / Contact / Lead). One source = one object. Add the source three times if you want all three.
- Pick the entity type in Golden Suite — usually "person" for Contact/Lead, "organization" for Account.
The first ingest pulls everything; subsequent ingests use LastModifiedDate as a cursor (incremental).
Field mapping
InferMap auto-proposes a mapping from Salesforce field names → Golden Suite target schema. Typical results:
| Salesforce field | Golden Suite field | Confidence |
|---|---|---|
Email | email | 1.0 (exact match) |
Phone | phone | 1.0 |
FirstName | first_name | 0.95 |
LastName | last_name | 0.95 |
MailingAddress | address (composite) | 0.85 — needs expansion |
Account.Name | company | 0.90 |
Title | title | 1.0 |
LeadSource | source | 0.75 — review |
Review the proposed mapping in the autoconfig wizard before committing. Custom Salesforce fields (MyCustomField__c) won't auto-map — you'll be prompted to map them manually if they're relevant.
Sample config
# What the autoconfig produces under the hood — you don't usually need
# to write this by hand, but it's useful to know what's there.
source_config = {
"source_type": "salesforce",
"object_type": "Lead", # or Contact, Account
"credential_type": "oauth",
"fields_to_pull": [
"Id", "Email", "Phone",
"FirstName", "LastName", "Title",
"Company", "LeadSource",
"CreatedDate", "LastModifiedDate",
],
"incremental_field": "LastModifiedDate",
"page_size": 200,
}
Common gotchas
- API limits. Salesforce caps API calls per 24 hours by edition (Enterprise: 100k+/day usually plenty). The connector batches at 200 records per call. A 100k-record initial ingest = 500 API calls. Easily under the limit unless you're already heavily integrated.
- Refresh-token expiry. Salesforce refresh tokens don't expire by default but admins can configure expiry (90 days, 1 year, etc.). If the connector starts erroring with
invalid_grant, the refresh token expired — re-auth via the OAuth flow. - Sandbox vs production. The connector uses production by default. If you want to test against a Salesforce sandbox, set up a separate Golden Suite source and use the sandbox login URL during OAuth.
- Field-level security. Golden Suite can only see fields your authorizing user has read access to. If a field is hidden by FLS, it'll appear NULL in Golden Suite. Run the OAuth as a user with full read access (typically a service account admin).
- Person-account vs business-account model. Salesforce supports both. Golden Suite handles standard B2B (separate Account + Contact) cleanly; person-account orgs need extra config — contact
ben@bensevern.devfor the field-mapping pattern. - Tasks + Notes objects aren't supported. Only the core Account/Contact/Lead/Opportunity. Activity history isn't an MDM-shape problem.
Re-auth procedure
When the refresh token expires:
- Go to
/golden/sources→ click the Salesforce source - Click "Re-authorize"
- Sign in to Salesforce again
- Golden Suite stores the new refresh token; the next ingest works automatically
The ingest never silently fails — the source row shows an error state with the last error message, and ingest history surfaces "invalid_grant" so you know exactly what to fix.
Cost considerations
- Golden Suite side: Salesforce as 1 source counts against your tier's source quota (Free: 3, Pro: 25, Enterprise: custom).
- Salesforce side: API call costs are usually $0 (included in your Salesforce edition). The connector batches efficiently.
Next steps
- /docs/guides/use-case/customer-360 — Salesforce is usually one of 3-5 sources in a customer-360 project
- /docs/guides/use-case/lead-dedup — Salesforce Leads dedup workflow
- /glossary/schema-inference — the auto-mapping mechanism explained