Why does user_id not match between UI and webhooks?
This is expected behaviour driven by reference_id.
This is expected behaviour driven by reference_id.
Reauth events are emitted only when the same reference_id is reused for the same provider account; reconnecting with a different reference_id creates a separate user record. On the current API, when the same account reconnects the old user record is deleted and replaced, which can explain UI/webhook mismatches. On the newer API version, same account + same reference_id still triggers reauth, but same account + a different reference_id keeps both records.
The dashboard UI shows the most recent user_id/reference_id for an account, while webhooks continue for every active connection, each keeping its original ids. Always use the user_id and reference_id from the webhook payload for data processing.
Blocking the same account under different reference_ids is not natively supported. To detect that an account was connected before:
Query the /athlete endpoint.
Compare the provider_user_id (the account's unique id on the provider side).
Dedupe or disconnect on your side.
Note that for Apple the provider_user_id is OS-managed and can change on app reinstalls.
Last updated
Was this helpful?