In short. Put the site's persistent account identifier in mainEntity.identifier and treat the public handle as alternateName.
Definition: A stable profile identifier is the value in
mainEntity.identifierthat a site uses to identify an account within its own system. Google describes this property as a unique site-level identifier, such as an internal database ID that continues to identify a user when the user's social media handle changes.
Key facts
- Google's ProfilePage structured data documentation lists
identifieras a recommended property for thePersonorOrganizationthat represents the profile. - Google describes
identifieras any unique identifier used within your site, including an internal database ID that identifies a user even if their social media handle changes. - Google documents
alternateNameas an alternate public identifier, with a social media handle as its example when a person's real name is used inname. - The Schema.org identifier property represents an identifier for any
Thing, including ISBNs, GTIN codes and UUIDs, and permits textual strings or URL (URI) links. - Google's example places
identifierinsidemainEntity, alongsidenameandalternateName, on aPersoninProfilePageJSON-LD.
What should mainEntity.identifier contain?
Use the account key that your site already assigns and keeps stable. Google’s ProfilePage guidance describes the field as “Any unique identifier that's used within your site” and gives an internal database ID as the concrete example. That wording fits a database key or another persistent account value, rather than a handle chosen for public display.
The property belongs on the Person or Organization object nested in mainEntity. Google defines mainEntity as the person or organization that the profile page is about and asks sites to use the correct type when that information is available. For an unknown type of account, the documentation says to default to Person.
"mainEntity": {
"@type": "Person",
"name": "Angelo Huff",
"alternateName": "ahuff23",
"identifier": "123475623"
}
How does the stable value differ from a handle?
Google’s guidance assigns different roles to these properties. name is the primary way the person or organization is identified. Google recommends real names in that field and describes alternateName as the place for a social media handle when the real name is used in name. If name is unavailable, alternateName can satisfy the documented name requirement.
The handle can therefore change as a public account label changes, while the site’s internal identifier remains the account key. This follows Google’s own example: ahuff23 is the alternateName, while 123475623 is the identifier. Schema.org’s definition is broader than this Google use case: it describes identifier as a property for any kind of Thing and says that identifiers can be represented as text strings or URL (URI) links.
What should a site update when the handle changes?
Keep the value of mainEntity.identifier tied to the same account record. Update the public alternateName when the handle changes, and update the profile URL if the site’s address changes. The profile’s name remains the primary identification field when the site has a real name for the person or organization. Google separately documents sameAs for URLs to other external profiles or home pages.
Google does not prescribe an identifier format or a migration procedure. The documented requirement is that the value be unique within the site and suitable for identifying the profile entity.
How can you check the result?
Google recommends validating structured data with the Rich Results Test and fixing critical errors. Its workflow also says to deploy a few pages, use the URL Inspection tool to test how Google sees them, and ensure the page is accessible rather than blocked by robots.txt, noindex, or login requirements. After Google indexes the pages, Search Console provides the relevant rich result status report for issues.
Related terms
FAQ
Is a social handle the stable profile identifier?
A social handle is a public alternate identifier documented for alternateName. The stable value for this use case is the site’s unique internal identifier in identifier.
Can identifier be a URL?
Schema.org permits an identifier as a textual string or a URL (URI) link. Google’s ProfilePage table labels the property Text and specifically describes an internal database ID, so a site following this guidance can use its persistent account value.
What if the account type is unknown?
Google says to use Person when the site cannot determine whether the account represents an individual or an organization.
Sources
- Google Search Central, "Profile page (ProfilePage) structured data", 8 September 2026
- Schema.org, "identifier", undated
Check how a page reads to answer engines. Open the GEO score analyzer