# Client Portfolios: Manage Multiple Sites as an Agency
Source: https://docs.schemagen.io/account/client-portfolios
Create isolated workspaces for each client, manage schemas and SDN settings per site, and hand off white-label deliverables from one Agency account.
Client portfolios give your agency a dedicated, isolated workspace for every client you manage. Each portfolio keeps that client's schemas, SDN configuration, and analytics completely separate from your other clients. You switch between clients from a single dashboard without logging out or switching accounts.
Client portfolios are available on the **Agency plan only**. Upgrade from **Settings → Billing** to unlock this feature.
## What is isolated per client
When you create a client portfolio, SchemaGen provisions a separate environment for that client. The following data is scoped exclusively to that client:
* **Schema library** — saved schemas, drafts, and published schemas belong to that client's workspace only
* **SDN configuration** — the Client ID and SDK snippet are unique per client, so schema delivery targets only that client's site
* **Analytics** — schema performance data, GSC tracking, and audit history are siloed per client
Clients cannot see each other's data. If you have five clients, each one sees only their own schemas and analytics when you view their portfolio.
## How to add a new client
From the main dashboard, click **Clients** in the sidebar. This opens your Client Portfolio overview.
Click the **Add Client** button in the top-right corner of the Clients page.
Fill in the client's name and their website URL (for example, `https://example.com`). The name appears in your portfolio list and on any white-label exports.
Click **Save** (or **Create**). SchemaGen creates the isolated workspace and generates a unique Client ID for that site.
Copy the SDK snippet that contains the client's unique Client ID and send it to the client's developer. Once installed, the SchemaGen SDK will deliver schemas to that domain.
## Switching between clients
From the **Clients** page, each client appears as a card showing their site name, domain, number of managed schemas, and last audit date. Click any card to enter that client's workspace. All views—schema builder, audit tool, analytics—update to show only that client's data.
To return to your agency overview, click **Back to Dashboard** at the top of the page.
## The Client ID
Every client portfolio has a unique **Client ID** generated by SchemaGen at creation time. You use this ID in the SDK snippet installed on the client's website. The SDK uses the Client ID to identify which schemas to fetch and inject on that domain.
To find a client's Client ID:
Click the client's card from the **Clients** page.
Look for the **SDK Setup** or **Settings** section within the client workspace. The Client ID and ready-to-copy script tag are displayed there.
Copy the full script tag and pass it to the developer responsible for the client's site. It only needs to be installed once.
Each client has a different Client ID. Using the wrong ID on a site will deliver another client's schemas. Double-check the ID matches the correct domain before handing it off.
## White-label "Send to Dev" exports
Agency plan users can export any schema as a developer-ready package for client handoff. The export includes the final JSON-LD output formatted for direct implementation, without any SchemaGen branding.
To export a schema:
1. Open the schema you want to export from within the client's workspace.
2. Click **Send to Dev** (or the export option in the schema actions menu).
3. SchemaGen packages the JSON-LD into a clean, implementation-ready file you can attach to a ticket, email, or client report.
This is useful when a client's team wants to implement schema directly in their CMS or source code rather than relying on the SDN for delivery.
## Verified vs. pending SDK status
Each client card shows a status badge:
* **Verified** — the SDK snippet is installed and SchemaGen has confirmed it can reach the client's site. Schema delivery is active.
* **Pending SDK** — the snippet has not yet been detected on the client's domain. Send the SDK snippet to the client's developer to complete setup.
The status updates automatically once SchemaGen detects the snippet on the live site.
# Compare SchemaGen's Pricing Plans: Free, Pro, and Agency
Source: https://docs.schemagen.io/account/plans
Compare SchemaGen's Free, Pro ($29/mo), and Agency ($99/mo) plans, understand what's included in each tier, and upgrade or cancel anytime.
SchemaGen offers three plans designed for different stages of SEO work—from personal projects to full-service agency operations. All plans include JSON-LD validation and access to the schema builder. You can upgrade or cancel at any time from the dashboard with no contracts and no penalties.
Start on the Free plan to explore the schema builder and validation tools. Upgrade to Pro when you need AI URL extraction or want to save more than 5 schemas.
## Plans at a glance
**\$0 / forever.** Build and validate schemas manually. Ideal for personal sites, learning structured data, or evaluating SchemaGen before committing. Includes 5 saved schemas and Google-supported schema types.
**\$29 / month.** The full AI toolkit for solo SEOs and content professionals. Unlocks AI URL extraction, the AI copywriting agent, bulk generation, unlimited saved schemas, and the complete 800+ type Schema.org vocabulary.
**\$99 / month.** Everything in Pro, scaled for client work. Adds client portfolios, AI deep audit with PDF export, the site-wide audit tool, white-label deliverables, up to 5 team seats, and priority 24/7 support.
## Feature comparison
| Feature | Free | Pro | Agency |
| --------------------------------------- | --------------------- | ------------- | -------------- |
| Full Schema.org vocabulary (800+ types) | Google-supported only | ✓ | ✓ |
| JSON-LD validation | ✓ | ✓ | ✓ |
| Saved schemas | Up to 5 | Unlimited | Unlimited |
| AI URL extraction | — | ✓ | ✓ |
| AI copywriting agent | — | ✓ | ✓ |
| Bulk schema generation | — | 10 URLs / run | 100 URLs / run |
| AI deep audit + PDF export | — | — | ✓ |
| Client portfolios | — | — | ✓ |
| Site-wide audit tool | — | — | ✓ |
| Team seats | 1 | 1 | Up to 5 |
| Priority 24/7 support | — | — | ✓ |
## How to upgrade your plan
From any page in the dashboard, click your account avatar or the **Settings** link in the sidebar.
Select the **Billing** tab inside Settings. You'll see your current plan and usage summary.
Choose **Pro** or **Agency** and click **Upgrade**. You'll be redirected to a secure Stripe checkout page.
Enter your payment details. After Stripe confirms the transaction, your new plan activates instantly—no waiting, no manual provisioning.
Payments are processed securely by Stripe. SchemaGen does not store your card details.
## How to cancel your plan
Navigate to **Settings** from the dashboard.
Select the **Billing** tab.
Click **Cancel subscription**. Your plan remains active through the end of your current billing period. After that, your account reverts to the Free tier.
Cancelling the Agency plan removes access to client portfolios, team seats, and all Agency-only features at the end of your billing period. Export any client deliverables or audit PDFs before cancelling.
## Billing details
* **Billing cycle:** Monthly only. Annual billing is not currently available.
* **Payment processor:** All transactions are handled by Stripe with full PCI compliance.
* **Access:** New features activate immediately after a successful payment.
* **Contracts:** None. Cancel anytime from the dashboard.
## Frequently asked questions
Pro and Agency plans include an AI crawler. You paste any URL, and SchemaGen analyzes the page content—products, articles, FAQs, and more—then automatically maps it to the correct schema fields. This saves hours of manual data entry compared to filling out schema forms by hand.
No. Once you upgrade to Pro, you can generate and save as many schemas as you need. There are no per-schema fees and no storage caps.
Yes. All plans are month-to-month with no long-term contracts. Cancel directly from **Settings → Billing** with a single click. Your paid plan stays active until the end of the current billing period.
Currently SchemaGen only offers monthly billing to keep things straightforward. Annual pricing options are on the roadmap for a future release.
The site-wide audit tool is exclusive to the Agency plan. Enter a domain and SchemaGen scans every page for structured data health, identifying missing schema opportunities, syntax errors, and validation failures. Results are presented in a per-URL report you can share directly with clients.
# Invite and Manage Team Members in Your Agency Workspace
Source: https://docs.schemagen.io/account/team-management
Add colleagues to your SchemaGen Agency workspace, view seat usage, manage pending invites, and remove members—all from the Team settings page.
Team management lets you share your SchemaGen workspace with colleagues so everyone on your agency can access schemas, client portfolios, and AI features under a single account. You do not need to purchase separate subscriptions for each person—your Agency plan covers the whole team.
Team management is available on the **Agency plan only**. Free and Pro plans are single-user. To unlock team seats, upgrade your account to Agency from **Settings → Billing**.
## What team members can do
Every member you invite to your workspace has access to:
* All schemas saved in the workspace
* All client portfolios and their associated schemas, SDN configuration, and analytics
* AI features included in the Agency plan (URL extraction, copywriting agent, bulk generation, deep audit)
* The site-wide audit tool
The workspace owner retains administrative control, including the ability to invite and remove members.
## Seat limits
The Agency plan supports **up to 5 team seats**, including the workspace owner. Your current seat usage is displayed as a progress bar at the top of the **Team** page.
If you need more than 5 seats, contact SchemaGen sales about Enterprise options, which support unlimited members and custom roles.
## How to invite a team member
From the dashboard, click **Settings** in the sidebar.
Select the **Team** tab. You'll see a list of current workspace members and their status.
In the **Invite Colleagues** panel on the right, type the email address of the person you want to add.
Click **Send Invite**. SchemaGen sends an email invitation to that address immediately.
Invited members receive an email with a link to join your workspace. Their status shows as **Pending** until they accept the invitation and log in for the first time.
## Viewing your team
The **Workspace Members** table on the Team page shows each member's email address, role (owner or member), status (active or pending), and the date they joined. Use this view to quickly check who has accepted their invitation and who still has a pending invite outstanding.
## How to remove a team member
Navigate to **Settings → Team**.
Locate the member you want to remove in the **Workspace Members** table.
Click the remove action in the row for that member. Confirm the action when prompted. The member loses access to the workspace immediately.
Only the workspace owner can remove members. You cannot remove yourself as the owner.
## What happens when you hit the 5-seat limit
When all 5 seats are occupied, the invite form is disabled and new invitations cannot be sent. A notice appears in the **Invite Colleagues** panel indicating that the workspace has reached maximum capacity. To add a new member, first remove an existing member to free up a seat.
If your team regularly exceeds 5 members, contact SchemaGen sales about an Enterprise plan with unlimited seats.
# SchemaGen API: Authentication and Access Level Guide
Source: https://docs.schemagen.io/api/authentication
Understand which SchemaGen API endpoints are public, which grant higher rate limits when authenticated, and which require a Pro or Agency account.
SchemaGen's API is designed to be accessible without a separate API key for most use cases. Authentication is tied to your SchemaGen account session, and the level of access you receive depends on whether you are logged in and what plan your account is on.
Most SchemaGen API endpoints do not require a separate API key. You do not need to generate or manage credentials — authentication is handled through your SchemaGen account session.
## Public endpoints (no auth required)
The inject and embed APIs are fully public. They require only a `clientId` and a `url` query parameter, both of which are safe to use from client-side code and third-party platforms.
| Endpoint | Auth required |
| ----------------- | ------------- |
| `GET /api/inject` | No |
| `GET /api/embed` | No |
These endpoints are designed for use by the SchemaGen SDK and CMS integrations. They do not expose any account data.
## Endpoints with optional authentication
The generate and validate APIs accept requests from both authenticated and unauthenticated callers. The difference is in rate limits and usage tracking:
| Endpoint | Guest behavior | Authenticated behavior |
| -------------------- | ------------------------------------------- | ----------------------------------------- |
| `POST /api/generate` | IP-based rate limit; no usage quota applied | Per-user rate limit; usage quota enforced |
| `POST /api/validate` | IP-based rate limit | IP-based rate limit (same as guest) |
If you are building a server-side integration and want higher rate limits, make your requests from a session that is authenticated with a SchemaGen account.
## Endpoints that require authentication
The AI extraction endpoint requires an active session tied to a Pro or Agency plan account.
| Endpoint | Requirement |
| ----------------------------- | ---------------------------------- |
| `POST /api/generate-from-url` | Active session, Pro or Agency plan |
Calling this endpoint without a valid session returns a `403` response. Calling it as an authenticated user whose plan limit is exhausted also returns a `403` with error code `limit_reached`.
## How session-based authentication works
SchemaGen uses session-based authentication. You are considered authenticated when you are logged into the SchemaGen dashboard in the same browser or when your server-side request includes a valid session cookie issued by SchemaGen.
There is no separate API key to generate or rotate. If you need to make authenticated server-side API calls, your request must include the session cookie from an active SchemaGen login.
API key support for server-to-server integrations is not currently available. Authenticated server-side API calls require a session cookie from an active SchemaGen login.
## Rate limiting by auth state
| Caller type | Rate limit scope | Quota enforcement |
| ------------------ | ---------------- | ------------------ |
| Guest (no session) | Per IP address | No usage quota |
| Authenticated user | Per user account | Monthly plan quota |
When the rate limit is exceeded, all endpoints return a `429` response regardless of auth state:
```json theme={null}
{
"error": "Too many requests. Please wait a moment."
}
```
# GET /api/embed — Fetch Schemas as Renderable HTML
Source: https://docs.schemagen.io/api/embed
Retrieve published schemas as an HTML string of JSON-LD script tags, ready to drop into server-side templates, WordPress themes, or Shopify Liquid files.
The embed endpoint delivers published schemas as a ready-to-render HTML string instead of JSON. The response contains one or more `
```
If multiple schemas are published for the URL, they are concatenated with no separator:
```html theme={null}
```
## Response headers
| Header | Description |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `X-Schemagen-Duration` | Server-side processing time in milliseconds. |
| `X-Schemagen-ID` | A unique UUID identifying this request. |
| `Content-Type` | Always `text/html; charset=utf-8`. |
| `Cache-Control` | Responses are cached. Unlike `/api/inject`, embed responses may be served from cache to improve server rendering performance. |
## Code examples
```bash cURL theme={null}
curl -G "https://schemagen.io/api/embed" \
--data-urlencode "clientId=your-client-uuid" \
--data-urlencode "url=https://example.com/products/widget"
```
```javascript Node.js (fetch) theme={null}
const params = new URLSearchParams({
clientId: 'your-client-uuid',
url: 'https://example.com/products/widget',
});
const response = await fetch(`https://schemagen.io/api/embed?${params}`);
const html = await response.text();
// `html` is ready to insert into your server-rendered page
```
```php PHP theme={null}
$clientId,
'url' => $url,
]);
$schemas = file_get_contents($apiUrl);
// Output directly in your template
echo $schemas;
```
### WordPress usage
Call the embed API in your theme's `functions.php` and output the result in the `
` using the `wp_head` action:
```php theme={null}
add_action('wp_head', function () {
$clientId = 'your-client-uuid';
$url = get_permalink() ?: home_url($_SERVER['REQUEST_URI']);
$apiUrl = add_query_arg(
['clientId' => $clientId, 'url' => rawurlencode($url)],
'https://schemagen.io/api/embed'
);
$response = wp_remote_get($apiUrl);
if (!is_wp_error($response)) {
echo wp_remote_retrieve_body($response);
}
});
```
## Error responses
When the request is invalid or an error occurs, the embed endpoint returns an empty body with the appropriate HTTP status code. It does not return a JSON error body.
| Status | Cause |
| ------ | ------------------------------------------ |
| `400` | `clientId` or `url` is missing or invalid. |
| `500` | An unexpected server error occurred. |
All error responses still include the `X-Schemagen-ID` header so you can trace the request.
Because the embed endpoint returns an empty string when no schemas match the URL (rather than an error), you can safely output its response in every page template without a null check. Pages with no published schemas will simply have no extra output.
# POST /api/generate — Generate JSON-LD from a Schema Type
Source: https://docs.schemagen.io/api/generate
Generate valid JSON-LD by providing a Schema.org type name and field values. Supports guest and authenticated requests with different rate limit tiers.
The generate endpoint builds a valid JSON-LD object from a Schema.org type name and a set of field values you provide. You can call it without authentication as a guest, or as an authenticated user to apply generation against your account's usage quota and benefit from higher rate limits.
This endpoint is useful when you want to programmatically generate structured data — for example, as part of a content publishing pipeline or a custom schema tooling workflow.
## Endpoint
```
POST https://schemagen.io/api/generate
```
## Request body
The Schema.org type name to generate (e.g., `Article`, `Product`, `LocalBusiness`, `FAQPage`). The value must match a type supported by SchemaGen. If the type is unrecognized, the API returns `400` with a list of supported types.
An object containing the field values for the schema. The accepted fields depend on the `type` you specify. Required fields for the given type must be present or the API returns a validation error.
## Response
The generated JSON-LD object, ready to embed in a `
```
Both the SDK and the Embed API use the same client ID — if you are migrating from one delivery method to the other, no changes are needed to your schema configurations in the dashboard.
## How schema matching works
When the Embed API receives a request, it looks up all schemas you have published for the exact URL provided in the `url` parameter. Make sure the URL you pass matches the canonical URL of the page as you have configured it in the SchemaGen dashboard. Including or excluding trailing slashes, query strings, or `www` inconsistently will result in no schemas being returned.
Always pass the canonical URL of the page — the same URL you used when deploying the schema in the dashboard. For WordPress, this is `get_permalink()`. For Shopify, use the `canonical_url` variable as shown in the Liquid example.
# Track Schema Performance with Google Search Console
Source: https://docs.schemagen.io/integrations/google-search-console
Connect your GSC property to SchemaGen to see impressions, clicks, and CTR for every page where structured data is deployed—all in one dashboard.
The Google Search Console integration surfaces real performance data inside your SchemaGen dashboard. Once connected, you can see impressions, clicks, and click-through rate for every page where you have an active schema—so you can measure the direct SEO impact of your structured data deployments without leaving SchemaGen.
The Google Search Console integration requires a **Pro** ($29/mo) or **Agency** ($99/mo) plan. It is not available on the Free tier. You can upgrade at any time from **Dashboard → Account → Plans**.
## What the integration does
After you connect, SchemaGen reads data from your GSC property with read-only access. It then correlates that performance data with the schemas you have deployed, giving you a per-page view of:
* **Impressions** — how many times your pages appeared in Google Search results
* **Clicks** — how many users clicked through to your site
* **CTR** — the ratio of clicks to impressions, expressed as a percentage
This data updates on Google's standard processing delay, so expect a lag of one to two days before new data appears in the SchemaGen dashboard.
Google Search Console data typically lags 1–2 days behind real-time. If you just deployed a schema, check back the following day for updated performance figures.
## Requirements
Before connecting, confirm the following:
* You are on a **Pro** or **Agency** plan
* You have a Google Search Console property already verified for your domain
* You are signed in to Google with an account that has at least **Owner** or **Full User** access to that GSC property
## Connect your Google Search Console property
Log in to your SchemaGen dashboard and navigate to **Settings → Integrations**. You will see a list of available integrations, including Google Search Console.
Click **Connect Google Search Console**. SchemaGen initiates an OAuth 2.0 flow by redirecting you to Google's authorization screen.
Review the permissions Google displays. SchemaGen requests **read-only** access to your Search Console data — it cannot modify your GSC settings or property. Click **Allow** to continue.
If your Google account has access to multiple GSC properties, you will be prompted to select which property to connect. Choose the one that matches the domain where you have SchemaGen installed.
After authorizing, SchemaGen shows a list of GSC properties available under your Google account. Select the property that corresponds to your site and click **Confirm**.
You will be returned to the Integrations page with a **Connected** status shown next to Google Search Console. Your performance data will begin populating within 24–48 hours, depending on Google's data pipeline.
## What you see after connecting
Once the integration is active, a **Performance** panel appears on individual schema pages and in the main dashboard overview. The data is scoped to URLs where you have at least one published schema.
Total search appearances for each page with an active schema, pulled directly from GSC.
The number of times users clicked your result in Google Search.
Your CTR shown as a percentage, with trend indicators comparing the period before and after schema deployment.
## Interpreting performance data
A rise in CTR after deploying a schema is a strong signal that your structured data is influencing how Google presents your result. Rich results — such as star ratings, FAQ dropdowns, or product prices — increase visual prominence in the SERP, which often drives higher click-through rates even without a change in ranking position.
When analyzing your data, compare the 28-day window before you published a schema against the 28-day window after. A consistent CTR improvement of 1–3 percentage points on informational content, or higher on product and review pages, indicates your schema deployment is performing well.
Impressions can increase independently of CTR if Google begins showing your pages for new queries after indexing your structured data. Both signals together give you the clearest picture of impact.
Agency plan subscribers also get access to the **GSC Performance Loop**, which automatically surfaces pages with published schemas that show declining CTR. This helps you prioritize which schemas to update or expand before performance erodes further.
## Disconnect the integration
To remove the connection, go to **Settings → Integrations → Google Search Console** and click **Disconnect**. This revokes SchemaGen's access to your GSC data and removes the performance panels from your dashboard. Your schemas remain active and unaffected — only the performance data overlay is removed.
You can reconnect at any time by repeating the steps above.
# What is SchemaGen? Schema Delivery Network for SEO
Source: https://docs.schemagen.io/introduction
SchemaGen is an SDN that lets SEO teams deploy and manage JSON-LD structured data across any website without touching code or the CMS.
SchemaGen is a Schema Delivery Network (SDN) built for SEO teams who need full control over structured data — without waiting for developers or CMS access. Install a single script tag once, and every schema you create, update, or pause lives entirely in the SchemaGen dashboard. No code changes. No deployment pipeline. No tickets.
## The problem SchemaGen solves
Structured data is one of the highest-leverage SEO tactics available, but most teams can't move fast enough to capture it. Adding or updating JSON-LD typically means filing a developer request, waiting for a sprint, and hoping the change ships before the next algorithm update. SchemaGen removes that bottleneck entirely.
With SchemaGen, you own the schema layer of your website the same way a CDN owns asset delivery. The SDK lives on your site; everything else — building, editing, publishing, pausing — happens from your dashboard in real time.
## How it works
SchemaGen follows a three-step workflow from creation to live delivery.
Create JSON-LD in the Schema Builder using the full Schema.org vocabulary (800+ types, 1,200+ properties), or paste any URL and let AI extraction generate production-ready markup automatically.
Click **Publish** to push your schema to the SDN instantly. The SchemaGen SDK on your site fetches and injects the correct schemas for each page — no re-deployment required.
Connect Google Search Console to track impressions, clicks, and CTR tied directly to your published schemas. See what's working and iterate without leaving the dashboard.
## Key features
One script tag on your site. All schema updates — create, edit, pause, republish — happen from the dashboard with zero code changes.
Paste a URL and get production-ready JSON-LD in seconds. AI reads the page and generates accurate, valid markup automatically.
Access all 800+ Schema.org types and 1,200+ properties. Not limited to Google-supported types — build any valid structured data you need.
Manage the full schema lifecycle from the dashboard. Draft schemas for review, publish when ready, and pause instantly without touching your site.
Connect GSC to measure the real-world SEO impact of your schemas with impressions, clicks, and CTR data tied to individual schema deployments.
Generate schemas for up to 100 URLs in a single run. Ideal for large sites, content migrations, and agency clients with high page volumes.
## Plans at a glance
SchemaGen offers three plans designed to grow with your team.
| Feature | Free | Pro | Agency |
| ------------------- | --------------------- | --------------- | --------------- |
| Price | \$0 | \$29/mo | \$99/mo |
| Saved schemas | 5 | Unlimited | Unlimited |
| Schema types | Google-supported only | Full Schema.org | Full Schema.org |
| AI extraction | — | Yes | Yes |
| Bulk generation | — | 10 URLs/run | 100 URLs/run |
| AI site audit + PDF | — | — | Yes |
| Client portfolios | — | — | Yes |
| Team seats | 1 | 1 | 5 |
| Priority support | — | — | Yes |
The Free plan includes 5 saved schemas and covers Google-supported schema types. Upgrade to Pro or Agency to unlock AI features, the full Schema.org vocabulary, and higher limits.
## Get started
Create your account and deploy your first schema in under five minutes.
Add the SchemaGen SDK to your site — HTML, WordPress, Shopify, or Next.js.
# Quick start: Deploy your first schema in 5 minutes
Source: https://docs.schemagen.io/quickstart
Create a SchemaGen account, build your first JSON-LD schema, publish it to the SDN, and install the SDK to go live on your website.
This guide walks you through everything you need to get from a blank slate to a live schema on your website. By the end, your site will automatically receive and inject schemas you publish from the SchemaGen dashboard — no further code changes required.
The Free plan includes 5 saved schemas. If you need unlimited schemas, AI extraction, or bulk generation, upgrade to Pro ($29/mo) or Agency ($99/mo) from your account settings.
Go to [schemagen.io](https://schemagen.io) and sign up for a free account. No credit card is required for the Free plan.
After signing up, you land on the SchemaGen dashboard. This is where you'll manage all your schemas, domains, and settings.
In the dashboard, navigate to **Settings → Domains** and add the domain you want to deploy schemas to (for example, `example.com`).
SchemaGen uses your registered domain to scope schema delivery so that schemas only inject on matching pages. You can add multiple domains under the Pro and Agency plans.
Click **New Schema** from the dashboard home or the **Schemas** section in the sidebar.
You'll be prompted to choose how you want to build your schema:
* **Schema Builder** — use the guided form interface to manually select a Schema.org type and fill in properties. Available on all plans.
* **AI extraction** — paste a URL and let SchemaGen generate production-ready JSON-LD automatically. Available on Pro and Agency plans.
If you're on the Free plan, start with a high-value page type like `Article`, `Product`, or `LocalBusiness` — these are Google-supported types that qualify for rich results.
Enter a name for your schema (this is for your reference only) and select the **Target URL** — the specific page this schema applies to.
Fill in the schema properties using the Schema Builder form. Required fields are marked; add as many optional fields as you can to improve data completeness.
If you used AI extraction, review the generated JSON-LD and make any corrections. You can switch to the **Code** tab at any time to edit the raw JSON-LD directly.
When you're done, click **Save as draft**. This saves your schema without publishing it to the SDN, so you can validate and review before it goes live.
From the schema editor, click **Validate**. SchemaGen checks your JSON-LD against Schema.org specifications and Google Rich Result guidelines and reports any errors or warnings.
Fix any errors before publishing. Warnings are non-blocking but worth reviewing — they often indicate missing fields that can improve rich result eligibility.
Publishing a schema with validation errors will not prevent delivery, but invalid markup may not be processed correctly by search engines.
Once your schema passes validation, click **Publish**. Your schema is immediately pushed to the SchemaGen Schema Delivery Network.
From this point, any page on your site that matches the target URL will receive this schema — as soon as the SDK is installed (see the next step).
You can return to this schema at any time to edit, pause, or unpublish it. Changes propagate instantly to the SDN with no code changes required.
For your schemas to be injected into your pages, you need to install the SchemaGen SDK on your website. This is a one-time setup.
See the [SDK installation guide](/sdk-installation) for step-by-step instructions for HTML/static sites, WordPress, Shopify, and Next.js.
Your **Client ID** is available in **Settings → Client** in the dashboard. You'll need it when adding the SDK snippet to your site.
After installing the SDK, open the target page in your browser and inspect the page source (right-click → **View page source**) or open browser DevTools.
Look for a `
```
Place the tag as early in the `` as possible to give the SDK time to fetch schemas before the page finishes rendering.
The best way to add the SDK to WordPress is via your theme's `functions.php` file or a site-wide plugin like **Code Snippets**.
Add the following to your `functions.php` file (or a custom plugin):
```php functions.php theme={null}
function schemagen_sdk() {
echo '';
}
add_action( 'wp_head', 'schemagen_sdk' );
```
Replace `YOUR_CLIENT_ID` with the Client ID from your dashboard.
If you're using a page builder like Elementor or a theme with a **Custom Code** or **Header Scripts** field, you can paste the raw `
```
Click **Save**. The SDK will now load on every page of your storefront.
Shopify's online storefront renders different URLs for product pages, collections, blogs, and the homepage. SchemaGen matches schemas by the exact URL the SDK detects, so make sure your target URLs in the dashboard match your Shopify URL structure (for example, `https://your-store.myshopify.com/products/example-product`).
In Next.js, use the built-in `next/script` component to load the SDK. Add it to your root layout so it appears on every page.
Replace `YOUR_CLIENT_ID` with the Client ID from your dashboard.
```jsx app/layout.jsx theme={null}
import Script from 'next/script'
export default function RootLayout({ children }) {
return (
{children}
)
}
```
The `afterInteractive` strategy loads the SDK after the page becomes interactive, keeping it out of the critical rendering path while ensuring schemas are injected before users interact with the content.
If you're using the Pages Router instead of the App Router, add the `
```
This is the only change you ever need to make to your site. All schema management happens from the dashboard after this point.
## Edge-optimized delivery
The SDN runs on edge infrastructure, meaning schema requests are resolved at network locations geographically close to your visitors. In practice, this means:
* **Sub-100ms response times** for schema fetches worldwide
* **No caching of schema data** (`Cache-Control: no-store`)—so published changes and pauses take effect instantly on the next page load
* **Per-request tracing** via `X-Schemagen-ID` and `X-Schemagen-Duration` response headers, useful if you're debugging delivery with your browser's developer tools
## Schema states
Every schema in your dashboard has one of three statuses. The status controls whether the SDN delivers it to your site.
The schema is saved in your dashboard but not yet live. The SDN will never deliver a draft schema, regardless of URL targeting. Use this state to build and review before going live.
The schema is live on the SDN. Whenever the SDK detects a page URL that matches this schema's target, the JSON-LD is injected into the DOM. Changes to a published schema go live instantly.
The schema is temporarily removed from delivery without being deleted. The SDN stops serving it immediately, but all your data and settings are preserved. Unpause to resume delivery at any time.
## The old way vs. the SDN way
Managing structured data without SchemaGen means your schema lives inside your codebase—tied to templates, CMS themes, or developer-managed JSON-LD files. Every change requires a ticket, a deployment, and a wait.
| Situation | Without the SDN | With the SDN |
| ------------------------------- | -------------------------------------------- | ------------------------------------------------- |
| Add a new schema to a page | File a developer ticket, wait for deployment | Publish from the dashboard in seconds |
| Fix a schema error | Find the template file, update it, redeploy | Edit the schema, save—live instantly |
| Remove a schema temporarily | Requires code change and deployment | Click **Pause**—removed from delivery immediately |
| Update schema across many pages | Repetitive, error-prone manual work | Update once, targeting applies everywhere |
The SDN eliminates the dependency on development cycles for anything schema-related. SEO teams get direct control.
## What gets delivered
The SDN matches schemas to pages using the `pageUrl` field you set when creating or editing a schema. When the SDK requests schemas for a URL, the SDN returns only the published schemas whose target URL matches the current page. The SDK then injects each one as a separate `