Skip to content

Render

Deploy and manage Render services, and react to Render deploy/build events

  1. API Key: Create it in Render Account Settings -> API Keys.
  2. Workspace (optional): Use your Render workspace ID (usr-... or tea-...) or workspace name. Leave empty to use the first workspace available to the API key.
  3. Workspace Plan: Select Professional or Organization / Enterprise (used to choose webhook strategy).
  4. Auth: SuperPlane sends requests to Render API v1 using Authorization: Bearer <API_KEY>.
  5. Webhooks: SuperPlane configures Render webhooks automatically via the Render Webhooks API. No manual setup is required.
  6. Troubleshooting: Check Render Dashboard -> Integrations -> Webhooks and the Render webhook docs.

Note: Plan requirement: Render webhooks require a Professional plan or higher.

The On Build trigger emits build-related Render events for one selected service.

  • Build failure alerts: Notify your team when builds fail
  • Build success hooks: Trigger follow-up automation after successful builds
  • Service: Required Render service.
  • Event Types: Build event states to listen for. Defaults to build_ended.

Render webhooks are validated using the secret generated when SuperPlane creates the webhook via the Render API. Verification checks:

  • webhook-id
  • webhook-timestamp
  • webhook-signature (v1,<base64-signature>)

The default output emits payload data fields like buildId, eventId, serviceId, serviceName, and status (when present).

{
"data": {
"buildId": "bld-cukouhrtq21c73e9scng",
"createdAt": "2026-02-05T16:00:00.000000Z",
"eventId": "evj-cukouhrtq21c73e9scng",
"serviceId": "srv-cukouhrtq21c73e9scng",
"serviceName": "backend-api",
"status": "failed"
},
"timestamp": "2026-02-05T16:00:01.000000Z",
"type": "render.build.ended"
}

The On Deploy trigger emits deploy-related Render events for one selected service.

  • Deploy notifications: Notify Slack or PagerDuty when deploys succeed/fail
  • Post-deploy automation: Trigger smoke tests after successful deploy completion events
  • Release orchestration: Trigger downstream workflows when deploy stages change
  • Service: Required Render service.
  • Event Types: Deploy event states to listen for. Defaults to deploy_ended.

Render webhooks are validated using the secret generated when SuperPlane creates the webhook via the Render API. Verification checks:

  • webhook-id
  • webhook-timestamp
  • webhook-signature (v1,<base64-signature>)

The default output emits payload data fields like deployId, eventId, serviceId, serviceName, and status (when present).

{
"data": {
"createdAt": "2026-02-05T16:00:00.000000Z",
"deployId": "dep-cukouhrtq21c73e9scng",
"eventId": "evj-cukouhrtq21c73e9scng",
"serviceId": "srv-cukouhrtq21c73e9scng",
"serviceName": "backend-api",
"status": "succeeded"
},
"timestamp": "2026-02-05T16:00:01.000000Z",
"type": "render.deploy.ended"
}

The Cancel Deploy component cancels an in-progress deploy for a Render service and waits for it to complete.

  • Automated rollback/abort: Cancel deploys when health checks fail
  • Manual intervention: Stop a deploy triggered earlier in a workflow
  1. Sends a cancel request for the specified deploy via the Render API
  2. Waits for the deploy to finish (via deploy_ended webhook and optional polling fallback)
  3. Routes execution based on deploy outcome:
    • Success channel: Deploy was cancelled successfully (status is canceled)
    • Failed channel: Deploy finished with an unexpected status
  • Service: Render service that owns the deploy
  • Deploy ID: Deploy ID to cancel (supports expressions)
  • Success: Emitted when the deploy is cancelled successfully
  • Failed: Emitted when the deploy finishes with a non-cancelled status
  • Uses the existing integration webhook for deploy_ended events
  • Falls back to polling if the webhook does not arrive
  • Requires a Render API key configured on the integration
{
"data": {
"createdAt": "2026-02-05T16:10:00.000000Z",
"deployId": "dep-cukouhrtq21c73e9scng",
"finishedAt": "2026-02-05T16:12:00.000000Z",
"serviceId": "srv-cukouhrtq21c73e9scng",
"status": "canceled",
"trigger": "api"
},
"timestamp": "2026-02-05T16:12:00.000000Z",
"type": "render.deploy"
}

The Deploy component starts a new deploy for a Render service and waits for it to complete.

  • Merge to deploy: Trigger production deploys after a successful GitHub merge and CI pass
  • Scheduled redeploys: Redeploy staging services on schedules or external content changes
  • Chained deploys: Deploy service B when service A finishes successfully
  1. Triggers a new deploy for the selected Render service via the Render API
  2. Waits for the deploy to complete (via deploy_ended webhook and optional polling fallback)
  3. Routes execution based on deploy outcome:
    • Success channel: Deploy completed successfully
    • Failed channel: Deploy failed or was cancelled
  • Service: Render service to deploy
  • Clear Cache: Clear build cache before deploying
  • Success: Emitted when the deploy completes successfully
  • Failed: Emitted when the deploy fails or is cancelled
  • Uses the existing integration webhook for deploy_ended events (same as On Deploy trigger)
  • Falls back to polling if the webhook does not arrive
  • Requires a Render API key configured on the integration
{
"data": {
"createdAt": "2026-02-05T16:10:00.000000Z",
"deployId": "dep-cukouhrtq21c73e9scng",
"finishedAt": "2026-02-05T16:15:00.000000Z",
"serviceId": "srv-cukouhrtq21c73e9scng",
"status": "succeeded"
},
"timestamp": "2026-02-05T16:15:00.000000Z",
"type": "render.deploy.finished"
}

The Get Deploy component fetches a deploy for a Render service.

  • Status checks: Inspect deploy status and timestamps
  • Debugging: Fetch deploy metadata after receiving an event
  • Service: Render service that owns the deploy
  • Deploy ID: Deploy ID to retrieve (supports expressions)

Emits a render.deploy payload containing deploy fields like deployId, status, trigger, and timestamps when available.

{
"data": {
"commit": {
"createdAt": "2026-02-05T16:09:30.000000Z",
"id": "1a2b3c4d5e6f",
"message": "Release v1.2.3"
},
"createdAt": "2026-02-05T16:10:00.000000Z",
"deployId": "dep-cukouhrtq21c73e9scng",
"finishedAt": "2026-02-05T16:15:00.000000Z",
"image": {
"ref": "registry.example.com/backend-api:1a2b3c4d",
"sha": "sha256:4f7c2d7f0bb27e2f8d4d9b3d2b3a1a9a3b2c1d0e"
},
"serviceId": "srv-cukouhrtq21c73e9scng",
"startedAt": "2026-02-05T16:10:10.000000Z",
"status": "live",
"trigger": "api"
},
"timestamp": "2026-02-05T16:15:00.000000Z",
"type": "render.deploy"
}

The Get Service component fetches details for a Render service.

  • Service inspection: Fetch current service configuration, metadata, and custom domains
  • Workflow context: Use service fields to drive branching decisions in later steps
  • Service: Render service to retrieve

Emits a render.service payload containing service fields like serviceId, serviceName, type, dashboardUrl, suspended, and customDomains.

{
"data": {
"createdAt": "2026-02-05T15:00:00.000000Z",
"customDomains": [
{
"id": "cdm-abc123xyz456",
"name": "app.example.com",
"serviceId": "srv-cukouhrtq21c73e9scng",
"verificationStatus": "verified"
}
],
"dashboardUrl": "https://dashboard.render.com/web/srv-cukouhrtq21c73e9scng",
"serviceId": "srv-cukouhrtq21c73e9scng",
"serviceName": "backend-api",
"suspended": "not_suspended",
"type": "web_service",
"updatedAt": "2026-02-05T16:00:00.000000Z"
},
"timestamp": "2026-02-05T16:05:00.000000Z",
"type": "render.service"
}

The Purge Cache component requests a build cache purge for a Render service.

  • Cache reset: Force a clean rebuild when you suspect stale dependencies or build artifacts
  • Operational tooling: Provide a one-click cache purge in incident response workflows
  • Service: Render service whose build cache should be purged

Emits a render.cache.purge.requested payload with serviceId and a status field indicating the request was accepted.

{
"data": {
"serviceId": "srv-cukouhrtq21c73e9scng",
"status": "accepted"
},
"timestamp": "2026-02-05T16:20:00.000000Z",
"type": "render.cache.purge.requested"
}

The Rollback Deploy component triggers a rollback deploy for a Render service and waits for it to complete.

  • Automated recovery: Roll back after detecting errors in a new deploy
  • One-click rollback: Trigger rollbacks from an incident workflow
  1. Triggers a rollback deploy for the selected Render service via the Render API
  2. Waits for the deploy to complete (via deploy_ended webhook and optional polling fallback)
  3. Routes execution based on deploy outcome:
    • Success channel: Deploy completed successfully (status is live)
    • Failed channel: Deploy failed or was cancelled
  • Service: Render service to roll back
  • Deploy ID: The deploy ID to roll back to (supports expressions)
  • Success: Emitted when the rollback deploy completes successfully
  • Failed: Emitted when the rollback deploy fails or is cancelled
  • Uses the existing integration webhook for deploy_ended events
  • Falls back to polling if the webhook does not arrive
  • Includes rollbackToDeployId in the output payload for reference
  • Requires a Render API key configured on the integration
{
"data": {
"createdAt": "2026-02-05T16:18:00.000000Z",
"deployId": "dep-cukouhrtq21c73e9scng",
"rollbackToDeployId": "dep-cukouhrtq21c73e9scnf",
"serviceId": "srv-cukouhrtq21c73e9scng",
"status": "build_in_progress",
"trigger": "rollback"
},
"timestamp": "2026-02-05T16:18:00.000000Z",
"type": "render.deploy"
}

The Add Custom Domain component adds a custom domain to a Render service.

  • Blue/green deployments: Add the live domain to the new (green) service as part of a traffic switch
  • Domain management: Automate custom domain provisioning as part of a deployment workflow
  1. Adds the custom domain to the selected Render service
  2. When Wait For Verification is enabled, triggers Render DNS verification and retrieves the latest custom domain status
  3. Continues polling by re-triggering verification and checking verificationStatus until Render reports verified or failed
  • Service: Render service to add the domain to
  • Domain Name: The custom domain name (e.g., app.example.com)
  • Wait For Verification: When enabled, waits for DNS verification before completing

Emits a render.customDomain.added payload with id, name, serviceId, and verificationStatus.

{
"data": {
"id": "cdm-abc123xyz456",
"name": "app.example.com",
"serviceId": "srv-cukouhrtq21c73e9scng",
"verificationStatus": "verified"
},
"timestamp": "2026-02-05T16:25:00.000000Z",
"type": "render.customDomain.added"
}

The Remove Custom Domain component removes a custom domain from a Render service.

  • Blue/green deployments: Remove the live domain from the old (blue) service before adding it to the new one
  • Domain cleanup: Automate domain removal as part of a decommission or rotation workflow
  • Service: Render service to remove the domain from
  • Domain Name: The custom domain name to remove (e.g., app.example.com)

Emits a render.customDomain.removed payload with name and serviceId.

{
"data": {
"name": "app.example.com",
"serviceId": "srv-cukouhrtq21c73e9scng"
},
"timestamp": "2026-02-05T16:25:00.000000Z",
"type": "render.customDomain.removed"
}

The Update Env Var component updates a Render service environment variable.

  • Rotate secrets: Generate a new value for an env var (for example, API tokens) and optionally emit it
  • Configuration changes: Update non-secret environment values as part of a workflow
  • Service: Render service that owns the env var
  • Key: Env var key to update
  • Value Strategy:
    • Set value: provide the Value field
    • Generate value: request Render to generate a new value
  • Value: New env var value (sensitive). Required when using Set value
  • Emit Value: When enabled, include the env var value in output. Disabled by default to avoid leaking secrets.

Emits a render.envVar.updated payload with serviceId, key, and a valueGenerated boolean. The value field is only included when emitValue is enabled.

{
"data": {
"key": "DATABASE_URL",
"serviceId": "srv-cukouhrtq21c73e9scng",
"valueGenerated": false
},
"timestamp": "2026-02-05T16:25:00.000000Z",
"type": "render.envVar.updated"
}