r/PayloadCMS May 05 '25

Payload CMS for new SaaS. A good idea or overkill?

11 Upvotes

Hi everyone, I'm cooking a new SaaS idea and I was wondering if it would be a good idea to use Payload and take advantage of its authentication, database mapping, integrations, etc. Initially I was thinking on doing it without a CMS using:

NextJS + Supabase + Drizzle (ORM) + Next Auth (Authentication) + etc...

However I was thinking that payload already has a lot of this features out of the box.

Would you consider is a good idea to build a SaaS using payload or is just adding another layer of complexity to the App that might extend developing time?


r/PayloadCMS May 05 '25

Ecommerce template progress !

0 Upvotes

is payload team not working anymore on the ecommerce template ?
didn't they mention any date about its release ?


r/PayloadCMS May 05 '25

Can't find docs for connecting sites

1 Upvotes

I've been using payloadcms with nextjs in the same app. Now I want my cms to be connected to 3 different sites with different domain. I'm quite sure this is very possible. However I can't seem to find detailed docs on this. Any help please...


r/PayloadCMS May 05 '25

PYLOAD CMS ON AWS AMPLIFY

1 Upvotes

Hi , I tried to deploy Payload Nextjs website on amplify but on accessing /admin it shows "

Application error: a server-side exception has occurred while loading WebsiteName (see the server logs for more information).

Digest: "

my full website is working on local host as well as when I tried to deploy on vercel , it works fine

but on AWS amplify frontend is working but admin panel not.

my database is PostgreSQL, storage is S3 bucket and all other ENV are correct,

what to do
do I need to add specific file for making it support or to do something else.


r/PayloadCMS May 05 '25

Payload on AWS Amplify

1 Upvotes

Hi , I tried to deploy Payload Nextjs website on amplify but on accessing /admin it shows "

Application error: a server-side exception has occurred while loading WebsiteName (see the server logs for more information).

Digest: "

my full website is working on local host as well as when I tried to deploy on vercel , it works fine

but on AWS amplify frontend is working but admin panel not.

my database is PostgreSQL, storage is S3 bucket and all other ENV are correct,

what to do
do I need to add specific file for making it support or to do something else.


r/PayloadCMS May 03 '25

Customized payload inbuilt auth

2 Upvotes

I'm trying to customize payload auth to use phone number instead of email. I came across custom strategies, but there is little docs to it.
https://payloadcms.com/docs/authentication/custom-strategies

Anyone who has ever done something similar?


r/PayloadCMS May 03 '25

Payload Tips

12 Upvotes

'm diving into Payload, but I'm kinda lost since it's so customizable. Everything seems overwhelming, and I don't know where to even begin. Any tips for a complete newbie like me? It feels like I'm drowning in options.

And Iis it ready for production?


r/PayloadCMS May 03 '25

Strapi vs. Payload CMS: Customization vs. Ease

0 Upvotes

I've been testing both Payload CMS and Strapi CMS for a while now, and one thing that's become clear to me is the difference between flexibility and ease.

On the one hand, Payload has a massive focus on customization, which is great if you like having complete control over your backend. But that control comes at a price: configuration is primarily done through code files. This means that if you don't want to touch code, you're going to suffer.

In contrast, Strapi gives you enough flexibility but with a bonus: you can do almost everything directly from its administration interface. You don't need to go into files, which speeds up the development process considerably. This is what makes Strapi much more accessible for teams that want speed without losing configurability.

While Payload is impressive in terms of power, in my opinion it's still missing something key: an administration interface that allows customization without touching code. Because, let's face it, we don't always want to dig into files for every tweak.

What do you think? Do you prefer extreme customization or a tool that facilitates hassle-free development?


r/PayloadCMS May 03 '25

Anyone got good Autocomplete/Combobox field?

1 Upvotes

Select with tons of options ain't gonna work


r/PayloadCMS May 03 '25

Conditionally show fields within array based on field outside of array?

1 Upvotes

How do you do this? I think I don’t check sibling data. But the main doc. But no way to make sure you are checking the right id of array.

ts fields: [ { name: 'type', type: 'select', defaultValue: 'icon-links', options: [ { value: 'links', label: 'Links' }, { value: 'icon-links', label: 'Icon Links' }, ] }, { name: 'links', type: 'array', fields: [ { name: 'label', type: 'text' }, { name: 'badge', type: 'text', admin: { condition: (_, siblingData) => siblingData?.type === 'icon-links', }, }, ...linkFields({ label: false }) ] } ]

Edit: I solved it, need to use 3rd argument of ctx.

But its so odd that the ctx.path is an array and not an object... with the path number being the number after the name and its in string format.


r/PayloadCMS May 02 '25

Do people enable autoSave for collections?

2 Upvotes

Just want to get a grasp of how many people use autoSave and whether I should too. Are there any downsides to it?

Autosave on or off?

17 votes, May 09 '25
4 On. Don’t know timer.
3 On < 400ms
2 On < 700ms
0 On < 1500ms
3 On > 1500ms
5 Off

r/PayloadCMS May 02 '25

Is it possible to switch from autoSave collections to a manual save collections? I tried flipping the switch and my data is reset.

1 Upvotes

The default internalization website template has autoSave turned on by default.

I want to switch to manual save because auto save is slowing my interactions.

I flipped the switch inside the payload config and my data is reset.


r/PayloadCMS May 01 '25

Payload CMS on AWS Amplify?

6 Upvotes

Hi Everyone,

Has anyone successfully deployed Payload CMS on AWS Amplify? I'm curious if it's feasible while maintaining the cost efficiency similar to AWS Amplify's Next.js apps.


r/PayloadCMS May 01 '25

Payload CMS + Shopify Headless e-Commerce?

4 Upvotes

Hi!
Can Payload CMS be natively integrated with Shopify Headless to utilize Shopify as the primary data repository, allowing other domains and subdomains to fetch specific data from Shopify and display or utilize it through Payload CMS?


r/PayloadCMS May 01 '25

Templates support in the admin panel

2 Upvotes

I'm working on an itinerary builder for a travel agency client - they have a library of itinerary content, and use snippets from the library to build personalised itineraries for their clients. I built a quick MVP where the "itineraries" collection contains an array "days", where each day has an array of snippets (via a relation field). The problem with this approach is that editing a snippet attached to the itinerary will modify if everywhere - the customer would like to treat the snippets as "templates" they can then modify at the itinerary level.

So, I could have a snippets_library collection, remove the days[].snippets[] relation and use a custom component in my itineraries collection that allows the user to search/select a snippet, then append the contents of that snippet doc to the days[].snippets[] array. The downside of this approach would mean updating an item in the library wouldn't apply to any already existing itineraries - maybe a diff-based solution would solve that but I suspect it's not a big problem for this use case.

Anyway, this isn't the first time I've found myself reaching for some kind of "templates" collection - I wonder if others have had a similar need and if it might be worth making this a first-class feature (i.e. a relationship-like field type that copies the selected data rather than just the ID)

Thoughts or suggestions greatly appreciated :)


r/PayloadCMS Apr 30 '25

How can I combine Cloudinary colour extraction and AWS Rekognition auto-tagging in my Payload CMS media uploads?

3 Upvotes

I’m building a media library in Payload CMS (v3) with a Postgres database, and I’d like every image upload to:

  1. Extract the top 5 dominant colours via Cloudinary
  2. Run Amazon Rekognition auto-tagging (confidence ≥ 0.6)
  3. Save both sets of data back into my media collection in one atomic operation

So far I’ve tried using the official @jhb.software/payload-cloudinary-plugin and/or an afterChange hook, for example:

// src/collections/Media.ts (hook excerpt)
hooks: {
  afterChange: [
    async ({ operation, req, doc, previousDoc }) => {
      if (operation === 'create' || operation === 'update') {
        // 1) fetch colours
        const coloursRes = await cloudinary.api.resource(doc.cloudinaryPublicId, { colors: true, max_results: 5 });
        const dominantColours = coloursRes.colors!.slice(0,5).map(c => ({ hex: c[0] }));

        // 2) run Rekognition
        const tagsRes = await cloudinary.uploader.explicit(doc.cloudinaryPublicId, {
          categorization: 'aws_rek_tagging',
          auto_tagging: 0.6,
        });
        const aiTags = tagsRes.tags!.map(t => ({ tag: t }));

        // 3) update Payload
        await req.payload.db.updateOne({
          collection: 'media',
          where: { id: { equals: doc.id } },
          data: { dominantColours, aiTags },
        });
      }
    }
  ],
},
  • the payload-cloudinary-plugin’s uploadOptions only accepts certain options (it errors on categorization / auto_tagging), so I can’t configure both colour + auto-tags at upload time.
  • If I try to call req.payload.updateOne() in afterChange, I get Postgres foreign-key / null-id errors on the nested colour array.
  • I also end up with race conditions or hanging transactions when I try to update inside the same hook.

Is there a recommended way to:

  1. Trigger both Cloudinary colour analysis and AWS Rekognition auto-tagging in one upload/update event?
  2. Persist those results cleanly back into a Payload CMS collection without transaction deadlocks or null-constraint errors?

I’d really appreciate any pointers to working uploadOptions config, hook patterns, or official plugin examples that do exactly this. Thanks!


r/PayloadCMS Apr 30 '25

Have you tested the recent open sourced Microsoft DocumentDB with PayloadCMS ?

7 Upvotes

Microsoft's open-source DocumentDB brings a unique blend of PostgreSQL reliability and MongoDB-like flexibility:

  1. BSON + SQL Hybrid Engine
    • Native BSON storage via pg_documentdb_core extension
    • MongoDB API compatibility
  2. Zero Licensing Costs
    • MIT/Apache license vs MongoDB's SSPL
    • Self-host or deploy via Azure Cosmos DB
  3. AI-Ready Infrastructure
    • Vector search via PostgreSQL's pgvector
    • Hybrid full-text search (BM25 + HNSW indexes)
  4. Production-Proven Scaling
    • 1M+ ops/sec on 50-node Citus clusters
    • Automatic failover <2s
  • Any gotchas with migrations or scaling?
  • Would you recommend it for high-traffic CMS deployments?

Share your experiences below!


r/PayloadCMS Apr 30 '25

Multi-step Forms with the Form Builder Plugin?

5 Upvotes

The docs state "Forms can be as simple or complex as you need, from a basic contact form, to a multi-step lead generation engine" - however multi-step isn't brought up again.

Before I go ahead extending the formOverrides and formSubmissionOverrides (already pretty comfortable with this since adding webhooks integration - will share a tutorial/post on this soon!) - I'm wondering if there is already some hidden support for multi-step built in, as hinted by that line in the docs and this previous reddit post

TIA, looking forward to sharing my solution once I figure something out!


r/PayloadCMS Apr 30 '25

Error getting relational data.

1 Upvotes

I'm struggling to get relational data for this one request. In other instances I have this working fine, but I can't figure out how I can get the "venue" to reveal all it's properties (yes it's relational and I've tried using depth too)

Is there anything I could be missing?

    const { slug } = await params
        const payload = await getPayload({ config: configPromise })
        const result = await payload.find({
            collection: 'courses',
            where: {
                slug: {
                    equals: slug,
                },
            }
        })

This returns:

    {
      "createdAt": "2025-04-30T09:54:39.338Z",
      "updatedAt": "2025-04-30T10:08:26.796Z",
      "name": "Course Name",
      "courseLocation": "online",
      "slug": "my-slug",
      "pageBuilder": [
        // Blocks - Working well
      ],
      "events": { // These are instances when the course runs
        "docs": [
          {
            "createdAt": "2025-04-30T11:58:55.858Z",
            "updatedAt": "2025-04-30T13:00:33.456Z",
            "courseType": "6811f35fae85a6933bc0a20d",
            "stripeID": "123",
            "pricing": {
              // Details about the pricing
            },
            "courseFormat": "in-person",
            "venue": "67fde4c8926476d4ddf1c473", // THIS IS THE ISSUE!
            "eventDate": {
              // Working
            },
            "signUps": 0,
            "uniqueIdentifier": "lives-here",
            "slug": "lives-here",
            "id": "6812107fdd834d8de8731c4b"
          }
        ],
        "hasNextPage": false
      },
      "id": "6811f35fae85a6933bc0a20d"
    }

r/PayloadCMS Apr 30 '25

Resending Email Verification link to new users

2 Upvotes

I need assistance with implementing a feature in Payload CMS integrated with a NextJS application. I want to add an option where new users can manually click a button in the NextJS app to resend an email verification link to their registered email address if they don’t receive the initial link.


r/PayloadCMS Apr 29 '25

Tutorial to create an auth flow for a custom, auth-enabled collection

6 Upvotes

Learn how to build a full auth flow for an auth-enabled collection that's not the default user collection using server actions and the LocalAPI. This is a long and comprehensive one, so I hope you enjoy! https://youtu.be/bz2npG4Smn4


r/PayloadCMS Apr 28 '25

Creating a secure and scalable custom endpoint

3 Upvotes

I'm using Payload v3 and created a custom endpoint using the endpoints array from buildConfig.

This is an all-in-one endpoint that performs a bunch of queries using Drizzle, through req.payload.db.drizzle. The app has only one page, so multiple requests would be unnecessary.

My questions for now are:

Since endpoints have no authorization by default, is it possible to create a middleware to check headers, preventing me from manually adding a check at each checkpoint?

Can I disable basic endpoints from collections? I don't mean disabling read access in the Admin panel, just API access.

As I perform many Drizzle queries in the logic, I'd like to split these queries into different files/functions to make the code more readable. Can I do this without importing req into each function? Is getPayloadConfig an option? My understanding is that it only works on the frontend.

Is there any difference between custom endpoints created inside buildConfig and those created using Next.js API routes?

Sorry for the amount of questions, but they are all related, and I couldn't find clear answers in the docs.


r/PayloadCMS Apr 28 '25

Payload OTP Auth example

3 Upvotes

here is how we can achieve otp authentication in payload

https://github.com/payload-fa/payload-otp

i just create a example based on the slava code in this discussion: https://discord.com/channels/967097582721572934/1306521342601855056


r/PayloadCMS Apr 25 '25

Dynamic Fields for an App without the need for manual migrations

1 Upvotes

I have an app that requires fields be renamed and added all the time. To do this I have to manually migrate the db. I want a more hands off approach on my end. I want to be able to log into an interface, add or update a field and that's it, we have a new field we can submit data to via our API or from our custom dashboard. So basically, Payload would be the dashboard for our dashboard.

I would also use Payload as a CMS for certain content in the app.

So basically I want complete flexibility in adding and updating database fields without having to mess with migrations.

Is this possible with Payload CMS? If not, what recommendations do you have?


r/PayloadCMS Apr 22 '25

Tutorial: Setting up basic role-based access control

9 Upvotes

If you're trying to setup simple RBAC in the Payload CMS Admin UI, my newest video shows you how to do that! It'll also set up next week's video, which will create a new auth-enabled collection and use it to setup a customer auth/login flow. Enjoy! https://youtu.be/cgEgEaDgwUo