Payload

Get your Payload pages found in Google and AI answers

Growth Radar reads your published Payload documents, suggests better search titles and descriptions, and saves the ones you approve back to your documents. Setting it up takes one package, one line in your config and one environment variable.

It uses the SEO fields you already have

By default it reads and writes meta.title and meta.description, the fields Payload's official SEO plugin adds. If you keep yours somewhere else, you can point it at those fields instead. Changes go through Payload's normal update, so your hooks and version history still run. If a page has an unpublished draft, the change waits and tells you why, because saving it would publish the draft along with it.

Nothing changes until you approve it

Each suggestion appears in your Growth Radar account next to what the page says now, along with the reason for it. Undo puts the old value back, unless someone has edited the field since, in which case their version stays.

It's fine on serverless hosting

The plugin doesn't need a background process. It adds one signed endpoint to your Payload API, and Growth Radar calls it when there's something to do, so it works the same on Vercel as on your own server.

What it doesn't cover yet

It handles titles and descriptions in your default language. Canonical tags, redirects and structured data stay in your code, because in a headless setup that's where they live. Your frontend also has to print the SEO fields in the page head, which the example project shows.

Connecting it

  1. Install the package.
  2. Add the plugin to payload.config.ts and tell it the public path of each collection.
  3. Create a token in your Growth Radar account, set it as GROWTH_RADAR_TOKEN and deploy.
  4. Choose Check the connection in your account. Your pages should appear within a minute.
Install
npm i https://growthradar.app/payload/growth-radar-payload.tgz
payload.config.ts
import { seoPlugin } from "@payloadcms/plugin-seo";
import { growthRadar } from "growth-radar-payload";

plugins: [
  seoPlugin({ collections: ["pages", "posts"] }),
  growthRadar({
    collections: {
      pages: (doc) => (doc.slug === "home" ? "/" : `/${doc.slug}`),
      posts: "/blog/:slug",
    },
  }),
],
Your page, so the saved fields reach the head
export async function generateMetadata({ params }) {
  const doc = await findPost((await params).slug);
  return { title: doc.meta?.title || doc.title, description: doc.meta?.description };
}