The Salesforce Data-In integration syncs CRM data from Salesforce into Iterable on a scheduled basis. Customers can use this data for segmentation, personalization, campaign orchestration, and journey triggers.
# In this article
# Overview
You can connect a Salesforce organization, select standard or custom Salesforce objects, and map each object to one of these Iterable destinations:
- User Update — create or update user profiles
- Event — track custom events on a user
-
Catalog Item — upsert items into an Iterable catalog (Salesforce
Accountonly)
One setup can include multiple Salesforce objects. Each object has its own destination, field mappings, filters, and optional historical backfill. All objects in the setup share the same sync schedule.
After you save, scheduled syncs pull records that were modified in Salesforce after activation. To load older records, enable a per-object historical backfill during setup.
# Prerequisites and permissions
Before configuring the integration, confirm that you have:
- A Salesforce organization with API access (typically Enterprise, Unlimited, or Developer edition)
- A Salesforce user with API access and read access to the objects and fields you plan to sync. A dedicated integration user with System Administrator permissions is recommended.
- An Iterable server-side API key for the project you want to sync into
- A defined identity strategy for records mapped to users or events (email or user ID)
- The Iterable Salesforce OAuth package installed in the Salesforce org you are connecting. Install links for Production and Sandbox appear on the Connections page of the setup wizard — install the package before you click Connect.
Salesforce object-level and field-level security determine which objects and fields appear during setup. If an object or field is missing, the connected Salesforce user may not have permission to access it, or the object may not be eligible to sync.
IMPORTANT
Authorization cannot complete until the Iterable Salesforce OAuth package is installed in the Salesforce org. Choose Production or Sandbox to match the org you installed into, then click Connect.
# How the integration works
When a scheduled sync runs, Iterable:
- Queries each selected Salesforce object for records modified since the last successful run.
- Applies your mappings, filters, and (if configured) static values.
- Sends each matching record to the destination you chose for that object: user profiles, custom events, or catalog items.
- Stores the last successful sync time so the next run only picks up newer changes.
Scheduled syncs do not automatically load your full Salesforce history. History is an optional backfill that you turn on per object.
The integration does not delete data in Iterable when a record is deleted in Salesforce.
# Supported capabilities
This intetgration supports:
- Scheduled inbound synchronization from Salesforce into Iterable
- Standard and custom Salesforce object selection
- Production and Sandbox Salesforce orgs
- Mapping Salesforce records to:
- User profiles (User Update)
- Custom events (Event)
- Catalog items (Catalog Item,
Accountonly)
- Primary identity mapping for user and event destinations (email or user ID)
- Additional Salesforce-to-Iterable field mappings
- Static values on mapped fields (a fixed value sent on every record)
- Optional per-object filters
- Optional per-object historical backfill
- Multiple Salesforce objects in a single setup
- Multiple Salesforce organizations (connect each org separately)
- Field mapping validation before you save
- Converted-lead identity merging when
Leadis included
Supported sync intervals:
- Every 15 minutes
- Every 30 minutes
- Every 1 hour
- Every 6 hours
- Every 12 hours
- Every 24 hours
# Choosing an Iterable destination
You can select any syncable Salesforce object that the connected user can access. Not every object is appropriate for every destination.
On the Sync Types page, most objects default to User Update. Account
defaults to Event. Catalog Item is available only for Account, and only
when catalogs are enabled for your Iterable project.
# User Update
Best suited for records that represent activity, lifecycle changes, or status updates, such as:
ContactsLeadsPerson Accounts- User-centric custom objects
Event mappings require:
- A supported user identifier on the Salesforce record
- An Iterable event name (from a Salesforce field or a static value)
# Custom events
Custom events are best suited for Salesforce records that represent activity, lifecycle changes, or status updates, such as:
CasesCampaign Members-
Tasksor activities - Supported custom activity objects
Event mappings require a supported Iterable user identifier so the event can be associated with a user.
# Catalogs
Best suited for reusable, non-user-centric Account data, such as company
attributes you want to look up in campaigns or journeys.
Catalog Item is limited to the Salesforce Account object. Other objects
cannot be mapped to catalogs.
Catalog mappings do not require a user identifier. Each catalog item is keyed automatically by the Salesforce Account ID.
# Suggested object mappings
These are recommended patterns, not hard restrictions. The right destination depends on the object structure, available identifiers, and how you plan to use the data in Iterable.
| Salesforce object | Suggested destination | Example use |
|---|---|---|
Contacts | User Update | Keep customer attributes, ownership, lifecycle stage, and contact information current |
Leads | User Update | Support lead nurturing, scoring, and conversion workflows |
Person Accounts | User Update | Represent B2C customers stored as Salesforce Account records |
Cases | Event | Trigger support, escalation, resolution, or follow-up journeys |
Campaign Members | Event | Trigger messaging based on campaign membership or status |
Tasks and activities | Event | Capture sales outreach and completed activities |
Accounts | Catalog item | Store company attributes such as industry, tier, size, or renewal date |
| Custom objects | User update or Event | Destination depends on whether the object represents a person or an activity |
# Set up the integration
In Iterable, go to Integrations > Integrations Hub. From Salesforce, click Connect. Then, click Add Connection and complete the following tasks.
# 1. Connect to Iterable and Salesforce
On the Connections page:
- Install the Iterable Salesforce OAuth package in Production or Sandbox using the links in the header on the top of the page.
- Select the matching Salesforce Environment, then click Connect and authorize the Salesforce org.
- Enter an Iterable server-side API Key.
- Select the Iterable Region (US or EU).
- Select the project Primary Identifier: email or user ID.
For email-based or user ID-based projects, choose the matching identity type. Hybrid projects can use either email or user ID as the default mapping identity.
# 2. Select Salesforce objects
On the Object Selection page, browse and search syncable standard and custom Salesforce objects by name.
You can include multiple objects in one setup. Each selected object is configured independently on later pages.
If an object does not appear, confirm that:
- The connected Salesforce user has API access and read access to the object.
- The object can be synced incrementally (for example, it has a last-modified timestamp Salesforce can replicate).
- You are not looking at a history, share, or feed object.
Before you continue, consider how each record should appear in Iterable:
- Does the object represent an individual?
- Does it represent an activity or lifecycle change?
- Does the record contain the identifier required by that destination?
# 3. Choose a destination and optional backfill
On the Sync Types page, choose User Update, Event, or (for
Account) Catalog Item for each object.
You can also start a historical backfill for any object:
- Check Backfill Historical Fata.
- Optionally set Backfill Records Modified On or After. Leave the date blank to include records from the beginning of available history.
Backfill uses each record’s last modified time in Salesforce, not its created date. A future date is not allowed.
IMPORTANT
While Backfill Historical Data is checked, that object’s backfill runs every time you save or reconfigure the integration. Uncheck it after the historical load has finished.
# 4. Configure a catalog (Account → Catalog Item only)
If you mapped Account to Catalog Item, use the Catalog Configuration
page to:
- Select an existing Iterable catalog, or
- Create a new catalog (name may include letters, numbers, and hyphens)
When you create a new catalog, Iterable provisions it when you save and infers field types from your Salesforce mappings. If you map to an existing catalog, your mappings must be compatible with that catalog’s current schema.
# 5. Map fields and add filters
On the Field Mapping page, configure each selected object. Objects in the same setup can use different destinations. For example:
-
Contacts→ User Update -
Cases→ Event -
Accounts→ Catalog Item
All objects share the same schedule. Mappings, filters, destinations, and backfill settings are independent.
Salesforce field types are converted to flat Iterable fields. Related-object
fields (for example, Account.Name on a Contact) and compound fields such as
Address or Location are not available.
You can map a Salesforce field to an Iterable field, or choose Use static
value to send the same value on every record (for example,
crmSource = salesforce).
# User Update mappings
Select a primary identity mapping first. For example:
-
Contact.Email→ Iterable email -
Contact.Id→ IterableuserId - A supported custom Salesforce field → Iterable
userId
The primary identity must come from a Salesforce field. It cannot be a static value.
Then map additional Salesforce fields to Iterable user profile fields. For example:
-
Contact.FirstName→firstName -
Contact.LastName→lastName -
Contact.Title→jobTitle -
Contact.Lifecycle_Stage__c→lifecycleStage -
Contact.AccountId→salesforceAccountId
Records missing the mapped identity are skipped.
# Event mappings
Configure:
- The Iterable event name (
eventName), from a Salesforce field or a static value. - A supported user identifier on the Salesforce record.
- Additional Salesforce fields to include as event data.
Optionally map a Salesforce date or datetime field to createdAt to set the
event timestamp.
For example, a Case record could create a salesforceCaseUpdated event that
includes case status, priority, owner, and last-modified time.
The user identifier must exist on the Salesforce record you are syncing. The integration does not look up a related Contact or Lead to find an email address.
Records missing the mapped identity or event name are skipped.
# Catalog item mappings
Choose the destination catalog on the Catalog Configuration page, then map Salesforce Account fields onto the catalog item.
For example:
-
Account.Name→accountName -
Account.Industry→industry -
Account.Tier__c→accountTier -
Account.Renewal_Date__c→renewalDate
You do not map a catalog item key. Iterable uses the Salesforce Account ID.
# Object filters
Filters are optional and configured independently for each object. A record syncs only if it matches every filter you add.
Filter conditions:
- Field exists
- Field does not exist
- Equals true
- Equals false
- Equals value
- Does not equal value
- Greater than
- Less than
- Greater than or equal to
- Less than or equal to
Equals true / Equals false apply to boolean fields. Greater-than and less-than comparisons apply to number, date, and date/time fields.
Example uses:
- Sync only active contacts or leads
- Exclude records missing an email address
- Sync opportunities above a specified value
- Include records updated after a specific date
- Exclude leads with a disqualified status
NOTE
Filter changes apply to future syncs only. They do not remove records that were already written to Iterable under an earlier filter.
# 6. Review mapping validation
The Mapping Validation page summarizes each object and blocks save until required configuration is complete.
Typical requirements:
- A User Update mapping must include the primary identity (email or user ID) from a Salesforce field.
- An Event mapping must include both the primary identity and an event name.
- A Catalog Item mapping must include at least one field mapping. The Account ID is used automatically as the item key.
- A backfill start date, if provided, must be a valid date that is not in the future.
- Mappings to an existing catalog must be compatible with that catalog.
If you see errors, go back to Sync Types, Catalog Configuration, or Field Mapping and update the configuration.
# 7. Set the sync schedule
On the Sync Settings page, choose how often Salesforce data should sync to Iterable. The schedule uses UTC.
The default interval is every hour. After you save, incremental syncs begin at the next scheduled run and include records modified since you activated the integration.
If you enabled backfill for an object, that historical load starts when you save — it does not wait for the first scheduled interval.
# Lead conversion
If Lead is one of the selected objects, the integration detects converted
leads and merges the lead’s Iterable identity into the resulting Contact. That
preserves engagement history after a Salesforce lead conversion.
Lead filters apply to the Lead sync only. They do not apply to converted-lead merging.
# Managing the integration
You can:
- Include multiple Salesforce objects in one setup.
- Change destinations, mappings, filters, backfill, or the schedule, then save.
- Connect additional Salesforce organizations as separate setups.
- Disable the integration to stop syncing.
Removing or changing one object’s mappings does not require removing the Salesforce connection.
NOTE
If you re-enable Backfill historical data and save, that object’s historical window runs again. Uncheck backfill when you do not want it to rerun.