kitful.aiKitful
Integrations

Webhooks

Send finished articles from Kitful to another tool with a webhook.

Use Webhooks when you want Kitful to hand off finished articles to another system that does not have a built-in integration.

If someone else on your team handles the technical setup, you can share this page with them.

What you need before you start

  • a public https:// webhook URL
  • access to the tool or service that will receive the article
  • optional: a shared secret if your team wants signed requests

Connect Webhooks in Kitful

  1. Open your workspace in Kitful.
  2. Go to Integrations.
  3. Click Add on Webhook.
  4. Fill in:
    • Integration Name
    • Webhook URL
    • Secret (Optional)
  5. Click Save.

What Kitful sends

Kitful sends a POST request with Content-Type: application/json.

Payload

{
  "id": "01JQ...",
  "title": "How to Improve Core Web Vitals",
  "slug": "how-to-improve-core-web-vitals",
  "html": "<h2>Introduction</h2><p>...</p>",
  "excerpt": "A short summary of the article.",
  "metaTitle": "How to Improve Core Web Vitals | Your Site",
  "metaDescription": "Learn practical steps to improve your Core Web Vitals scores.",
  "featuredImage": {
    "url": "https://cdn.example.com/image.webp",
    "alt": "Core Web Vitals dashboard"
  },
  "tags": ["seo", "performance"],
  "publishedAt": "2026-03-23T12:00:00.000Z"
}
FieldTypeDescription
idstringUnique article identifier
titlestringArticle title
slugstringURL-friendly slug
htmlstringFull HTML content including table of contents
excerptstringShort summary (falls back to meta description)
metaTitlestring | nullSEO title
metaDescriptionstring | nullSEO description
featuredImageobject | null{ url, alt? } — featured image details
tagsstring[]Article tags
publishedAtstringISO 8601 publish timestamp

Signature verification

If you add a secret during setup, Kitful signs every request with an X-Kitful-Signature header so your receiving system can verify it came from Kitful.

Header format: X-Kitful-Signature: sha256={hex_signature}

Kitful computes an HMAC-SHA256 hash of the raw JSON request body using your secret as the key.

Verify in Node.js

import crypto from 'node:crypto';

function verifyKitfulSignature(body, secret, signatureHeader) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  return signatureHeader === `sha256=${expected}`;
}

// In your request handler:
const raw = await request.text();
const sig = request.headers.get('X-Kitful-Signature');
if (sig && !verifyKitfulSignature(raw, YOUR_SECRET, sig)) {
  return new Response('Invalid signature', { status: 401 });
}
const payload = JSON.parse(raw);

Verify in Python

import hmac, hashlib

def verify_kitful_signature(body: bytes, secret: str, signature_header: str) -> bool:
    expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
    return signature_header == f"sha256={expected}"

Publish an article manually

  1. Open the article in Kitful.
  2. Click Publish.
  3. Choose your webhook integration.
  4. Confirm the publish.

Use Webhooks with Autoblog

  1. Open Autoblog.
  2. Create a campaign or edit an existing one.
  3. Choose your webhook integration in Campaign Configuration.
  4. Save or launch the campaign.

Troubleshooting

Failed to create integration

  • Confirm the webhook URL is a valid https:// address.
  • Make sure the integration name is not already being used in the same workspace.

Webhook returns 401 or 403

  • Check the receiving service's authentication rules.
  • If you use a secret, confirm both sides are using the same value.

Webhook returns 404

  • Double-check the exact webhook path.
  • Make sure the receiving endpoint is live and publicly reachable.

Publishing fails with a non-2xx response

  • Check the receiving service logs.
  • Make sure the destination only returns success after it accepts the article.

On this page