Publish SEO articles to any stack with signed webhooks
Custom Next.js site? Astro or Hugo with a headless CMS? Internal platform your team built years ago? If your stack can receive an HTTP request, Rankody can publish to it. The webhook integration delivers every finished article to an endpoint you control, as clean JSON with the title, markdown body, meta description, and target keyword.
Every delivery is signed with an HMAC secret we generate for you, so your endpoint can verify each request really came from Rankody before touching your content. You decide what happens next: write to your database, open a pull request, trigger a rebuild, anything your pipeline can express.
How the Webhooks connection works
- 1
Point Rankody at your endpoint
In the Integrations panel, choose Webhook and paste the URL your stack listens on. We generate a signing secret and show it once for you to store.
- 2
Verify the signature
Each request carries an HMAC-SHA256 signature header computed over the raw body with your secret. A few lines of code in any language confirms authenticity; the panel shows a worked example.
- 3
Handle the payload your way
The JSON gives you the article's title, markdown content, meta description, and keyword. Store it, transform it, commit it to git; re-link updates arrive through the same endpoint so old articles stay fresh.
The exact payload your endpoint receives
Every event is a JSON POST to the URL you configure, signed with an HMAC-SHA256 secret we generate once. Your endpoint may answer with {"url": "...", "id": "..."} to tell Rankody where the article ended up, which keeps re-link updates pointed at the right piece.
{
"event": "article.publish",
"mode": "publish",
"sentAt": "2026-08-28T06:00:00.000Z",
"article": {
"id": "8f3c...",
"title": "How to Add Analytics Without Slowing a Site Down",
"metaDescription": "A practical guide to ...",
"targetKeyword": "add analytics to next.js site",
"markdown": "## Answer first\n\n...",
"html": "<h2>Answer first</h2>..."
}
}Verifying the signature
The header X-Rankody-Signature carries sha256=<hex digest> computed over the raw request body with your secret. Compare it before you trust anything in the payload, and compare it in constant time.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verify(rawBody, header, secret) {
const expected = "sha256=" + createHmac("sha256", secret)
.update(rawBody)
.digest("hex");
const a = Buffer.from(header ?? "");
const b = Buffer.from(expected);
return a.length === b.length && timingSafeEqual(a, b);
}Three shapes that work well
- Static site, git commitThe endpoint writes the markdown into content/blog/<slug>.md, commits, and your CI rebuilds. Hugo, Astro, Eleventy and Next.js all fit. Your articles end up in version control, which is the cleanest possible backup.
- Headless CMSTranslate the payload into a Sanity, Contentful or Payload document. Because you get both markdown and HTML, you can pick whichever your schema stores.
- Database plus rebuild triggerInsert the row, return the public URL in the response, and fire your deploy hook. Rankody stores the URL you return and uses it for re-link updates later.
What happens when your endpoint is down
The article stays in your Rankody queue and the delivery is retried; nothing is lost because a server had a bad afternoon. Every request carries an article id that is stable across retries and across later updates, so an idempotent receiver can safely ignore a duplicate.
What every article includes
Regardless of where it publishes, each Rankody article is long-form (typically 2,000 to 4,000 words), written from keyword research on your actual market, passed through a fact-check that verifies claims against cited sources, illustrated with properly attributed images, and linked to your existing articles. A monthly re-linking pass then keeps older posts pointing at newer ones, so the blog compounds instead of fragmenting.
Webhooks questions
What's in the webhook payload?+−
How do I verify a request is really from Rankody?+−
Does this work with static site generators?+−
What if my endpoint is down when an article ships?+−
Publishing somewhere else? See all integrations — the webhook path covers any stack with an HTTP endpoint.