Prevent Stripe from creating duplicate users? | Community
Skip to main content
Answered

Prevent Stripe from creating duplicate users?


I’m trying to bring down the number of duplicate emails in Intercom so I can actually use the Hubspot integration. It looks like one of the culprits is the Stripe integration. Many of my duplicates look like this:

 

User 1:

User 2:

  • email = jane@doe.com
  • user_id = unknown
  • Stripe ID  = abcdef

I can manually go through and archive these junk users that Stripe has created, but then my question is:

  • Can I prevent Stripe from doing that in the first place? Can it just wait for the “good” user (one with a user_id) and attach the stripe data to that one?
  • If I archive the stripe-connected user, will Stripe attempt to find and resync with the good user?

Best answer by mateusz.leszkiewicz

Hi Faye Campbell, It’s Mat from the Support Engineering Team 😀

To prevent duplicates, you can assign unique user_ids to leads and ensure that the same user_id is used when they log in, preventing the creation of a duplicate account.
Additionally, implementing identity verification across all platforms and enabling this feature in your security settings can help.
To resolve the issue with existing duplicates, you should consolidate your user base by merging user and lead accounts that share the same email address using the API, and then archive the duplicate lead accounts. After consolidating your user base, reinstalling Stripe will initiate a fresh sync.
It's worth noting that the behaviour of Stripe syncing when there are duplicate accounts can be inconsistent, as the integration is not designed to update two accounts with the same email address.
If you're using a merge API, the timing of the merge relative to when Stripe info is updated could be a factor.
Reinstalling the Stripe app may help to start a fresh sync and resolve timing issues.

If reinstallation doesn't work, it might be due to some bug that we are not aware of.
Please reach out to us via Messenger in your workspace to address the issue.

View original
Did this topic help you find an answer to your question?

3 replies

mateusz.leszkiewicz
Intercom Team
Forum|alt.badge.img+7

Hi Faye Campbell, It’s Mat from the Support Engineering Team 😀

To prevent duplicates, you can assign unique user_ids to leads and ensure that the same user_id is used when they log in, preventing the creation of a duplicate account.
Additionally, implementing identity verification across all platforms and enabling this feature in your security settings can help.
To resolve the issue with existing duplicates, you should consolidate your user base by merging user and lead accounts that share the same email address using the API, and then archive the duplicate lead accounts. After consolidating your user base, reinstalling Stripe will initiate a fresh sync.
It's worth noting that the behaviour of Stripe syncing when there are duplicate accounts can be inconsistent, as the integration is not designed to update two accounts with the same email address.
If you're using a merge API, the timing of the merge relative to when Stripe info is updated could be a factor.
Reinstalling the Stripe app may help to start a fresh sync and resolve timing issues.

If reinstallation doesn't work, it might be due to some bug that we are not aware of.
Please reach out to us via Messenger in your workspace to address the issue.


  • New Participant
  • 1 reply
  • June 5, 2025

Hello,

I wanted to follow up on this question as I’m seeing similar duplicates with our Stripe integration. I understand that setting a user_id will help prevent duplicates. How can I make use the user_id with the Stripe integration when the user_id is not part of the Stripe customer record. Does the Stripe integration use anything other than email address for identity resolution?

Thanks,

Dan


mateusz.leszkiewicz
Intercom Team
Forum|alt.badge.img+7
Hello ​@Blueprint ,
Great question about the Stripe integration and user identity resolution!
The Stripe integration primarily uses email address for identity matching, not the user_id field. Here's why and what this means for preventing duplicates:


How Stripe Integration Identity Resolution Works

 

When the Stripe integration processes customer data (either through webhooks or imports), it:
  • Extracts the email address from the Stripe Customer record
  • Searches for existing Intercom users with that email address
  • Updates existing users or creates new ones based on the email match
The integration doesn't use Intercom's user_id field for matching because:
  • Stripe Customer objects don't contain Intercom user_id values
  • The integration is designed to work with Stripe's native data structure
  • Email is the common identifier between both platforms

Why Setting user_id Doesn't Prevent Stripe Duplicates

 

Since the Stripe integration relies solely on email matching, setting a user_id in Intercom won't directly prevent Stripe-related duplicates.

The user_id field is excellent for preventing duplicates from your own application logic, but external integrations like Stripe operate independently.

 

Better Strategies for Preventing Stripe Duplicates

 

1. Email Consistency

  • Ensure the same email address is used in both Stripe and when users authenticate in your application
  • Be mindful of email formatting differences (trailing spaces, case sensitivity)
2. Proactive User Management
  • Use Intercom's merge API to consolidate users with matching emails before Stripe data syncs
  • Set up regular audits to identify and merge potential duplicates
3. Timing Coordination
  • As mentioned in the previous reply, timing matters - try to complete user merges before Stripe webhook processing
4. Post-Integration Cleanup
  • Implement regular monitoring for duplicate users created by the Stripe integration
  • Use Intercom's APIs to merge duplicates after they're identified

Alternative Approach

If you have control over your Stripe Customer creation process, you could potentially store the Intercom user ID in Stripe's metadata field. However, the Intercom integration doesn't currently use this for matching - it would require custom handling on your end.
The email-only matching approach is why, as mentioned in the previous reply, "the behaviour of Stripe syncing when there are duplicate accounts can be inconsistent" - the integration simply wasn't designed to handle multiple users with the same email address.
I hope this clarifies how the identity resolution works! Let me know if you have any other questions about managing user duplicates with the Stripe integration.

Reply