Skip to content

Vercel access problemVercel preview link asks visitors to log in to Vercel

You send a client or tester a vercel.app link and they see a Vercel login page instead of the app. Or a webhook or test run against a preview URL fails. Deployment Protection is on for that URL. Here is what Vercel documents, and the fix, or hand it over at a fixed price.

Short answer

Send people the production domain, or a Shareable Link for the preview deployment. For tools such as tests or webhooks, use Protection Bypass for Automation with its secret in a header. Turning protection off makes every existing deployment public, so we keep it on.

Why Vercel asks for a login, and the fix

  1. 01

    Vercel Authentication protects the preview

    “Users attempting to access the deployment will encounter a Vercel login redirect.” Vercel, Vercel Authentication

    Only people with access to the project get through. For a client or tester without a Vercel account, share a Shareable Link for the deployment instead of the plain URL.

  2. 02

    You shared a generated URL, not the production domain

    “Standard Protection is the recommended option for most projects. It protects all domains except production domains.” Vercel, Deployment Protection

    Standard Protection covers every URL except production domains, so a my-project-1234.vercel.app address can be protected while your own domain is public. Share the production domain for anything a customer should see.

  3. 03

    A webhook or test hits a protected URL

    “Using a header is the recommended approach for most automation tools:” Vercel, Protection Bypass for Automation

    Stripe, Slack or a test run can’t log in. Create a Protection Bypass for Automation secret in the project settings and send it in the x-vercel-protection-bypass header, or as a query parameter where a service can’t set headers.

    x-vercel-protection-bypass: your-generated-secret
  4. 04

    The app fetches its own VERCEL_URL

    “For client-side requests, use relative paths in the fetch call to target the current domain.” Vercel, Deployment Protection

    Server code that calls the app through VERCEL_URL gets the login page back once protection covers that URL. Use relative paths in the browser, and the incoming request’s origin and cookies on the server.

    // Before
    fetch(`${process.env.VERCEL_URL}/some/path`);
    
    // After
    fetch('/some/path');

Checked against the vendor’s docs on : Vercel docs: Deployment Protection; Vercel docs: Vercel Authentication; Vercel docs: Protection Bypass for Automation.

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

Related: Stripe webhook signature failed · Vercel environment variables undefined · Vercel 404: NOT_FOUND · Vercel deployment blocked: commit author

Questions

More on this error

Can we just turn Deployment Protection off?

You can, but Vercel says every existing deployment becomes unprotected when Vercel Authentication is disabled, including old previews with unfinished work. A Shareable Link or the bypass secret fixes the access problem without that.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; we reply by email, usually within one business day.