We've integrated Intercom Messenger into our web application, using JWTs for authenticated users.
The backend flow is designed to find or create an Intercom contact for each user. If a contact doesn't exist, it's created with:
{
"user_id": "intercomContactId",
"name": "our_user_email",
"email": "our_user_email",
"external_id": "userId_in_our_system"
}
This data is then included in the JWT sent to the frontend. The problem is that after several frontend reloads, Intercom creates multiple new contacts with the same user information.