Match User IDs across integrations
Make sure your Appcues User ID and Group ID match the values your integrations expect so data syncs correctly between systems.
Table of Contents
Why this matters
Appcues integrations sync user and group data between Appcues and external tools like Salesforce, HubSpot, and Amplitude. For this sync to work, the User ID you send in Appcues.identify() must exist as a matching value in the connected system. If the IDs don't match, the integration can't link records and data won't flow between platforms.
The same applies to Group IDs if you use Appcues.group() with integrations that support account-level data.
Choose your User ID and Group ID carefully during your installation plan — changing them later requires re-identifying all your users.
Integration requirements
Each integration has its own rules for how the Appcues User ID must match. The table below covers the most common integrations.
Salesforce
Salesforce ↔ Appcues (two-way sync): The Appcues User ID must exist as a field value on the Salesforce object you're syncing (Contacts, Leads, or a custom object).
HubSpot
HubSpot → Appcues: The Appcues User ID must exist as a property value on the HubSpot contact record.
Appcues → HubSpot: The HubSpot VID or the contact's email address must exist as an Appcues user property. The email can come from identify(), from the HubSpot → Appcues sync, or from a data source connection.
See: HubSpot integration
Marketo
Marketo → Appcues: The Appcues User ID must exist as a field value on the Marketo lead record.
Appcues → Marketo: The Marketo Lead ID or the lead's email address must exist as an Appcues user property. The email can come from identify(), from the Marketo → Appcues sync, or from a data source connection.
See: Marketo integration
Heap
Heap → Appcues: The Appcues User ID must exist as a value on the Heap user profile.
See: Heap integration
Amplitude
Amplitude → Appcues: The Appcues User ID must exist as a user property in Amplitude.
Mixpanel
Mixpanel → Appcues: The Appcues User ID must match the Distinct ID of the user in Mixpanel.
See: Mixpanel integration
Hightouch
Hightouch → Appcues: The user ID on your Hightouch model must match the Appcues User ID sent in identify().
Census
Census → Appcues: The Sync Key on your Census model must match the Appcues User ID sent in identify().
See: Census integration
Common patterns
Using email as the User ID. Some teams use email addresses as their Appcues User ID because most integrations already store emails. This works but has tradeoffs: emails can change, they're not opaque, and they can make identity verification less secure. If you go this route, make sure emails are consistent (always lowercase, for example).
Using a database ID. UUIDs or internal database IDs are more stable and secure, but you'll need to confirm that same ID exists in each integration. For CRM tools like Salesforce and HubSpot, this often means adding a custom field to store the ID.
Using a CDP. If you use Segment, Rudderstack, or another CDP, the user ID you send through the CDP is typically what reaches both Appcues and your other tools. This simplifies matching since all systems receive the same ID from one source.
If data isn't syncing
Check that the IDs actually match. Open a user's profile in Appcues Studio and compare their User ID against the corresponding record in the integration. Look for subtle mismatches like extra whitespace, different casing, or a prefix/suffix that only exists on one side.
Check sync direction. Some integrations are one-way (e.g., Heap only sends data to Appcues). If you're expecting data to flow in a direction the integration doesn't support, it won't work regardless of ID matching.
Check sync timing. Integration syncs are server-side and periodic — they're not instant like identify(). A user property from HubSpot might take minutes or hours to appear in Appcues. If you need a property available immediately, send it directly via identify().
Check the integration status. Go to Settings > Integrations in Appcues Studio and confirm the configuration is correct.
Still stuck?
Collect the following and email support@appcues.com:
- The Appcues User ID for an affected user
- The corresponding record ID or profile link in the integration
- Which integration and sync direction is failing
- A screenshot of the integration status page in Appcues Studio