---
title: "Supported Nodes"
description: "Create Article, Product, Event, Recipe, and other Schema.org nodes with typed define* helpers and resolver-backed defaults."
canonical_url: "https://unhead.unjs.io/docs/schema-org/guides/core-concepts/nodes"
last_updated: "2026-08-11T00:44:02.035Z"
---

Create Schema.org nodes with `define*` helpers such as `defineArticle()` and `defineProduct()`. Each helper provides TypeScript input types and attaches a resolver for node-specific defaults and relationships.

Supported nodes are the Schema.org types for which Unhead provides a dedicated resolver. Some correspond to Google Search features, while others are general Schema.org types.

The documented fields are a Google-focused subset, plus fields used by Unhead's resolver. A helper does not claim to type every property allowed by Schema.org. Extra properties pass through to the generated JSON-LD.

## Google root coverage

Every entry in [Google's structured data feature gallery](https://developers.google.com/search/docs/appearance/structured-data/search-gallery) can be represented by a dedicated helper or a composition of helpers. These features have their own root helpers:

- Discussion forums: `defineDiscussionForumPosting()`
- Education Q&A: `defineQuiz()`
- Employer ratings: `defineEmployerAggregateRating()`
- Math solvers: `defineMathSolver()`
- Vacation rentals: `defineVacationRental()`

Carousels, profile pages, Q&A pages, speakable content, and paywalled content use existing helpers. See [Google Search fields](/docs/schema-org/guides/core-concepts/google-search-fields) for the compositions and typed properties.

## How do I add a custom Schema.org node?

If you need a node that isn't officially supported, provide it as a plain object following the [Schema.org specification](https://schema.org/docs/full.html).

For TypeScript support, use [schema-dts](https://github.com/google/schema-dts).

<code-group>

```ts [Untyped]
import { useSchemaOrg } from '@unhead/schema-org/@framework'

useSchemaOrg([
  {
    '@type': 'DefinedTerm',
    'name': 'Nuxt Schema.org',
    'description': 'Nuxt Schema.org is a Nuxt module for adding Schema.org to your Nuxt app.',
    'inDefinedTermSet': {
      '@type': 'DefinedTermSet',
      'name': 'Nuxt Modules',
    },
  }
])
```

```ts [schema-dts]
import type { DefinedTerm } from 'schema-dts'
import { useSchemaOrg } from '@unhead/schema-org/@framework'

const NuxtSchemaOrgDefinedTerm: DefinedTerm = {
  '@type': 'DefinedTerm',
  'name': 'Nuxt Schema.org',
  'description': 'Nuxt Schema.org is a Nuxt module for adding Schema.org to your Nuxt app.',
  'inDefinedTermSet': {
    '@type': 'DefinedTermSet',
    'name': 'Nuxt Modules',
  },
}

useSchemaOrg([NuxtSchemaOrgDefinedTerm])
```

</code-group>

## Which nodes are officially supported?

Each supported node has a dedicated `define*` helper with TypeScript autocomplete and resolver-backed transforms. The helpers do not perform runtime Schema.org or Google validation.

<schema-org-node-list>



</schema-org-node-list>
