--- title: 'Custom Nodes' description: 'Learn how to implement custom nodes for your Schema.org.' --- **Quick Answer:** Create custom Schema.org nodes by passing a plain object to `useSchemaOrg()`. Use `@type` for the schema type and any valid Schema.org properties. ## Why Create Custom Schema.org Nodes? If you need to add a node that isn't officially implemented, you can provide it yourself. This is useful for: - Niche schema types not covered by built-in helpers - Emerging schema types not yet added to the library - Highly specific industry schemas Custom nodes are plain objects following the [Schema.org specification](https://schema.org/docs/full.html). ```ts import { useSchemaOrg } from '@unhead/schema-org/@framework' useSchemaOrg([ { '@type': 'SingleFamilyResidence', 'numberOfRooms': 3, 'occupancy': 5, 'numberOfBathroomsTotal': 2, 'floorSize': '2000 sqft', 'petsAllowed': true, } ]) ``` ## How Do I Add TypeScript Support for Custom Nodes? Use [schema-dts](https://github.com/google/schema-dts) for full TypeScript support with custom nodes. ```ts import type { DefinedTerm } from 'schema-dts' import { useSchemaOrg } from '@unhead/schema-org/@framework' useSchemaOrg([ { '@type': 'DefinedTerm', 'name': 'Unhead Schema.org', 'description': 'Unhead Schema.org is a library for adding Schema.org to your application.', 'inDefinedTermSet': { '@type': 'DefinedTermSet', 'name': 'Schema.org Libraries', }, } ]) ``` ## Related Recipes - [Setting Up Your Identity](/docs/schema-org/guides/recipes/identity) - Define your organization/person - [Blog Posts](/docs/schema-org/guides/recipes/blog) - Article structured data - [eCommerce](/docs/schema-org/guides/recipes/e-commerce) - Product structured data