Skip to main content
seofields
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

FieldTypeRequiredDescription
namestringTitle of the profile page.
dateCreateddatetimeWhen this profile page was created.
dateModifieddatetimeWhen this profile page was last modified.
mainEntity.namestringFull name of the person who is the subject of this profile page.
mainEntity.urlstringWebsite URL of the person.
mainEntity.imagestringProfile image URL of the person.
mainEntity.descriptionstringBio or description of the person.
mainEntity.jobTitlestringJob title of the person.
mainEntity.sameAsstringSocial 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?