Render runs the Web Service — your code receives every article.
Render is somewhere to run code, not a CMS: its API covers services, deploys, environment variables, domains, databases and disks, and none of those can hold a blog post. The thing that can is the Web Service you already run there. Give it one receiver route in your own stack — Node.js, Python, Ruby, Go, Rust or Elixir natively, PHP, .NET or Java from a Dockerfile — and DraftSEO POSTs every finished article to it as signed JSON, ready to store and render.
| Render content API | None — services, deploys, disks — no post, page or article resource anywhere in Render’s API |
|---|---|
| Where each article lands | A route in your Web Service — native Node.js, Python, Ruby, Go, Rust, Elixir; Docker for PHP, .NET, Java |
| Delivery security | Signed HMAC, replay-checked — computed over ${timestamp}.${rawBody}; deliveries older than 5 minutes are rejected |
| Free instances | Asleep after 15 idle minutes — about a minute to wake, longer than the 10-second Send test; paid instances never spin down |
| Local files | Wiped on deploy and restart — keep posts in a database; Render Postgres works |
Who does what
Choose the stack your Web Service runs, add its receiver, set the signing secret and write incoming posts to your database. Once the signed test passes, each new article takes none of your time — templates, routes and caching remain yours to shape.
Add it once — every article after that arrives by itself.
Setup
Render does not decide the setup — your language does, so begin by naming it.
Connect a site → Render, then choose what your service is written in — Next.js, Django, FastAPI, Ruby on Rails, Go, Rust / Axum, Elixir / Phoenix, Laravel, Java / Spring and more. The recipe opens with your signing secret.
~1 minute
Bind to 0.0.0.0 and the PORT Render sets (10000 by default) — the recipes read it already. PHP, .NET and Java services use Runtime: Docker plus PORT=8080. A Static Site runs no code, so the receiver gets its own small Web Service.
~10 minutes
Your service → Environment → Add Environment Variable, named DRAFTSEO_WEBHOOK_SECRET. Pick Save and deploy — "Save only" leaves the value waiting for your next deploy.
~2 minutes
On a free instance, open your site in a browser first so it is awake. DraftSEO then sends a signed test delivery — and a deliberately invalid one, which your receiver must reject. Both green: you are connected.
~1 minute
Each scheduled article reaches your Web Service on its own, with images, title and meta description attached.
Ongoing · zero clicks
FAQ
No — Render has nothing inside it to publish into. Its API handles services, deploys, environment variables, domains, databases and disks, and not one of them is a post or a page. DraftSEO publishes into the Web Service you run on Render, which is the code that actually renders your blog.
Render runs Node.js, Python, Ruby, Go, Rust and Elixir natively, so the Next.js, Astro, SvelteKit, Nuxt (Vue), Node.js / Express, Django, FastAPI, Ruby on Rails, Go (net/http), Rust / Axum and Elixir / Phoenix recipes deploy straight from your repository; Expo serves its API routes through expo-server’s Express adapter. PHP (plain), Laravel, ASP.NET Core, Java / Spring and Kotlin (Ktor) run from a Dockerfile: create the Web Service with Runtime: Docker and set PORT=8080 so Render routes to the recipe’s port.
Because the instance is probably asleep. Free instances spin down after 15 minutes without traffic and take about a minute to wake, which is far longer than the 10-second test allows. Open your site in a browser, wait for it to load, then send the test again — or switch to a paid instance, which never spins down.
Not on its own: a Static Site runs no code, and something has to answer DraftSEO’s POST. Deploy the receiver as its own small Web Service — the Node.js recipe works as-is — and point the endpoint at that service.
In a database. Render wipes a service’s filesystem on every deploy and restart, so a post saved as a file vanishes with the next one. Render Postgres works: the receiver upserts each article on its id, and your pages read from the same table.
No card required. Signed test delivery in under a minute.