If your marketing team lives in Iterable and your sales team swears by Salesforce, you know the pain of duplicate contacts and missing data. This guide is for admins or ops folks who need Iterable and Salesforce to play nice—without endless manual work or a tangled mess of sync errors.
I've done this integration for startups and mid-size companies. Here's what actually works, what's just hype, and where to watch out for hidden hassles.
Why Bother Syncing Iterable and Salesforce?
Before you spend hours on setup: is this worth it? If you want sales and marketing to actually see the same customer data, yes. But don’t expect magic. The goal is:
- No more copy-pasting leads between tools
- Sales can see marketing activity, and marketers can see sales updates
- You avoid awkward moments like “Sorry, we already emailed you”
But, if your teams don’t use both systems regularly, or you only care about a handful of shared fields, you might not need a full sync. Think before you dive in.
Step 1: Decide What Data Actually Needs Syncing
Here’s where most people mess up: they try to sync everything. Resist that urge.
Start small. Figure out which fields actually matter to both teams. Usually, it’s:
- Contact info (email, name)
- Lead status or lifecycle stage
- Key marketing events (campaign engagement, maybe)
- Sales notes or opportunity status (rarely needed in Iterable, but sometimes handy)
Pro tip: Make a Google Sheet with field names in Iterable and Salesforce. Map them before you touch any settings.
Step 2: Pick Your Sync Method
There’s no “official” plug-and-play integration between Iterable and Salesforce, which is kind of wild given how many people use both. Here are your main options:
Option 1: Iterable’s Salesforce Integration
Iterable does offer a built-in Salesforce integration, but it only goes one way—pulling Salesforce data into Iterable. If you just want to trigger email campaigns based on Salesforce updates, this can work.
What it does: - Imports Leads and Contacts from Salesforce into Iterable - Updates Iterable user profiles when Salesforce data changes
What it doesn’t do: - Push data back into Salesforce (no two-way sync) - Handle custom objects or weird field types
When to use:
You want simple marketing triggers based on Salesforce data, and you don’t need updates to go both ways.
Skip if:
You need full two-way sync, or your Salesforce data is highly customized.
Option 2: Third-Party iPaaS Tools (like Zapier, Tray.io, Workato)
If you need a two-way sync, or have more complex workflows, you’ll need an integration platform (called iPaaS).
Popular options: - Zapier (easy, but limited) - Tray.io (more powerful, needs setup) - Workato (enterprise, expensive)
What works: - You can build triggers (e.g., “when a lead updates in Salesforce, update Iterable,” and vice versa) - Handles custom fields
What to watch out for: - Costs add up fast as you scale - You have to maintain the logic yourself—if field names change, things break - Zapier is fine for small stuff, but gets messy for bigger syncs
Option 3: Custom API Integration
If you have an engineering team, you can build a sync using the Iterable and Salesforce APIs.
Who should do this:
Only if you have very specific needs, or want total control over the sync process.
Warning:
APIs change, rate limits exist, and error handling is a pain. Only go this route if you know what you’re doing.
Step 3: Set Up the Connection
Let’s walk through the most common route: using Iterable’s built-in integration to pull Salesforce data into Iterable. (If you want bidirectional sync, see the iPaaS notes above—process is similar, just more moving parts.)
A. Prep Your Salesforce Data
- Clean up fields: Make sure the fields you want to sync are actually populated and don’t have weird values. Empty or inconsistent fields will just create headaches.
- Check permissions: Whoever sets this up needs “API Enabled” permissions in Salesforce.
- Decide on objects: Usually you’ll sync Leads and Contacts. Custom objects get tricky.
B. Configure Iterable’s Salesforce Integration
-
Go to Integrations in Iterable:
In Iterable, head to Integrations > Platform > Salesforce. -
Connect your Salesforce account:
Click “Connect Salesforce” and authorize via OAuth. Use a dedicated integration user if possible, not your personal login. -
Map your fields:
- Iterable will show you which Salesforce fields can be mapped to Iterable user fields.
-
Map only what you need. Ignore fields you don’t actually use.
-
Set sync frequency:
Decide how often you want data pulled in (hourly, daily, etc.). Don’t set this to “every minute”—you’ll hit limits and annoy everyone. -
Test with a small batch:
Always run a sync with just a few records at first. Watch for weird mappings, missing data, or duplicate users.
Pro tip:
Document your field mappings somewhere outside the tool. When something breaks later, you’ll be glad you did.
C. (Optional) Set Up Workflows
- In Iterable, you can trigger campaigns or automations based on updated data from Salesforce.
- Example: When a Lead becomes a Customer in Salesforce, trigger a welcome email from Iterable.
Step 4: (If Needed) Build Two-Way Sync via iPaaS
If you need to push data from Iterable back into Salesforce (e.g., marketing engagement, unsubscribes):
-
Choose your iPaaS tool:
Start with Zapier for simple cases; use Tray.io or Workato for more advanced mapping. -
Authenticate both accounts:
You’ll need API access to both Salesforce and Iterable. Set up with admin or integration user roles. -
Map triggers and actions:
- Example: When a user opens an email in Iterable, update a custom field in Salesforce.
-
Example: When a Salesforce Opportunity closes, tag the user in Iterable.
-
Handle duplicates and errors:
Always add checks to avoid creating duplicate records or triggering endless loops (e.g., a change in Salesforce triggers an update in Iterable, which triggers another update back in Salesforce). -
Test, test, test:
Use sandbox environments if possible. Don’t sync your entire database on day one.
What not to do:
Don’t try to sync every field. Don’t set up endless triggers—you’ll burn through your iPaaS budget and make troubleshooting impossible.
Step 5: Monitor and Maintain
The integration isn’t “set and forget.” Even the best setup needs regular checks.
- Check sync logs: Most tools have logs—look for errors, skipped records, or failures.
- Audit your data: Every month or two, spot-check a few users/contacts to make sure fields are updating as expected.
- Update mappings as your systems change: New fields? Changed workflows? Update your sync settings promptly.
- Communicate changes: If you change what’s synced, let both teams know. Surprises are rarely good.
Pro Tips and Gotchas
- Watch out for rate limits: Both Salesforce and Iterable APIs have limits. If you sync too often or too many records, you’ll hit them.
- Custom objects need custom solutions: Iterable’s built-in integration doesn’t handle Salesforce custom objects. You’ll need an iPaaS or API-based solution.
- Pick a “source of truth”: Decide which system “wins” in a conflict. If a name or email is different in both places, which one is right?
- Don’t sync unsubscribes blindly: If someone unsubscribes in Iterable, don’t automatically remove them from Salesforce unless you’re sure that’s compliant with your process.
- Keep a rollback plan: Always make backups before syncing big batches, just in case you need to undo something.
The Bottom Line
Connecting Iterable and Salesforce is doable, but don’t expect perfection right away. Start with the basics, sync only what matters, and keep your mapping simple. Spend the time upfront to get it right—because fixing a broken sync is way worse than setting it up carefully the first time.
Keep it simple, document as you go, and don’t be afraid to iterate. Most of all: if you’re not sure, start with a test batch. You’ll thank yourself later.