With Chameleon's Salesforce integration, you can leverage data from any and multiple Salesforce objects (not just the standard Contact and Account objects) to ingest data and target and personalize your in-app Experiences.
Salesforce is a Data Source: get Salesforce attributes in Chameleon; Chameleon does not send data to Salesforce.
Availability & Usage
🔐 Available for all plans
📍 To power your Tours, Embeddables, Tooltips, Microsurveys, Launchers, HelpBar
⚙️ Connect from the Dashboard, but requires an Admin, Publisher, or Engineer role. Adding, editing, or removing a Mapping requires an Admin or Engineer role.
📩 Contact to discuss your plan needs
Setting up the integration
You can enable the Salesforce integration via the Chameleon Dashboard, as long as you are able to log into the Salesforce account you wish to connect.
1. First, connect your Salesforce account
2. Define your mapping to correctly link users and companies
Note only Admins or Engineer roles can make changes to mappings.
To ensure your users' data is synced seamlessly between your Salesforce and Chameleon account, and that attributes are attached to the correct users and companies, you need to identify what attributes should match between both tools.
Once you click Define Mapping then you'll be able to select:
Whether you want to update Users or Companies in Chameleon
Which User/Company attribute you are sending to Chameleon (as part of your installation) you want to match against
Which Salesforce Object you want to sync data from, and which attribute in that Object you want to match against the Chameleon User/Company attribute
All the attributes that you are sending to Chameleon associated with a user profile or company profile will be listed; if you are not seeing the attribute you hope to match on, ensure that it is being sent as part of your implementation.
If you installed Chameleon via Twilio Segment, then all attributes you send to Twilio Segment should be available, unless you customized the installation.
🆕 You can map multiple Salesforce objects to a Chameleon User or Company object, and in those cases you will be able to import attributes from any of those objects and make those User / Company properties available to use in Chameleon.
For example, if you are a transportation software provider, and want to import fields from both a Dealership and an OEM object onto Companies in Chameleon, you can!
Each Mapping pairs one Salesforce object with one Chameleon object. You can configure up to 10 Mappings in total. The same Salesforce object cannot be mapped to the same Chameleon object multiple times.
👉 If you already had Salesforce connected before, your existing Account and Contact configuration continues to work with no changes — it now simply appears as two Mappings in this list, ready to edit like any other.
Choosing what to match on
The Chameleon property you match on determines how Salesforce records find their way to the right Users and Companies.
Matching on User ID or Company ID uses the unique UID you already send to Chameleon. You can also match on any other Chameleon property, e.g. an email address, an external account key, a plan identifier, or any custom property you send.
⚠️ Important: when you match on a property other than User ID or Company ID, Salesforce data can only land on Users and Companies that already exist in Chameleon. It will never create new Users or Companies in Chameleon. If a Salesforce record has no matching Chameleon record yet, it is skipped silently, so if you're expecting records to appear and they don't, check whether they exist in Chameleon first.
Checking your match before you save
As soon as you pick a Chameleon property and a Salesforce field, Chameleon checks the match against your live Salesforce data and reports back, for example: "8 of 10 Users spot-checked matched a Salesforce record."
ℹ️ This is a spot check, not a coverage estimate. Chameleon reads the first records it finds rather than a representative sample across your whole account, so a clean result confirms the match works, but doesn't guarantee every record will match when the full sync runs.
A partial match (for example, "12 of 20 Users spot-checked matched a Salesforce record") is shown in its own color, separate from a full match. It isn't necessarily wrong — one Salesforce object can legitimately hold a value for only part of your Chameleon records — but it's worth a second look. When values don't match, Chameleon lists a few of them underneath the result, which is often enough to tell whether you've picked the right field.
If the check can't find matches, it tells you why:
The property isn't on your account — nothing will match. Pick a different Chameleon property.
No Users or Companies hold a value for it yet — nothing will match until that data reaches Chameleon.
The values don't fit the Salesforce field — for example matching text against a Salesforce record ID field. Pick a different field or property.
Salesforce rejected the match — the two aren't comparable. Pick a different Salesforce field or Chameleon property.
The check couldn't run — this one is temporary; try again in a few minutes.
👉 Saving stays available even when a check comes back with a warning — the check only spot-checks a sample, and you may know your data better than that sample shows. If a check found no matches, or found the Mapping can never match, the Save button shows a warning icon so you can take a second look before confirming.
Changing or removing a Mapping
Removing a Mapping (or changing which objects and fields it matches on) removes the Properties it synced from Chameleon. This cannot be undone.
Before you confirm, Chameleon shows you what's affected (i.e. how many Properties will be removed, how many Users and Companies hold that data, and which Segments and live Experiences depend on it.) Read this carefully because Experiences targeted on a Segment that uses those Properties may stop working correctly.
ℹ️ If Chameleon's access to Salesforce expires, your Mappings are kept, but they can't sync or be changed until you reconnect the integration. Reconnecting to the same Salesforce org restores them and starts a fresh sync.
3. Select the fields you want to import from Salesforce
Once you have connected Salesforce and mapped the user and company fields, you be able to select fields from those mapped Salesforce objects to import into Chameleon in the "Fields to import" section.
Simply select the fields from each object you want to sync, and then hit "Sync" to run the first import.
After this the 📌 syncs will happen once every 24 hours, although you can always visit this page to run a manual update by clicking "Sync".
🤝 Sync only the fields that you know you're going to use to avoid noise/clutter
Understanding a Mapping's sync status
Each Mapping tracks and syncs on its own schedule, independently of every other Mapping, so you may see different statuses across your list:
Last synced [time] — this Mapping synced successfully; the time shown is when its own last sync ran.
Syncing — a sync is currently in progress for this Mapping.
Not synced yet — this Mapping hasn't completed its first sync.
Sync failed — Chameleon couldn't sync this Mapping; a short reason appears underneath (for example, if the Salesforce object or field it relies on was removed or renamed in Salesforce). Only this Mapping is affected — the rest of your Mappings keep syncing normally.
ℹ️ A "Last synced" time tells you Chameleon reached Salesforce, not that the Mapping is matching any records. Use the match check described above when you set up the Mapping to confirm that.
Each synced field shows up in Chameleon named after the Salesforce object it came from, followed by the field name, for example, "Account: Customer Success Manager" or, for a custom object, "Hotel: Advance Is Active (custom)". Custom fields are marked "(custom)". If several Mappings feed the same Chameleon Company or User, this prefix is how you tell which object a property belongs to.
Understanding a Mapping's sync status
Each Mapping syncs on its own, so you may see different statuses across your list:
Last synced [time] — this Mapping synced successfully; the time shows when its own last sync ran.
Syncing — a sync is in progress for this Mapping.
Not synced yet — this Mapping hasn't completed its first sync.
Sync failed — Chameleon couldn't sync this Mapping, and a short reason appears underneath. Only this Mapping is affected; the others keep syncing.
Paused — this Mapping is switched off and won't sync until you turn it back on.
ℹ️ "Last synced" means Chameleon reached Salesforce, not that the Mapping matched any records. Check the match line under the status to confirm that.
What happens if I disconnect Salesforce?
Disconnecting Salesforce keeps your Mappings and the Salesforce Properties they created — it only stops the sync. The values those Properties held on your Users and Companies are cleared right away, since they came from Salesforce and would otherwise go stale, but the Mapping configuration and Property definitions stay in place.
While Salesforce is disconnected, its Properties are archived rather than deleted — hidden from your Property lists and pickers — and any Segment or Experience filtering on a Salesforce value will stop matching anyone until you reconnect.
When you click Disconnect, you'll see a dialog with the option "Also delete the Salesforce Mappings and Properties". This is unchecked by default. Leave it unchecked to keep everything ready for next time; check it only if you want your Mappings and Properties removed for good — this cannot be undone. You'll see this same dialog whether the integration is currently active or already showing that it needs to be reconnected.
ℹ️ What happens when you reconnect depends on which Salesforce org you connect to:
Reconnecting to the same Salesforce org restores your Mappings and their Properties, and starts a fresh sync.
Reconnecting to a different Salesforce org removes your previous Mappings and Properties entirely, since they no longer match anything in the new org.
🎯 If Salesforce is connected but has no Mapping defined, Chameleon now flags it as needing attention rather than reporting it as healthy — worth checking if you expected a Mapping to still be there.
How to use it?
With the integration connected and your attributes synced, you can begin to use Salesforce data to target your Chameleon Experiences. Search for the properties you want to leverage and these will be available when creating an audience Segment to target.
You'll find the "Salesforce objects" filter group and any data you're sending from Salesforce to Chameleon, there. After selecting "Salesforce objects" in the first filter dropdown, select the relevant property: each one is named after the Salesforce object it came from, like "Account: Customer Tier", then its value and operator fields.
💡 You can also leverage Salesforce attributes when personalizing Experiences with merge tags, for example, "salesforce_contact.first_name". The tag's prefix follows whichever Salesforce object you mapped, so a custom object uses its own name instead, e.g. "salesforce_hotel__c.custom_tier".
Not seeing Salesforce within the list of filters? This could happen if this integration is not available for your plan. Please contact us if this is still the case and you're on a Growth or Enterprise plan.
Using Salesforce with HelpBar
You can leverage your Salesforce knowledge base with HelpBar to enable users to access your documentation more easily in your product.
You can add your Salesforce help center as a website to HelpBar. Chameleon uses Salesforce's KnowledgeArticleVersion to search and display your articles to users. This requires custom configuration and can not be set up via your Dashboard at the moment, so please contact us if it's something you want to use.
Launching Salesforce chat from Experiences
If your team uses Salesforce chat, you can also enable users to launch it in your app from Chameleon Experiences (via the Salesforce API). You can do so with a button "Action" or your Launcher (add it as an "Item").
👉 Pick the "Run Custom Code" option from your CTA button or when adding a new Item to your Launcher and paste this code: launchChat();
ℹ For this to work correctly, you should have Salesforce installed (including the code that allows the Salesforce chat to run) on the pages of your product where Chameleon Experiences are seen by end users.





