My env variables are not working in production (even while using PAYLOAD_PUBLIC_ prefix)

default discord avatar
3 months ago

So I want to hook up the preview button with a


variable. I looked around here for similar issues, and all seem to be solved by using the


prefix, which I already am using.

admin: {
   preview: (doc) => {
      const page = doc as any as Home;
      let pathToUse = '';
      if ( {
        pathToUse = === 'home' ? '' :;

      return `${process.env.PAYLOAD_PUBLIC_WEB_URL}/api/preview? url=${process.env.PAYLOAD_PUBLIC_WEB_URL}/${pathToUse}`;

This works in development mode, but gives me an


for each variable after building it.

  • default discord avatar
    3 months ago

    I'm pretty sure the


    env variables are being replaced when you build payload (probably somewhere in your CI pipeline) Perhaps you need to define the env variables you want to use for production in there as well 🙂

  • default discord avatar
    3 months ago

    When I add


    it appears to be working

    it just feels like this is not what the docs are trying me to tell

  • discord user avatar
    Payload Team
    3 months ago

    check out this thread:

    Can you point me to the docs that confused you? Maybe we need to clean a section up

  • default discord avatar
    2 months ago

    Actually this reply sums it nice up:

    I guess I was looking at it the wrong way, I just looked at it as one build. But there is of course a separation in server and client build.

Open the post
Continue the discussion in Discord
Like what we're doing?
Star us on GitHub!


Connect with the Payload Community on Discord



Can't find what you're looking for?

Get help straight from the Payload team with an Enterprise License.