Promoting a preview deployment to production
Use this guide to verify a preview deployment and promote it to production. You'll find the right deployment, test it, and promote it to serve production traffic.
This guide requires a linked Vercel project. Run
vercel link in your project directory if you haven't already.
Use this block when you already know what you're doing and want the full command sequence. Use the steps below for context and checks.
# 1. Find preview deployments
vercel list --status READY
# 2. Inspect the target deployment
vercel inspect <deployment-url>
# 3. Test the preview deployment
vercel curl /api/health --deployment <deployment-url>
vercel httpstat / --deployment <deployment-url>
# 4. Check for errors
vercel logs --deployment <deployment-url> --level error --limit 50
# 5. Promote to production (--yes skips confirmation prompt)
vercel promote <deployment-url> --yes
vercel promote status
# 6. Verify production
vercel logs --environment production --level error --since 5m
vercel httpstat /List recent deployments that have finished building and are ready to serve traffic:
vercel list --status READYThis shows all READY deployments with their URLs, timestamps, and Git branches. Find the preview deployment you want to promote.
To filter by a specific environment:
vercel list --environment previewConfirm that the deployment built successfully and check its metadata:
vercel inspect <deployment-url>This shows the Git commit, branch, build duration, and function configuration. Verify it matches the code you expect to promote.
To check the build logs for any warnings:
vercel inspect <deployment-url> --logsUse vercel curl to send requests to the preview deployment. This automatically handles deployment protection, so you can test protected preview deployments:
vercel curl /api/health --deployment <deployment-url>Check the response status and body. For critical routes, test multiple endpoints:
vercel curl / --deployment <deployment-url>
vercel curl /api/users --deployment <deployment-url>To check response timing and verify there are no performance regressions:
vercel httpstat / --deployment <deployment-url>Review the deployment's logs for any errors that occurred during testing or from other traffic:
vercel logs --deployment <deployment-url> --level error --limit 50To expand truncated error messages and see full stack traces:
vercel logs --deployment <deployment-url> --level error --expandIf the output is clean, the deployment is safe to promote.
Promote the preview deployment to production. This triggers a new production build using the same source code:
vercel promote <deployment-url>Promoting a preview deployment to production triggers a complete rebuild with production environment variables. If you have different variables set for preview and production, the production values will be used in the new build.
For non-interactive environments (CI/CD or automation), add --yes to skip the confirmation prompt:
vercel promote <deployment-url> --yesMonitor the promotion progress:
vercel promote statusBy default, the CLI waits up to three minutes for the promotion to complete. To change the timeout:
vercel promote <deployment-url> --timeout 5mAfter the promotion completes, confirm that production is serving traffic correctly:
vercel logs --environment production --level error --since 5mCheck that the production domain responds with the expected content:
vercel httpstat /If you discover a problem after promoting, roll back to the previous production deployment:
vercel rollbackThis instantly restores the previous production deployment. See Rolling back a production deployment for a full recovery workflow.
Was this helpful?