Custom webhook integration
Connect Auto SEO to Custom webhook
If your CMS isn't natively supported yet, the webhook integration covers it. Auto SEO POSTs a JSON payload for each article; your endpoint does the rest.
- 1
Create an HTTPS endpoint
Any framework or platform works — Next.js Route Handler, Express, Cloudflare Worker, Lambda, even a tiny Cloud Function. It needs to accept POST and return 2xx on success.
- 2
Set the shared secret
Pick a strong random string. Put it in your env as AUTOSEO_WEBHOOK_SECRET. Add it to the Auto SEO dashboard under Integrations → Webhook.
- 3
Verify the signature on every request
Auto SEO sends an x-autoseo-signature header (HMAC-SHA256 of the raw body). Reject any request whose signature doesn't match — never trust the payload alone.
- 4
Persist the article
Write the body into your CMS, content folder, or queue. Return 200 with a small JSON body — Auto SEO records the response for diagnostics.
- 5
Handle retries
Non-2xx responses retry with exponential backoff (5s, 30s, 5m, 30m, 6h). If you need to pause processing during a deploy, return 503 and Auto SEO will retry until success.
Example payload / snippet
Example payload
{
"event": "article.published",
"id": "art_01HZX...",
"slug": "ai-seo-2026-guide",
"language": "en",
"title": "How AI is changing SEO in 2026",
"summary": "A field guide to the new ranking signals.",
"body_html": "<p>Long-form article body…</p>",
"body_md": "## Section one…",
"hero_image_url": "https://cdn.autoseo.it.com/hero/…",
"tags": ["ai-seo", "automation"],
"seo": {
"meta_title": "How AI is changing SEO in 2026",
"meta_description": "A field guide to the new ranking signals.",
"canonical": null
},
"schema_jsonld": { "@context": "https://schema.org", "@type": "Article", "…": "…" },
"published_at": "2026-05-18T10:00:00Z"
}Signature verification
// Node.js example
import crypto from "node:crypto";
const sig = req.headers.get("x-autoseo-signature");
const body = await req.text(); // raw body before parsing
const expected = crypto
.createHmac("sha256", process.env.AUTOSEO_WEBHOOK_SECRET)
.update(body)
.digest("hex");
if (sig !== expected) return new Response("Forbidden", { status: 403 });What gets published
- Full article body in HTML and Markdown so you can pick the format your stack wants.
- Hero image URL (CDN-hosted with cache headers).
- SEO bundle: meta title, meta description, canonical, OG image.
- Schema.org JSON-LD blocks ready to inject into the page.
- Tag and category suggestions inferred from the topic cluster.
Troubleshooting
Most webhook failures come from signature mismatches: make sure you're hashing the RAW body bytes, not the parsed JSON. If you proxy through a CDN, allow the x-autoseo-signature header to pass through unchanged. You can replay the last 50 deliveries from the integration dashboard.
Slug: webhook