Metafinite LogoMetafinite

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"
  }'

Response:

{
  "endpoint_id": "ep_01abc123def456",
  "proxy_url": "https://metafinite.com/p/ep_01abc123def456",
  "status": "active"
}

API demo

See the full flow in 10 seconds.

Create an endpoint, send a webhook, get a routing decision. This is the complete Metafinite workflow.

Start with one endpoint.

Free tier includes 1,000 events and 3 routing rules. No credit card. Takes 5 minutes from signup to first routed webhook.

Create a free account