Filter and route webhooks with plain English rules.
Point Stripe, GitHub, or Shopify at a Metafinite URL. Write a routing rule in plain English. Every incoming payload is checked against your rule — FORWARD to your server or DROP at the edge. When providers rename fields, your rule keeps working.
You write the rule. You set the thresholds. We evaluate every payload against exactly what you wrote.
Without Metafinite
// Your webhook handler — breaks when Stripe renames a field
app.post('/webhook', (req, res) => {
const p = req.body
if (
p.type === 'invoice.payment_failed' &&
p.amount_due > 4000 && // Stripe renamed this in Jan 2024
p.data?.object?.status === 'open' // and moved this in Mar 2024
) {
alertTeam(p)
}
res.sendStatus(200)
})
Silent failure. You find out from a customer, not a monitor.
With Metafinite
# 1. Create an endpoint (once)
curl -X POST https://metafinite.com/endpoints \
-H "Authorization: Bearer mf_live_..." \
-d '{"rule_text": "forward if payment failed and amount over $40",
"destination_url": "https://your-api.com/hooks"}'
# 2. Give Stripe the proxy URL — done.
# proxy_url: https://metafinite.com/p/ep_01abc123
# 3. Every matching payload arrives at your server.
# Every non-matching payload is dropped at the edge.
# Your rule survives field renames.
Change the rule in your dashboard. No deploy needed.
What you replace
BEFORE — regex hell
if (payload.type === 'invoice.payment_failed' &&
payload.amount_due > 4000 &&
payload.data?.object?.customer_email?.includes('@')) {
// Stripe renamed amount_due → amount in Jan 2024
// Your alerts went silent for 6 days
await slack.post('#churn', payload)
}
Brittle. Breaks when providers rename a field. Silent failures.
AFTER — one line
POST /endpoints
{
"rule_text": "forward if payment failed and amount over $40"
}
// { "decision": "FORWARD", "reasoning": "..." }
Schema-resilient. No deploy needed. Never silently fails.
Try it now
Route a webhook in your browser.
No account. Pick a preset, describe your rule, see the routing decision.
How it works
You set the rules. We check every payload against them.
The routing engine does not invent thresholds or make business decisions. It reads your rule exactly as written and checks whether the incoming payload matches it. 'Forward if amount over $40' means $40.00 — not $400, not $40,000. You wrote it. You can change it. We execute it.
Your rule, exactly as written
When you write 'forward if payment failed and amount over $40', the engine checks: is the payment status failed? Is the amount over 40? It does not interpret, expand, or change your rule.
Same payload, same decision
The routing decision is deterministic. Send the same payload to the same endpoint with the same rule and you get the same FORWARD or DROP result, every time. No randomness.
You can see the reasoning
Every decision includes a written explanation in your Live Tail: 'Payment of $55 exceeds the $40 threshold.' If the reasoning ever looks wrong, rewrite the rule to be more specific.
You own the rules. We run them.
Metafinite does not make decisions. It executes yours. The routing rule you write is stored separately from incoming payloads — nothing an attacker sends can change it. Every decision is auditable.
DETERMINISTIC
Same input, same output
The routing engine produces a boolean: FORWARD or DROP. Send the same payload to the same endpoint with the same rule and you get the same result. No randomness, no drift.
AUDITABLE
Every decision is explained
Every FORWARD and DROP includes a written reasoning: 'Payment of $55 exceeds the $40 threshold in your rule.' You can verify every decision in your Live Tail. If a decision looks wrong, the reasoning tells you why.
ISOLATED
Rules cannot be injected
Your routing rules are stored separately and set by you. Incoming webhook payloads are read-only data — they cannot modify, override, or influence your rules. An attacker sending a crafted payload cannot change how your rules evaluate future requests.
IN DEVELOPMENT
MCP server
When released: configure Metafinite endpoints directly from Cursor, Claude Code, or any MCP-compatible tool using your existing token. Sign up at /beta to be notified.
REST API
Full integration in 5 minutes.
Works from curl, your backend, a CI pipeline, or any HTTP client.
curl -X POST https://metafinite.com/endpoints \
-H "Authorization: Bearer mf_live_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Stripe High-Value Failures",
"destination_url": "https://api.you.com/hooks",
"rule_text": "forward if amount > 1000 and status is failed"
}'