Skip to main content
seofields
docs
.md

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
namestring✓Title of the profile page.
dateCreateddatetime—When this profile page was created.
dateModifieddatetime—When this profile page was last modified.
mainEntity.namestring✓Full name of the person who is the subject of this profile page.
mainEntity.urlstring—Website URL of the person.
mainEntity.imagestring—Profile image URL of the person.
mainEntity.descriptionstring—Bio or description of the person.
mainEntity.jobTitlestring—Job title of the person.
mainEntity.sameAsstring—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 the schemaOrgProfilePage 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?