People

Last updated:

|Edit this page

People in PostHog represent the users behind your events. You can view them in the People tab.

People have person profiles with properties. This enables you to do things like:

  • Filter on person properties
  • Create cohorts
  • Use person properties for targeting feature flags, A/B tests, and surveys.
  • Track initial UTM values and referrers across anonymous and identified users.
  • Query the persons table using SQL insights

How to create person profiles

When you capture your first identified event for a user, it creates a person profile for them. Then, any future events captured are attributed to this profile. You can also set properties for the person.

For backward compatibility, PostHog captures identified events that create a person profile by default. You can change this by setting your snippet or frontend SDK initialization's person_profiles value to identified_only or a server-side SDK or API event's $process_person_profile property to false.

Viewing person profiles

Clicking on a person in the People tab opens their profile and shows all their properties.

Person profile
  • Events shows all the events a person has triggered, which you can search and filter to find specific events.

  • Recordings shows all of the session replays a person has generated. Note this is subject to the retention policy of your plan, so people who haven't been active recently may have none.

  • Cohorts shows all the cohorts a person belongs to.

  • Related groups: shows groups (e.g. organizations, projects, and instances) a person belongs to.

  • Feature flags: shows all feature flags that are enabled for the person.

  • History: shows any manual changes that have been made to the person's profile.

Deleting person data

In the PostHog app

  • Search for the person via their unique ID. For example, their email.
  • Click on the person's ID
  • Click Delete person to remove them and all their associated data. You will be prompted to confirm this action.

Via the API

You can also delete persons data via the API. See the Data Deletion docs for more information.

Questions?

  • Emiliano
    9 months ago
    • Carlos
      3 months ago

      I think it is not possible now because columns there only accept person properties and HogQL expressions. What I do is use the SQL tab of Product analytics and use ChatGPT to come up with useful queries like "Last Seen":

      Screenshot 2025-01-05 at 9.49.47 AM.png

  • Daniel
    10 months ago

    Navigating users based on IDs (without names)

    I'm having trouble navigating the users based on (UU)IDs. In our current setup we apply data minimalism and don't replicate users names and other PII into PostHog. However, our application has a UUID identifying a user which we use in the identify call to PostHog when a user logs into our application.

    Now, here's the question: when looking into the People view I have a column "Person" displaying a UUID and a column "ID". Both show UUIDs. Using the application user UUID in the search field allows me to find the corresponding user profile in PostHog. However, for this found user, both the "Person" value (HogQL expression person) and the "ID" value (HogQL expression id) show a different UUID. There seems to be no HogQL field distinct_id (as it is called on client side).

    My expectation would have be able to find exactly the UUID that I passed to identify on client-side when the user logged in. What am I missing?

    • Marcus
      10 months agoSolution

      Hey Daniel, the ID of each person is generated by PostHog when a new user is being created. Note that a single user could have multiple distinct_id's. You can find the corresponding ID using this query:

      select person_id
      from person_distinct_ids
      where distinct_id = 'your_distinct_id'
  • Sakshi
    a year ago

    Why do I see person not found for a user that gets recreated after deletion?

    I deleted a user and all it's events from posthog. And then I recreated the user (by capturing events on my app). The new events get generated successfully and email & name get set as expected. However, when click on the person (of such an event), it says, person not found. Why does it not get recreated properly?

    • Alexandre
      a month ago

      Hi, I have the same initial issue but the person deleted (me) do not resurfaced when identify is called back. How can I fix this?

  • Florencia
    a year ago

    Select users in SQL

    When trying to filter users like this

    SELECT * FROM persons WHERE persons.properties.name is in (
    'xxx@yyy.com', 'bbb@zzz.com' )

    It shows me a massage of error: Authentication credentials were not provided.

    What should I do to do queries with this field?

    thanks!

    • Marcus
      a year agoSolution

      That seems to be another query and another error. Note that the person model itself does not carry an email field. I guess you would rather access the email user property under properties.

  • eyal
    2 years ago

    bulk delete all persons

    hi, i am trying to delete all persons in my posthog . they where inserted by mistake . i try to use the DELETE endpoing . but to delete a person it requires an id. id of type number. in the systme of posthog , the id is string. where can i find the needed id ?

    the end point: const personDeleteUrl = https://app.posthog.com/api/projects/${PROJECT_ID}/persons/${personI.id}/?personal_api_key=${POSTHOG_PERSONAL_API_KEY}

    • Emanuele
      2 years agoSolution

      Hi, you can list persons in your project using this endpoint:

      https://app.posthog.com/api/projects/:project_id/persons/

      You can then use the DELETE endpoint as you were correctly suggesting.

      You can see all persons related endpoints here:

      https://posthog.com/docs/api/persons

  • Peter
    2 years ago

    Exporting Persons to bigQuery or database

    I'd like to export Persons data so I can connect it to our database to create a marketing attribution dashboard.

    Specifically, I want to connect person properties like initial_utm_source to usage data we have in our database.

    How can I do this?

    • Michael
      2 years agoSolution

      Hey! It's probably best to use the PostHog API for this: https://posthog.com/docs/api/persons. Note that the state of a person can change, so you'll need to sync the data from PostHog every so often.

  • Helena
    3 years ago

    Display User Property

    Can we show the user's name rather than the user ID throughout Posthog reports?

    • Yakko
      3 years ago

      Hey Helena,

      If you set the property 'name' on persons that's what we'll use on the list to identify them.

      Best,

      Yakko

    • Karl-Aksel
      3 years agoSolution

      Hey Helena

      If you set the property 'name' on persons that's what we'll use on the list to identify them. Alternatively you can set the 'Person Display Name' properties under project settings!

Was this page useful?

Next article

Sessions

A session is a set of events that try to capture a single use of your product or visit to your website. They are used in multiple areas of PostHog: Session replays Web analytics Session aggregations Session properties Sessions enable you to analyze how exactly users are using your product, their entry and exit points, how long they spend on your site, how active they are, bounce rate, and more. How does PostHog define a session? Our JavaScript Web library and mobile SDKs (Android, iOS, React…

Read next article

PostHog.com doesn't use third party cookies - only a single in-house cookie.

No data is sent to a third party.

Ursula von der Leyen, President of the European Commission