Integrations
Connect MisarBlog to n8n, Zapier, Make, and any HTTP endpoint using outbound article webhooks.
Overview
MisarBlog fires outbound webhooks for every article event (article.published, article.updated, article.deleted). Configure a single HTTPS URL in your dashboard and route events to any platform.
Webhook Reference
Full payload schema, request headers, and delivery details.
Dashboard → Integrations
Configure your webhook URL here.
n8n
Create a Webhook Trigger
In n8n, create a new workflow and add a Webhook trigger node. Set the HTTP method to POST.
Copy the webhook URL
Copy the unique webhook URL n8n provides and activate the trigger.
Paste into MisarBlog
Go to misar.blog/dashboard/integrations, paste the URL into the Webhook URL field, and click Save.
Add downstream nodes
Connect nodes to post to Slack, update a Notion database, schedule Buffer posts, and more.
Route by event type
Add an IF node that checks {{ $json.event }} to handle article.published, article.updated, and article.deleted differently in the same workflow.
Every request includes the X-Webhook-Event header with the event name (e.g. article.published). Use it in n8n's Header Auth or IF node conditions for instant routing without parsing the body.
Zapier
Create a new Zap
In Zapier, create a new Zap and choose Webhooks by Zapier as the trigger app.
Select "Catch Hook"
Set the trigger event to Catch Hook and click Continue.
Copy the webhook URL
Copy the unique webhook URL Zapier generates.
Paste into MisarBlog
Go to misar.blog/dashboard/integrations, paste the URL, and click Save.
Send a test payload
Publish a test article to send a live payload to Zapier. Zapier will detect the fields automatically.
Set up your action
Use article fields (title, slug, tags, canonical_url) in your Zap action steps and turn the Zap on.
Common Zap ideas:
canonical_urlarticle.publishedMake (formerly Integromat)
Add a Webhook module
In Make, create a new scenario and add the Webhooks → Custom webhook module as the trigger.
Copy the webhook URL
Click Add to create a new webhook and copy the URL Make provides.
Paste into MisarBlog
Go to misar.blog/dashboard/integrations, paste the URL, and click Save.
Determine data structure
Publish a test article. Make will auto-detect the payload structure from the received webhook — click Re-determine data structure if needed.
Add downstream modules
Chain modules to update a Google Sheet, create Airtable records, or post to social platforms.
Custom HTTP Endpoint
Any server that accepts HTTPS POST requests with a JSON body works. See the Webhook Reference for the full payload schema.
import { type NextRequest, NextResponse } from "next/server";
interface WebhookPayload {
event: "article.published" | "article.updated" | "article.deleted";
timestamp: string;
article: {
id: string;
slug: string;
title: string;
excerpt: string | null;
content_html: string | null;
tags: string[] | null;
published_at: string | null;
updated_at: string | null;
canonical_url: string | null;
};
author: {
username: string;
display_name: string | null;
};
}
export async function POST(req: NextRequest) {
const event = req.headers.get("x-webhook-event");
const payload = (await req.json()) as WebhookPayload;
switch (event) {
case "article.published":
// sync to your CMS, notify subscribers, etc.
console.log("New article:", payload.article.title);
break;
case "article.updated":
console.log("Article updated:", payload.article.slug);
break;
case "article.deleted":
console.log("Article removed:", payload.article.id);
break;
}
return NextResponse.json({ ok: true }); // respond within 10 s
}from fastapi import FastAPI, Request
app = FastAPI()
@app.post("/webhook")
async def receive_webhook(request: Request):
event = request.headers.get("x-webhook-event")
payload = await request.json()
if event == "article.published":
print("New article:", payload["article"]["title"])
elif event == "article.updated":
print("Updated:", payload["article"]["slug"])
elif event == "article.deleted":
print("Deleted:", payload["article"]["id"])
return {"ok": True}