Render.com Provider

Deploy preview environments to Render.com web services.

How it works

Prerequisites

  1. A Render.com account.
  2. An API key and your owner ID (both available in the Render dashboard).

Step 1 — Get your Render API key

  1. Go to Account Settings → API Keys → Create API Key.
  2. Copy the key and store it as RENDER_API_KEY in the Previewops dashboard under Credentials.

Step 2 — Get your owner ID

  1. Go to Account Settings or Team Settings.
  2. The owner ID is shown in the URL: https://dashboard.render.com/... or listed in the settings page. It begins with usr_ (personal) or tea_ (team).
  3. You can store it in one of two ways (both are equivalent):

Option A — store as a credential (recommended): Save it as RENDER_OWNER_ID in the Previewops dashboard under Credentials. No .previewops.yaml change required.

Option B — set it in .previewops.yaml: Set providerConfig.ownerId directly in your repo config (see Step 3). This takes priority over the credential if both are set.

Step 3 — Configure the repo

When both RENDER_API_KEY and RENDER_OWNER_ID are stored as credentials, a minimal config is all you need:

# .previewops.yaml
provider: render

To override credential values per-repo or set optional options, add a providerConfig block:

provider: render
providerConfig:
  ownerId: usr_xxxxxxxxxxxx  # optional if RENDER_OWNER_ID stored as credential
  region: oregon             # optional (default: oregon)
                             # options: oregon, ohio, virginia, frankfurt, singapore
  plan: starter              # optional (default: starter)
                             # options: starter, standard, pro, pro_plus

Complete example with all options:

# .previewops.yaml
provider: render
providerConfig:
  ownerId: usr_xxxxxxxxxxxx   # your Render owner ID — usr_ (personal) or tea_ (team); from Account/Team Settings
  region: oregon              # deploy region (default: oregon)
                              # options: oregon, ohio, virginia, frankfurt, singapore
  plan: starter               # Render service plan (default: starter)
                              # options: starter, standard, pro, pro_plus

# Common options — all optional
concurrency: 3                # max simultaneous active previews per repo
ttlHours: 24                  # auto-delete after N hours (default: 24)
port: 3000                    # optional — auto-detected from your Dockerfile EXPOSE; falls back to 8080
memory: 512Mi                 # container memory (default: 512Mi)
cpu: 1                        # container vCPU (default: 1)
dockerfile: Dockerfile        # Dockerfile path relative to repo root (default: Dockerfile)
buildContext: .               # Docker build context (default: .)
env:
  NODE_ENV: preview           # inject env vars into the preview container

Step 4 — Verify

Comment /validate-previewops on any open PR. The bot will post whether the API key and owner ID are valid.

Private repositories

Render cannot clone private GitHub repos via the API — it requires its own GitHub App to be installed on the org, which is a manual setup step.

Previewops handles this automatically for all paid BYOC plans using a managed build pipeline:

  1. Previewops builds the Docker image using its own Cloud Build and Artifact Registry.
  2. The pre-built image is pushed to a private managed-builds repository.
  3. Previewops creates a Render registry credential pointing at that repository.
  4. Render pulls and deploys the pre-built image — no GitHub access required.

No extra configuration is needed. When Previewops detects that a repo is private and the plan supports it, the managed build path is used automatically.

Requirement: This feature requires a paid BYOC plan. Free BYOC plans are limited to public repos on Render. Upgrade →

Troubleshooting

Error Fix
RENDER_API_KEY environment variable is required Set RENDER_API_KEY in the Previewops dashboard credentials
render providerConfig.ownerId (or RENDER_OWNER_ID credential) is required Store RENDER_OWNER_ID as a credential or add ownerId to providerConfig
401 Unauthorized RENDER_API_KEY is wrong or expired — regenerate it
404 Not Found for ownerId Double-check RENDER_OWNER_ID or the ownerId value in providerConfig
Deploy hangs Render's free-tier web services have cold starts; use plan: starter (or higher) to ensure services stay warm
passed in repository URL is invalid or unfetchable Your repo is private. Upgrade to a paid BYOC plan — Previewops will use the managed build pipeline automatically
Managed build pipeline is not configured Contact support — MANAGED_BUILD_READER_KEY is not set on this installation