SEO Setup
Configure site metadata, page SEO, sitemap, robots, hreflang, and structured data.
ShipNext includes the usual SEO foundation: root metadata, page-level metadata, canonical URLs, Open Graph, Twitter Cards, sitemap, robots, hreflang, and JSON-LD for key pages. Your launch work is to replace configuration and content with your real product information.
Configuration locations
| Capability | File | Current implementation |
|---|---|---|
| Site metadata | config/website.ts | metadata.title, description, url, logo, favicon |
| Social images | config/seo.ts or project SEO config | Open Graph and Twitter image paths |
| Root fallback | app/layout.tsx | Reads websiteConfig.metadata |
| Docs SEO | app/docs/[[...slug]]/page.tsx | Docs frontmatter |
| Sitemap | app/sitemap.ts where present | Public pages, blog, docs, legal pages |
| Robots | app/robots.ts where present | Blocks API and private pages |
Start by updating:
const metadataConfig = {
title: "Your Product",
description: "A precise one-sentence value proposition.",
url: "https://your-domain.com",
logo: "/logo.svg",
favicon: "/favicon.ico",
};metadata.url must be the production HTTPS domain and should match NEXT_PUBLIC_APP_URL and BETTER_AUTH_URL.
Page-level SEO
Public pages should use centralized helpers or metadata definitions instead of hardcoded production copy. Typical sources:
| Page | SEO source |
|---|---|
| Home | SEO config and landing copy |
| Pricing | SEO config and pricing copy |
| Blog list | SEO config |
| Blog posts | MDX frontmatter plus article metadata |
| Docs pages | Docs MDX frontmatter |
| Legal pages | Legal MDX frontmatter |
| Auth / Dashboard | noindex metadata |
Sitemap and robots
The sitemap should include public pages, published blog posts, docs pages, and enabled legal pages. Private paths, auth flows, API routes, Dashboard, and admin pages should not be indexed.
Robots should generally:
- Allow public marketing pages.
- Disallow
/api/. - Disallow sign-in, sign-up, reset password, Dashboard, and admin routes.
- Point to
${websiteConfig.metadata.url}/sitemap.xml.
Content frontmatter
Blog posts:
---
title: Product Launch Notes
description: This update includes subscriptions and multilingual docs.
author: Your Team
date: "2026-06-01"
published: true
image: /og.png
tags: [release, billing]
---Docs:
---
title: SEO Setup
description: Configure search and social sharing metadata.
icon: Search
---Legal pages:
---
title: Privacy Policy
description: How your product collects, uses, and protects personal information.
lastUpdated: "2026-06-01"
---Open Graph images
Use a 1200x630 image for public/og.png or your chosen path. Check it with social preview tools after deployment. If you also use Next.js convention files such as opengraph-image.png, confirm page metadata still references the intended image.
Search Console
After deployment:
- Open
https://your-domain.com/robots.txtand/sitemap.xml. - Add the site to Google Search Console and Bing Webmaster Tools.
- Verify ownership.
- Submit the sitemap.
- Monitor index coverage, mobile usability, structured data, and Core Web Vitals.
Checklist
-
websiteConfig.metadata.urlis the production HTTPS domain. - Public pages have translated titles and descriptions.
- Open Graph image exists and has a social-friendly size.
-
/sitemap.xmlincludes public pages, blog, docs, and legal pages. -
/robots.txtblocks API and private pages. - Private pages are noindex.
- Docs do not generate locale-prefixed duplicate URLs.