CRED × Salesforce — sync, enrichment, troubleshooting

Last updated: May 13, 2026

CRED × Salesforce — sync, enrichment, troubleshooting

Audience: CRED customers using Salesforce as their CRM.

Purpose: Answer the day-one operational questions about the Salesforce integration — sync cadence, manual triggers, enrichment vs sync, troubleshooting fields that fail to sync, and where to find action logs.

Read this first: CRED × CRM — How the integration works in the CRED UI. That article covers the cross-CRM concepts (sync vs enrichment, update modes, action logs, etc). This article covers the Salesforce-specific behaviour.


Quick answers

Question

Short answer

Section

How often does CRED sync with Salesforce?

Continuous incremental sync via SOQL filtered by LastModifiedDate. Salesforce changes typically appear in CRED within minutes; the orgwide REST API ceiling is 15,000 calls / 24h, so we self-throttle to stay well below.

2

How do I trigger a manual sync (SF → CRED, CRED → SF)?

Per-record buttons in CRED, list-level bulk actions, or a full re-sync from Settings.

3

Why doesn't "Sync with Salesforce" enrich the record at the same time?

Sync moves data; enrichment uses credits. Use auto-enrich on create, or build a workflow with Enrich → Sync to Salesforce.

4

Mapped fields not passing over — how to troubleshoot?

Walk the seven-reason checklist; the Salesforce-specific gotchas are FLS (Field-Level Security), validation rules, and required-on-layout fields.

5

Where are the action logs?

Record Activity tab, Sync Log, Workflow Run Log, Audit Log — each row shows the Salesforce error code and the SOQL row ID.

6


1. What CRED syncs from Salesforce

Salesforce has the deepest coverage of any CRM CRED integrates with — 13 entity types:

Salesforce object

CRED entity

Direction

User

RemoteUser

Read-only

Account

Account

Two-way

Contact

Contact

Two-way

Opportunity

Opportunity

Two-way

BusinessProcess

OpportunityPipeline

Read-only

OpportunityStage

OpportunityStage

Read-only

Campaign

Campaign

Two-way

CampaignMember

CampaignMember

Two-way

Task

Task

Two-way

ContentNote

Note

Two-way

EntityDefinition

CustomEntity (metadata)

Read-only

{CustomObject__c}

CustomEntityRecord

Two-way

Conversation

Transcript

Read-only

Custom objects: Fully supported. CRED auto-discovers every custom object accessible to the connected user and lets you opt them in to sync individually.

Custom fields: Auto-discovered on every standard and custom object during initial setup.

Sandbox vs Production: Both are supported. Pick the environment when connecting; sandbox uses test.salesforce.com and the connection is tagged so production data is never accidentally written.


2. When and how often CRED syncs with Salesforce

Initial sync

Triggered immediately after OAuth completes. CRED runs a full DATA_SYNC_READ for each entity type in dependency order, staggered every two minutes:

  1. Users

  2. Accounts

  3. Contacts

  4. Custom entity metadata

  5. Custom entity records

  6. Pipelines (BusinessProcess)

  7. Stages (OpportunityStage)

  8. Opportunities

  9. Campaigns

  10. Campaign members

  11. Tasks

  12. Notes (ContentNote)

  13. Transcripts (Conversation)

Total time is org-size-dependent; large orgs (1M+ accounts and contacts) often take overnight to complete. Progress is visible in Settings → Integrations → Salesforce → Sync log.

Ongoing incremental sync

  • SOQL queries filter by LastModifiedDate >= the last sync timestamp.

  • A new pass is queued shortly after the previous one finishes; new and modified records typically arrive in CRED within a few minutes.

  • Deleted records: CRED uses Salesforce's getDeletedRecords() SOAP endpoint to detect deletions in the last 30 days. Records deleted more than 30 days ago are not detected (Salesforce's recycle-bin retention limit) — if you need to clean those up, run a full re-sync.

  • If a read task hangs > 15 min it is auto-restarted. Failed Phase-2 records are retried after 4h.

Rate-limit awareness

Salesforce REST API limit is 15,000 calls / 24h per organization across all apps connecting to your org. CRED self-throttles and watches the Limits endpoint — if remaining calls drop below 1,000 we pause sync for an hour to avoid blocking your other Salesforce apps. If you have a small Developer or Essentials org with a low ceiling, contact us — we can lower the throughput target.

Bulk API for very large operations

For initial reads of objects with millions of records, CRED can fall back to the Bulk API (10,000 records / batch, 15 batches / 24h). This is configured per connection — ask your CSM if you need it enabled.


3. How to trigger a manual sync

Salesforce → CRED (pull)

Scope

How

What happens

One record

Open the record in CRED → 3-dot menu → Refresh from Salesforce

Single SOQL by Id; updates within seconds

List / collection

List menu → Sync → Pull from Salesforce

Targeted reads of every record's Salesforce Id

Whole org

Settings → Integrations → Salesforce → Run full sync

Re-runs the full read for every entity type. Heavy

CRED → Salesforce (push)

Scope

How

What happens

One record

Record header → Sync with Salesforce

Creates the Account / Contact / Opportunity / … in Salesforce if it doesn't exist; updates if it does. Returns the SF URL on success

Bulk

List → select rows → Bulk actions → Sync to Salesforce

Schedules a write per record; uses Composite API where possible

Workflow

Add a Sync to CRM step

Every record entering the step is written to Salesforce

Manual sync respects update modes — if write-back is OFF, the button is disabled.


4. Sync vs Enrichment with Salesforce

The "Sync with Salesforce" button moves the record's current CRED values to Salesforce. It does not run the CRED enrichment waterfall and does not consume credits. Three ways to combine them:

  1. Manual two-step: click Enrich, wait for fields to populate, then click Sync with Salesforce.

  2. Workflow: Workflows → trigger on list / signal / create → EnrichSync to CRM (Salesforce).

  3. Auto-enrich on create: Settings → Integrations → Salesforce → Enrichment → toggle Auto-enrich on create. Every new record gets the waterfall before it's written back.

See the cross-CRM article for the full rationale on why we keep these separate.


5. Mapped fields not passing over — Salesforce-specific troubleshooting

Walk the seven-reason cross-CRM checklist first. Salesforce has three extra reasons:

Salesforce error

Meaning

Fix

INSUFFICIENT_ACCESS_OR_READONLY

The connected user's profile / permission set does not have FLS (Field-Level Security) write access on this field, OR the field is read-only on the user's page layout.

Grant the field on the user's profile / permission set, or pick a different connected user.

FIELD_CUSTOM_VALIDATION_EXCEPTION

A Salesforce validation rule rejected the write (e.g. "Annual revenue must be > 0").

Either fix the value before sync (use a workflow to coerce) or relax / scope the validation rule.

REQUIRED_FIELD_MISSING

The Salesforce object requires a field on its layout that CRED isn't providing.

Map that field in CRED, or set a default in Salesforce.

INVALID_FIELD

The field was renamed / deleted in Salesforce.

Refresh the schema (Settings → Integrations → Salesforce → Refresh fields) and re-map.

UNABLE_TO_LOCK_ROW

The Salesforce record is locked by another process (often the Apex trigger queue, batch jobs, or a competing integration).

CRED retries automatically (1–5s backoff). Persistent locks point to a Salesforce config issue — check Apex jobs.

INVALID_SESSION_ID

OAuth token expired and refresh failed.

Reconnect Salesforce.

REQUEST_LIMIT_EXCEEDED

Org hit its 24h API ceiling (15k REST calls).

Wait until the 24h reset, or upgrade your Salesforce edition. Investigate which app is consuming the calls.

MALFORMED_QUERY

SOQL was rejected. Almost always a custom field with unusual characters.

Open a ticket with the field name; we'll patch the query.

FLS — the most common Salesforce-specific blocker

Salesforce's Field-Level Security means every field on every object can be hidden / read-only / read-write per profile and per permission set. CRED writes as the user who connected the integration. If that user's profile lacks write access on a field, that field will silently fail with INSUFFICIENT_ACCESS_OR_READONLY.

Recommended setup:

  1. Create a dedicated "CRED Integration User" in Salesforce.

  2. Give it a profile (or a permission set on top of a base profile) with read+write access to every object and field you want to sync.

  3. Connect CRED as that user. This avoids "it works for Alice but not for Bob" classes of bugs.

If you can't create a dedicated user, audit FLS on the connected user's profile for every field in your CRED → Salesforce mapping.

Validation rules

Salesforce validation rules fire on every write. If a CRED-pushed value fails a rule, the write is rejected and logged. Open Salesforce Setup → Object Manager → [object] → Validation Rules to audit.

Required-on-layout fields

A field can be marked "required" on the page layout (separate from "required on the object"). If CRED isn't pushing that field, the write fails. Either map the field in CRED or move "required" to a default in Salesforce.


6. Action logs

Same four locations as every CRM. Salesforce specifics:

  • Record Activity tab in CRED shows the Salesforce Id for every sync attempt — copy/paste it into Salesforce's URL bar to jump to the record.

  • Each error log entry includes the Salesforce errorCode, fields[] array (which fields the error applies to), and the API call's requestId. The requestId can be used by Salesforce support to trace the failure in their logs.

  • Salesforce Setup → Setup Audit Trail (in Salesforce, not CRED) lists permission and metadata changes — useful when "this used to work" but now doesn't.

  • If a sync fails with UNABLE_TO_LOCK_ROW repeatedly on the same record, check Salesforce's Setup → Apex Jobs for long-running batch jobs touching that object.


7. Salesforce integration limits and known constraints

Limit

Value

Note

REST API calls / 24h (Salesforce orgwide)

15,000

Shared across every app on your org. CRED pauses below 1,000 remaining

Bulk API records / batch

10,000

Used for initial reads of large objects when enabled

Bulk API batches / 24h

15

For very large initial syncs we may stretch this across days

SOAP getDeletedRecords window

30 days

Records deleted > 30 days ago are missed unless you full-re-sync

Composite API records / call

200

Used for batch writes

Field metadata cache

1 hour

If you add a new SF field and don't see it, click Refresh fields

Things that look like a sync bug but aren't

  • Person Accounts are partially supported. Standard B2B accounts work without caveats; if your org uses Person Accounts, a few fields behave differently — talk to your CSM before mapping.

  • Multi-currency orgs: Opportunity amounts respect the CurrencyIsoCode on the record. CRED converts to the connection's default for display but stores the original currency.

  • Record types: If an object has multiple record types, CRED defaults to the user's default record type for new records. Specify the record type in the field mapping if you need a non-default.


8. Reference — CRED-side technical detail

  • Library: jsforce (Salesforce JavaScript SDK)

  • API version: 62.0

  • Query language: SOQL with cursor pagination via nextRecordsUrl

  • Auth: OAuth 2.0 Authorization Code with automatic token refresh

  • Production OAuth host: login.salesforce.com

  • Sandbox OAuth host: test.salesforce.com

Useful Salesforce links