Skip to main content

Payload SaaS Starter Review 2026: CMS-First Boilerplate

·StarterPick Team
payload-cmssaas-boilerplateheadless-cmsnext-jsadmin-panel2026

TL;DR

Payload CMS 3.0 + the official SaaS Starter is the only boilerplate that gives you a full admin panel for free — because the CMS IS the admin panel. Payload 3.0 runs directly inside Next.js with no separate backend service. The SaaS Starter wraps it with Stripe, Auth.js, and a landing page. The result: a CMS-first boilerplate where content editors, admins, and developers share one interface. Ideal for content-heavy SaaS products (course platforms, CMS tools, content marketplaces). Overkill if you don't need flexible content modeling.

Key Takeaways

  • Type: Free, open source (MIT) — Payload CMS is free, starter template is free
  • Stack: Next.js 15, Payload CMS 3.0, MongoDB or Postgres, Auth.js, Stripe, Tailwind
  • Core value: CMS = admin panel — no separate admin UI to build
  • Best for: content-heavy SaaS, platforms needing flexible data modeling, apps where non-devs manage content
  • Not ideal for: pure app-logic SaaS where you don't need content management
  • Price: Free (MIT)

What Makes Payload Different

In Payload 3.0, the CMS runs as part of your Next.js app:

Traditional setup:
  Next.js app → REST/GraphQL → separate admin panel

Payload setup:
  Next.js app (includes Payload CMS + admin UI)
  → /admin = Payload admin panel
  → /api/payload = Payload REST API
  → All in one Next.js deployment

No separate services. No separate deploys. The admin panel comes with:

  • User management with roles
  • Media library
  • Content collections (your custom data models)
  • Access control rules
  • Custom fields (rich text, blocks, relationships, arrays)

Tech Stack

Framework:    Next.js 15 (App Router)
CMS:          Payload CMS 3.0 (runs inside Next.js)
Database:     MongoDB or PostgreSQL (with Drizzle adapter)
Auth:         Payload's built-in auth OR Auth.js
Payment:      Stripe (subscriptions in SaaS Starter)
UI:           Tailwind CSS
Email:        Resend or Nodemailer
Deployment:   Vercel, Railway, Render

Payload Collections (Data Modeling)

Payload's killer feature is flexible data modeling via Collections:

// collections/Users.ts
import type { CollectionConfig } from 'payload/types';

export const Users: CollectionConfig = {
  slug: 'users',
  auth: true,  // Payload handles auth for this collection
  admin: {
    useAsTitle: 'email',
  },
  fields: [
    {
      name: 'name',
      type: 'text',
      required: true,
    },
    {
      name: 'role',
      type: 'select',
      options: ['admin', 'user', 'editor'],
      defaultValue: 'user',
    },
    {
      name: 'subscription',
      type: 'group',
      fields: [
        { name: 'plan', type: 'text' },
        { name: 'stripeCustomerId', type: 'text' },
        { name: 'status', type: 'text' },
      ],
    },
  ],
};
// collections/Courses.ts — example content collection
export const Courses: CollectionConfig = {
  slug: 'courses',
  access: {
    read: ({ req }) => {
      // Free courses: public. Premium: require subscription
      if (req.user?.subscription?.plan === 'pro') return true;
      return { free: { equals: true } };
    },
  },
  fields: [
    { name: 'title', type: 'text', required: true },
    { name: 'description', type: 'richText' },
    { name: 'free', type: 'checkbox', defaultValue: false },
    {
      name: 'lessons',
      type: 'array',
      fields: [
        { name: 'title', type: 'text' },
        { name: 'videoUrl', type: 'text' },
        { name: 'duration', type: 'number' },
      ],
    },
  ],
};

This automatically creates:

  • Admin UI for managing courses
  • REST API at /api/courses
  • Full access control enforcement

Admin Panel (It's Just Payload)

The /admin route provides a fully-featured admin panel out of the box:

  • User management (list, create, edit, delete)
  • Content management for all collections
  • Media uploads (S3, local, Cloudinary)
  • Role-based access control
  • Audit log (built-in)

No separate admin dashboard to build or maintain.


SaaS Starter Additions

The official Payload SaaS Starter adds:

// Stripe integration:
// - Checkout session creation
// - Customer portal
// - Webhook handling (updates user.subscription in Payload DB)

// Landing page:
// - Hero section
// - Features section
// - Pricing page (reads plans from config)
// - CTA sections

// Auth flow:
// - Email/password via Payload auth
// - Email verification
// - Password reset flow

What's Included vs Missing

FeatureStatus
Admin panel✅ (Payload CMS)
Content management✅ Core
Role-based access
Stripe subscriptions
Landing page
Authentication
Media library
REST + GraphQL API✅ Auto-generated
tRPC (REST/GraphQL instead)
Multi-tenancyPartial (custom)
Teams/Organizations

Payload vs Other Boilerplates

Payload StarterShipFastT3 Stack
Admin panel✅ Free (Payload)
Content modeling
CMS features
Landing page
PriceFree$299Free
ComplexityHighMediumHigh
tRPC

Who Should Use Payload Starter

Use Payload Starter if:
  → Building a content-heavy SaaS (courses, newsletters, CMS tools)
  → Need an admin panel without building one
  → Want flexible data modeling (nested fields, relationships, blocks)
  → Non-developers need to manage content
  → Self-hosting on a VPS/Railway/Render

Skip Payload Starter if:
  → Building a pure application (todo app, analytics tool, etc.)
  → Need tRPC or strictly typed API layer
  → Want the simplest possible setup
  → Need React Native companion app

Verdict: Payload Starter is excellent for content-heavy SaaS where you'd otherwise spend weeks building an admin panel. The free admin UI alone justifies choosing it for the right use case. Avoid it for pure-app SaaS where the CMS overhead isn't justified.


Compare Payload Starter with other SaaS boilerplates at StarterPick.

Comments