---
title: "Install Unhead Schema.org with Solid.js"
description: "Add Schema.org structured data to Solid.js apps with the @unhead/schema-org Solid adapter."
canonical_url: "https://unhead.unjs.io/docs/solid-js/schema-org/guides/get-started/installation"
last_updated: "2026-08-11T00:40:27.524Z"
---

## Setup

### 1. Install the Package

Install `@unhead/schema-org` in your project:

<code-group>

```bash [yarn]
yarn add @unhead/schema-org
```

```bash [npm]
npm install @unhead/schema-org
```

```bash [pnpm]
pnpm add @unhead/schema-org
```

</code-group>

### 2. Configure the Plugin

Configure the Schema.org [`host`](/docs/schema-org/guides/core-concepts/params) when you create the head instance:

```tsx
import { UnheadSchemaOrg } from '@unhead/schema-org'
import { createHead, UnheadContext } from '@unhead/solid-js/client'
import { render } from 'solid-js/web'
import App from './App'

const head = createHead({
  plugins: [
    UnheadSchemaOrg({ host: 'https://example.com' }),
  ]
})

render(() => (
  <UnheadContext.Provider value={head}>
    <App />
  </UnheadContext.Provider>
), document.getElementById('root')!)
```

Use the same plugin configuration with `createHead()` from `@unhead/solid-js/server` for SSR. See [Schema.org Params](/docs/schema-org/guides/core-concepts/params) for all available options.

### 3. Add Schema.org Nodes

Import composables and node helpers from the Solid adapter:

```tsx
import { defineWebPage, defineWebSite, useSchemaOrg } from '@unhead/schema-org/solid-js'

function SiteSchema() {
  useSchemaOrg([
    defineWebSite({ name: 'Example Site' }),
    defineWebPage(),
  ])

  return null
}
```

## Recommended: Vite Plugin

The [Vite plugin](/docs/head/guides/build-plugins/overview) can tree-shake server-only code and transform head composables at build time:

```ts [vite.config.ts]
import { Unhead } from '@unhead/solid-js/vite'
import { defineConfig } from 'vite'
import solid from 'vite-plugin-solid'

export default defineConfig({
  plugins: [solid(), Unhead()],
})
```

## Optional: Auto-Imports

The Solid adapter exports an auto-import preset:

```ts [vite.config.ts]
import { schemaOrgAutoImports } from '@unhead/schema-org/solid-js'
import AutoImport from 'unplugin-auto-import/vite'

export default defineConfig({
  plugins: [
    AutoImport({
      imports: schemaOrgAutoImports,
    }),
  ],
})
```

## Using Schema.org with Reactivity

Create the schema entry once, then patch it from a Solid effect:

```tsx
import { defineArticle, useSchemaOrg } from '@unhead/schema-org/solid-js'
import { createEffect, createResource } from 'solid-js'

async function fetchArticleData(id: string) {
  const response = await fetch(`/api/article/${id}`)
  return response.json()
}

function ArticleSchema(props: { id: string }) {
  const [article] = createResource(() => props.id, fetchArticleData)
  const entry = useSchemaOrg()

  createEffect(() => {
    entry.patch([
      defineArticle({
        headline: article()?.title || 'Loading...',
        description: article()?.summary || '',
        image: article()?.featuredImage || '',
        datePublished: article()?.publishDate,
        author: {
          name: article()?.author?.name || 'Anonymous',
        }
      })
    ])
  })

  return null
}
```

## Next Steps

1. Choose an [Identity](/docs/schema-org/guides/recipes/identity)
2. Set up your pages with [Schema.org nodes](/docs/schema-org/guides/core-concepts/nodes)
3. Follow a recipe:

- [Breadcrumbs](/docs/schema-org/guides/recipes/breadcrumbs)
- [FAQ Page](/docs/schema-org/guides/recipes/faq)
- [Site Search](/docs/schema-org/guides/recipes/site-search)
