payload-plugin-scheduling
SkillProductivityUse this skill for anything involving the payload-plugin-scheduling Payload CMS plugin. Triggers include: installing payload-plugin-scheduling, configuring its options, asking what it does, troubleshooting errors, upgrading versions, setting up cron jobs for it, and answering questions about its API. If the user mentions "payload-plugin-scheduling", "schedule publication", "scheduled publish", "scheduled publishing", or "schedule plugin" in any Payload CMS context, always use this skill.
Use payload-plugin-scheduling in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add payload-plugin-scheduling and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the payload-plugin-scheduling skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by focusreactive/payload-plugins in packages/payload-plugin-scheduling/.claude/skills/payload-plugin-scheduling/SKILL.md and read by Ahel’s review.
Adds scheduled publication to Payload CMS v3. Set a future publish date on any draft document and it goes live automatically when a cron hits the run endpoint — no manual publishing required.
Source: github.com/focusreactive/payload-plugins
npm: @focus-reactive/payload-plugin-scheduling
Payload versions: 3.x
Quick Start
1. Installation
pnpm add @focus-reactive/payload-plugin-scheduling
# or
npm install @focus-reactive/payload-plugin-scheduling
Peer dependencies: payload ^3.0.0
2. Register the plugin
// payload.config.ts
import { buildConfig } from "payload";
import { schedulePublicationPlugin } from "@focus-reactive/payload-plugin-scheduling";
export default buildConfig({
plugins: [
schedulePublicationPlugin({
collections: ["pages", "posts"],
globals: ["site-settings"], // optional
secret: process.env.CRON_SECRET!,
}),
],
});
3. Set up a cron
The endpoint GET /api/scheduled-publish/run must be called periodically (at least as often as your finest scheduling granularity).
Vercel (vercel.json)
{
"crons": [
{
"path": "/api/scheduled-publish/run",
"schedule": "* * * * *"
}
]
}
Vercel automatically sends CRON_SECRET as Authorization: Bearer $CRON_SECRET. Set it in Vercel project settings and pass it to the plugin's secret option.
External cron / curl
curl -X GET https://your-cms.com/api/scheduled-publish/run \
-H "Authorization: Bearer YOUR_SECRET"
node-cron
import cron from "node-cron";
cron.schedule("* * * * *", async () => {
await fetch("http://localhost:3000/api/scheduled-publish/run", {
headers: { Authorization: `Bearer ${process.env.CRON_SECRET}` },
});
});
Configuration Reference
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
collections | string[] | No | [] | Collection slugs to enable scheduled publishing on |
globals | string[] | No | [] | Global slugs to enable scheduled publishing on |
queue | string | No | "scheduled-publish" | Queue name for isolating scheduled publish jobs |
secret | string | Yes | — | Bearer token required to call the run endpoint |
What the Plugin Adds
versions.drafts.schedulePublish: true— injected into every configured collection and global, enabling the "Schedule Publish" date picker in the admin sidebar.- Job queue routing — all
schedulePublishjobs are routed to the"scheduled-publish"queue via abeforeChangehook on the jobs collection. GET /api/scheduled-publish/runendpoint — processes all due jobs in the queue. RequiresAuthorization: Bearer <secret>.
Pitfalls
secretis required — the plugin will not compile without it. Store it in an environment variable, never in client-side code.- No CSS, no import map step — unlike some other plugins, this one adds no UI components that need stylesheet imports or import map regeneration.
- No migration needed — the plugin adds no new collections or tables; it only modifies collection/global config and registers a job queue + endpoint.
collections/globalsslugs must match exactly — the plugin logs a warning for unknown slugs at startup.- Cron frequency = scheduling precision — if you call the endpoint every 5 minutes, documents can only go live on 5-minute boundaries.
queueoption — change only if there is a naming conflict with other Payload job queues in your project.
Further Reading
- Working examples →
./examples.md
Signals
- GitHub stars
- 23
- Last commit
- Oct 2026
Ahel review
K1binfo
installs-packages
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
payload-plugin-scheduling- Source
- github.com/focusreactive/payload-plugins
github.com/focusreactive/payload-plugins