PostHog Identify Merging Wrong Users

Workaround available Web, mobile, server SDKs Updated October 21, 2026

Quick answer

Different people end up as one person when identify() receives a generic ID (like 'null') or reset() isn't called on logout on shared devices. PostHog won't merge two already-identified users and logs a warning instead.

Most likely fix: Fix the IDs you send.

Symptoms

One person profile has events from many users, users appear split across several profiles, or Ingestion warnings show 'Refused to merge an already identified user'.

Why it happens

  • Placeholder distinct IDs such as null, undefined or true sent for many users
  • posthog.reset() not called on logout
  • identify() or alias() called too late or not at all
  • Trying to merge two profiles that are both already identified

How to fix it

Try these in order — the most common fix is first.

  1. 1. Fix the IDs you send

    1. Only call identify() with a real unique user ID from your database
    2. Never send null, 'undefined' or shared IDs
  2. 2. Reset on logout

    1. Call posthog.reset() in your logout handler so the next user on the device gets a new anonymous ID
  3. 3. Identify early

    1. Call identify() right after login or signup, before capturing important events
    2. Check the person's Distinct IDs tab and $identify event to confirm the right IDs are linked
  4. 4. Clean up bad data

    1. Use 'Split IDs' on a polluted person profile
    2. Use 'Reset deleted person' on the persons page to reuse a deleted distinct ID

This guide also covers

  • posthog identify not working
  • posthog merging users
  • posthog refused to merge
  • posthog reset on logout
  • posthog duplicate persons

Still not working?

If PostHog keeps failing, you're not alone. See every PostHog problem users report or the alternatives people switch to.

Other PostHog errors