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

  1. 1Open Site settings → Publishing → Integration: Webhook (recommended).
  2. 2Paste your HTTPS endpoint URL.
  3. 3Optional: add a bearer token. Spook sends Authorization: Bearer … and signs the body in X-Spook-Signature.
  4. 4Choose draft or live publish mode.
  5. 5Save the site, then click Send test payload to verify your endpoint.
  6. 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.