Integrations
Connect a webhook
Send finished articles to a custom HTTPS endpoint and verify signed requests.
Use a webhook when another system should receive finished articles and no built-in destination fits the workflow.
Connect a webhook
You need a public HTTPS endpoint. You can also add a shared secret for signed requests.
- Open Integrations.
- Click Add on Webhook.
- Enter Integration Name, Webhook URL, and an optional Secret.
- Click Save.
Request format
Kitful sends a POST request with Content-Type: application/json.
{
"id": "01EXAMPLEARTICLE",
"title": "How to plan a CRM migration",
"slug": "plan-a-crm-migration",
"html": "<h2>Plan the migration</h2><p>...</p>",
"excerpt": "A practical migration plan for growing teams.",
"metaTitle": "How to Plan a CRM Migration",
"metaDescription": "Prepare data, people, and timing for a safer CRM move.",
"featuredImage": {
"url": "https://cdn.example.com/crm-migration.webp",
"alt": "CRM migration planning board"
},
"tags": ["crm", "operations"],
"publishedAt": "2026-07-20T09:00:00.000Z"
}
Fields that are not set can be empty or null. Treat the article ID as an opaque identifier.
Verify a signed request
When a secret is set, each request includes:
X-Kitful-Signature: sha256={hex_signature}
The value is an HMAC-SHA256 signature of the raw JSON body using your secret.
import crypto from 'node:crypto';
function isValidKitfulRequest(rawBody, secret, signature) {
const digest = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
return signature === `sha256=${digest}`;
}
Verify the signature before parsing or acting on the payload. Compare signatures in constant time when your runtime provides that option.
Publish through the webhook
Choose the webhook from an article's Publish dialog, a scheduled slot, or campaign settings. The receiving endpoint must return a successful status only after it accepts the article.
Troubleshoot webhooks
- For 401 or 403 responses, check the receiving service's authentication and shared secret.
- For a 404 response, check the exact endpoint path.
- For another non-success response, inspect the receiving service logs, fix the endpoint, and publish again.