Skip to main content
Promotion copies a workflow’s deployable configuration from one environment to another. It never copies runtime data. The output is a production draft — you still review it and publish explicitly before live traffic switches over.

What is copied, and what is not

Secret references are copied by name. The production environment must already hold values for those names — see Webhooks and secrets.

Endpoint

Request:
Response:
Promotion is idempotent per workspace and idempotency key. Retrying after a network timeout returns the same promotion result rather than creating a duplicate production draft.

missing_secrets

If the source workflow references secrets that do not exist in production, those names are returned in missing_secrets. The production draft is still created so you can inspect the diff, but publishing or running it will fail until the missing secrets are populated. Add the missing values in the dashboard under the production environment, then re-list secrets to confirm and publish the draft.

URL warnings

Webhook definitions are scanned before they are copied into production. The response includes warnings if the production target would inherit endpoints that look like development URLs:
  • localhost, 127.0.0.1, or 0.0.0.0
  • *.ngrok.io, *.ngrok-free.app, *.ngrok.app
  • Known staging hostnames (any URL containing staging, dev, test, or matching common review-app domains)
These are warnings, not errors. Update the endpoint to a real production URL inside the production draft before publishing.

Examples

CLI

Promotion is a release-class command. In CI, pass --confirm:

curl

For the full request/response shapes, see the workflow promotion API reference.

Workflow pairing

Promotion uses a stable logical id (workflow_family_id) to associate the test workflow with its production counterpart. The two workflows have distinct resource IDs (so cross-environment access still returns 404), but the dashboard pairs them for diffs and follow-up promotions.
  1. Build and iterate on the workflow in the test environment.
  2. Run workflow tests against the latest test draft.
  3. Publish the test draft to get a stable source_version_id.
  4. POST /v1/workflows/{workflow_id}/promotions (or use the dashboard Promote action).
  5. Review the production draft: secrets, webhook URLs, tests.
  6. Publish the production draft when you are ready for live traffic.