Load the Intercom snippet in index.html or your app entry component, then call window.Intercom('boot', {app_id: INTERCOM_APP_ID}) once, e.g. in the entry component constructor with any identify settings you need. Do not boot inside action creators or per-user fetch logic; boot once at startup and then push user changes with Intercom('update') when the user logs in or switches. And in an SPA, remember to call Intercom('update') on every route change so page views and targeted messages fire, the boot alone is not enough.

Context: Stack Overflow #42382809 (accepted answer, 7 votes): React + redux-segment user could not figure out where the app id goes or where to actually load Intercom. They tried loading it inside an action creator when grabbing the current user, and the widget never booted.