docs
ProfilePage
The ProfilePage schema type identifies a page that represents a single person or organization — author bios, creator channels, employee directories, and community member pages. It powers Google's Profile rich results and bolsters E-E-A-T signals across your site.
About ProfilePage
The most important field is mainEntity — it tells Google "this page is about this person/organization". Use it together with a fully populated Person block (with sameAs pointing to LinkedIn, GitHub, or verified social profiles) so Google can build an authoritative knowledge panel for your authors. ProfilePage is also a strong signal for E-E-A-T evaluations.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | Title of the profile page. |
dateCreated | datetime | — | When this profile page was created. |
dateModified | datetime | — | When this profile page was last modified. |
mainEntity.name | string | ✓ | Full name of the person who is the subject of this profile page. |
mainEntity.url | string | — | Website URL of the person. |
mainEntity.image | string | — | Profile image URL of the person. |
mainEntity.description | string | — | Bio or description of the person. |
mainEntity.jobTitle | string | — | Job title of the person. |
mainEntity.sameAs | string | — | Social media URL (LinkedIn, Twitter, etc.). |
Plugin Registration
sanity.config.ts
import { defineConfig } from 'sanity'
import { schemaOrgProfilePagePlugin } from 'sanity-plugin-seofields/schema'
export default defineConfig({
plugins: [
schemaOrgProfilePagePlugin(),
],
})Schema Usage
Add theschemaOrgProfilePage field to any document schema:
schemas/authorPage.ts
import { defineField, defineType } from 'sanity'
export default defineType({
name: 'authorPage',
title: 'Author Page',
type: 'document',
fields: [
defineField({
name: 'schemaOrgProfilePage',
title: 'ProfilePage Schema',
type: 'schemaOrgProfilePage',
}),
],
})GROQ Query
GROQ query
*[_type == "authorPage"][0]{
schemaOrgProfilePage {
name,
dateCreated,
dateModified,
mainEntity {
name,
url,
image,
description,
jobTitle,
sameAs
}
}
}Next.js Component
app/author/[slug]/page.tsx
import { ProfilePageSchema } from 'sanity-plugin-seofields/schema/next'
export default function Page({ data }) {
return <ProfilePageSchema data={data.schemaOrgProfilePage} />
}JSON-LD Output
Generated JSON-LD
{
"@context": "https://schema.org",
"@type": "ProfilePage",
"name": "Jane Doe — Developer Profile",
"dateCreated": "2024-01-01T00:00:00Z",
"dateModified": "2025-01-15T00:00:00Z",
"mainEntity": {
"@type": "Person",
"name": "Jane Doe",
"url": "https://janedoe.dev",
"image": "https://example.com/jane-photo.jpg",
"description": "Full-stack developer specializing in React and Node.js.",
"jobTitle": "Senior Software Engineer",
"sameAs": "https://linkedin.com/in/janedoe"
}
}Was this page helpful?