Skip to content

Integrations

Integrations

Connect Draftful to how you already work: an agent over MCP, a webhook endpoint for your own pipeline, or the analytics you already use to measure the site.

Webhooks

Set an endpoint URL and pick which article events it should receive, from Settings → Integrations. Draftful already sends these in production.

Events

  • article.generation.started
  • article.generation.completed
  • article.generation.failed
  • article.published
  • article.publish_failed
  • article.updated
  • article.scheduled
  • article.unpublished

Every delivery is signed: the X-Draftful-Signature header carries a timestamp and an HMAC-SHA256 of the timestamp and body, so you can verify it came from Draftful and reject stale replays.

Each delivery also carries X-Draftful-Event and X-Draftful-Delivery; the delivery id stays the same across retries, so use it to ignore duplicates.

Delivery retries automatically on a 5xx response or a timeout, with backoff; a 4xx response is treated as your endpoint rejecting the event on purpose and is not retried.

Draftful learns the live URL from your endpoint's response or a signed callback URL in the payload — see "Reporting the live URL" in the full spec.

Settings → Integrations lets you send a test delivery to a new endpoint and rotate its signing secret at any time.

Autopilot at the Publish level uses an active webhook as its publish destination, the same as a manual publish.

Example payload — article.published

{
  "event": "article.published",
  "delivery_id": "b3f1c8b0-...-9e2a",
  "occurred_at": "2026-09-22T14:03:00Z",
  "data": {
    "id": 4821,
    "title": "...",
    "slug": "...",
    "status": "published",
    "word_count": 1420,
    "published_at": "2026-09-22T14:03:00Z",
    "workspace_slug": "acme",
    "schema_version": 2,
    "structured_data": { "...": "..." },
    "refresh_of_url": null,
    "content_markdown": "# ...",
    "content_html": "<h1>...</h1>",
    "meta_title": "...",
    "meta_description": "...",
    "excerpt": "...",
    "canonical_url": null,
    "language": "en",
    "featured_image": { "url": "...", "avif_url": "...", "alt": "...", "width": 1600, "height": 900 },
    "images": [],
    "categories": ["..."],
    "tags": ["...", "..."],
    "author": { "type": "organization", "name": "Acme", "url": "https://acme.com" },
    "published_url": null,
    "og_image_url": "https://.../cover-og.jpg",
    "faqs": [{ "question": "...", "answer": "..." }],
    "content_markdown_without_faq": "# ...",
    "content_html_without_faq": "<h1>...</h1>",
    "reading_minutes": 8,
    "published_url_callback": "https://draftful.app/api/v1/publish-callbacks/articles/4821?..."
  }
}

Let your AI build the receiver

Copy a prompt with the full webhook spec and paste it into ChatGPT, Claude, Cursor or whichever assistant writes your code. It already asks for signature checks, idempotency and tests.

Search Console and GA4

  • Google Search Console

    Connect via OAuth so Draftful can read your real search impressions, clicks and rankings.

  • Google Analytics 4

    Connect via OAuth so Draftful can read sessions and traffic, including sessions referred by AI engines.

Native WordPress, Shopify, Webflow, Wix and Ghost publishing is on the roadmap. Until then, a webhook publishes to any of them today: copy the AI prompt above and your assistant writes the receiver.