Webhook to Slack, Discord & Teams Formatter
Free online formatter that turns a raw webhook payload into a clean Slack, Discord or Microsoft Teams message. Paste your JSON, template the message with {{ field }} placeholders, build a rich embed, then send a live test to your webhook URL — or copy a Webhook Relay transform function that does the same conversion automatically, in flight. No signup.
More than a manual message builder. Tools like Discohook build one Discord message by hand. This turns any provider's webhook — Stripe, GitHub, a CI job, your own app — into a Slack, Discord or Microsoft Teams message automatically.
Use {{ path.to.field }} to insert values from the payload above — e.g. {{ data.order_id }}.
Embed details (optional)
Sent server-side through Webhook Relay (no browser CORS errors). Your URL isn't stored. Only Slack, Discord and Teams webhook hosts are accepted.
Do it automatically with Webhook Relay
Attach this JavaScript transform function to a Webhook Relay output and every webhook is reshaped into a Slack message in flight — point any provider at your Webhook Relay URL and it arrives in Slack already formatted.
// Webhook Relay transform: format incoming webhooks into a Slack message.
// Attach it to the output/destination in Webhook Relay.
var input = JSON.parse(r.body || "{}");
function get(obj, path) {
var v = String(path).split(".").reduce(function (o, k) {
return (o == null) ? undefined : o[k];
}, obj);
// Match the live preview: a missing path renders as empty, not "undefined".
return (v == null) ? "" : v;
}
var title = `🛒 New order #${get(input, "data.order_id")}`;
var message = `New order from ${get(input, "data.customer")}`;
var author = `${get(input, "event")}`;
var footer = `via Webhook Relay`;
var fields = [
{ name: `Amount`, value: `${get(input, "data.amount")} ${get(input, "data.currency")}`, inline: true },
{ name: `Status`, value: `${get(input, "data.status")}`, inline: true }
];
var attachment = { color: "#5865F2", fallback: title, title: title, text: message };
attachment.author_name = author;
attachment.fields = fields.map(function (f) { return { title: f.name, value: f.value, short: f.inline }; });
attachment.footer = footer;
var payload = { text: title, attachments: [attachment] };
r.setBody(JSON.stringify(payload));
r.setHeader("Content-Type", "application/json");Create a free account → then see webhook to Slack, Discord or Microsoft Teams for the full setup.
FAQ
How is this different from Discohook?
Discohook is a manual composer for a single Discord message. This formatter maps an incoming webhook payload from any provider into a Slack, Discord or Microsoft Teams message with {{ field }} templates — and can run that same conversion automatically on your live webhooks via a Webhook Relay transform function.
How do I send a webhook to Slack, Discord or Teams?
Each platform accepts an incoming webhook URL that expects a specific JSON shape. Paste your source payload here, template the message, build the embed, then either paste your webhook URL and hit “Send test”, or attach the generated Webhook Relay transform function to convert live webhooks automatically.
What is the {{ field }} syntax?
It is a placeholder that pulls a value out of the JSON payload by dotted path. {{ data.order_id }} reads the order_id inside the data object. It works in the title, message, author, footer, image URL and every field. Anything not wrapped in braces is used literally.
Is “Send test” safe — do you store my webhook URL?
No. The test send is proxied server-side through Webhook Relay only so your browser avoids CORS errors; the URL and payload are forwarded once and not stored. Only Slack, Discord and Microsoft Teams webhook hosts are accepted, and the endpoint is rate limited per IP.
Do I need an account?
No — the formatter, preview and test send are completely free and need no signup. To run the conversion automatically on your real webhooks, create a free Webhook Relay account and attach the transform function to an output.
