Documentation

Install Shipit SEO

Add the native plugin to an existing EmDash site and check the first page.

On this page

Install the package

Check Compatibility in the documentation overview, then work on a copy of your existing site. Use the same package manager the site already uses.

The command below is for npm. For a pnpm project, run pnpm add --save-exact @shipitseo/[email protected] instead. Run only the command for your package manager.

npm install --save-exact @shipitseo/[email protected]

Before you begin

  • Compare your EmDash, admin, Node and database versions with Compatibility on the documentation overview.
  • Keep the current host and database setup. Installing Shipit SEO does not require an EmDash upgrade.
  • Take a consistent database and uploads backup with the current configuration and lockfile, and confirm that you can restore it on a copy.
  • Check whether your theme or another SEO plugin already supplies titles, canonicals, social tags or sitemap files. Decide which should remain active.
  • Install a package you trust: this native plugin runs in the same process as the host application.

Add Shipit SEO to Astro

Open the existing Astro configuration and add the shipitSeo import shown below. Replace the existing emdash(options) call with shipitSeo(emdash, options). No separate admin package is needed.

Only the import and integration wrapper change in your existing file. The comments in this example stand for the settings and EmDash options already used by your site; keep those values in place.

  • Keep the default emdash import from emdash/astro and register EmDash once.
  • If you previously registered seoPlugin(), remove only that duplicate registration when using the wrapper. Keep the stored shipit-seo data.
  • Keep the real site URL and existing adapter, database, storage, collections, locales, other plugins and integrations.
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import { shipitSeo } from "@shipitseo/emdash-plugin-seo/astro";

export default defineConfig({
  // Keep your existing site, output, adapter and other Astro settings.
  integrations: [
    // Keep your other integrations.
    shipitSeo(emdash, {
      // Keep the COMPLETE options from your existing emdash({ ... }) call.
      // This includes database, storage, collections, locales and other plugins.
    }),
  ],
});

Connect the public page layout

Your public layouts must render EmDashHead from emdash/ui with the correct page or content identity and locale. Keep the existing body hooks so the plugin can add its output.

The theme still renders the HTML title. Shipit title templates provide suggestions and social fallbacks, so confirm that the theme uses the saved SEO title where intended.

  • For taxonomy archive rules, bind the existing archive with taxonomyArchivePage(context, term.name) from @shipitseo/emdash-plugin-seo/taxonomy-archives.
  • Use the archive page context without a content entry and the actual taxonomy name. Keep its route, content and canonical URL.
  • Check an archive separately from its posts. An archive rule does not change the indexing choice of entries assigned to that taxonomy.

Check the installation

  1. Run the site checks and production build, restart the site copy, and confirm Shipit SEO appears in the admin.
  2. Open a saved page or post. Its Advanced SEO panel should show the checklist and preview even with automatic analysis off.
  3. Choose Edit snippet, save a test SEO title or description with Save SEO fields, then reload and confirm the saved values.
  4. Open the published test page and check its title, description, canonical, social tags and JSON-LD. Check sitemap.xml and robots.txt too.
  5. Keep automatic analysis and IndexNow off during this first check. Installation should not start a bulk scan or send URLs.