Publishing
Webhook
The most flexible option. Spook POSTs JSON to any HTTPS endpoint: your API route, Zapier, Make, n8n, or a small serverless function that writes to your database or CMS.
What it does
- Works with any stack or automation tool
- Real-time push on publish and update
- Bearer token + optional HMAC signature
- HTML and Markdown in the same payload
Setup
- 1Open Site settings → Publishing → Integration: Webhook (recommended).
- 2Paste your HTTPS endpoint URL.
- 3Optional: add a bearer token. Spook sends Authorization: Bearer … and signs the body in X-Spook-Signature.
- 4Choose draft or live publish mode.
- 5Save the site, then click Send test payload to verify your endpoint.
- 6Publish an article from the editor. Your webhook receives publish_article or update_article.
Payload
POST · application/json
{
"event": "publish_article",
"site": {
"domain": "yoursite.com",
"name": "Your Site"
},
"article": {
"id": "abc123",
"title": "How to pack for a ski trip",
"slug": "how-to-pack-ski-trip",
"content_html": "<p>Article body as HTML…</p>",
"content_markdown": "## How to pack\n\nArticle body as Markdown…",
"meta_title": "How to pack for a ski trip | Your Site",
"meta_description": "A practical packing guide for your next ski holiday.",
"teaser": "Short intro shown above the article.",
"featured_snippet": "One-paragraph answer optimized for Google.",
"status": "published",
"language": "da",
"url": "https://yoursite.com/how-to-pack-ski-trip",
"faqs": [
{
"question": "What boots do I need?",
"answer": "…"
}
],
"external_id": null
},
"sent_at": "2026-06-25T12:00:00.000Z"
}Response
// Your endpoint can return an optional JSON body:
{ "id": "cms-post-id" }
// or
{ "external_id": "cms-post-id" }
// Spook stores this for future update_article events.Draft or live
Every site chooses how Spook pushes content: as a draft for you to approve in your CMS, or live immediately (with a sitemap resubmission to Google when Search Console is connected). See Draft vs live.