Filter Webhooks

Filter a Webhook Payload and Forward Only What Matters

Only send the events that matter. Filter incoming webhooks by event type, product name, customer email, amount, status, or any payload field — then forward matching webhooks to Slack, your CRM, or any URL.

Why filter incoming webhooks?

Most providers fire a webhook for every event, whether or not you care about it. A payment processor sends one for every charge, refund, and dispute; a store sends one for every order, cancellation, and inventory change. If your downstream tool receives all of them, you get noise, wasted processing, and Slack channels nobody reads.

Conditional webhook forwarding fixes this: NodeTrigger evaluates a filter rule against each incoming payload and forwards the event only when it matches. You decide what "matters" — a specific event type, a product name, an amount over a threshold, a status of paid, a country, or any JSON field in the body.

Rule of thumb: route a webhook based on payload, not just on which provider sent it. That is the difference between a dumb relay and a real webhook router.

What you can filter on

NodeTrigger reads any field in the JSON body using a dot path, then applies an operator:

  • Filter by event typetype equals checkout.session.completed
  • Filter by JSON fielddata.object.status equals paid
  • Filter by product nameline_items.0.name contains Pro Plan
  • Filter by amountamount greater than 10000
  • Filter by customer emailcustomer.email ends with @acme.com
  • Filter by presence — a field exists (or does not)

Operators include equals, contains, exists, greater/less than, in-list, and regex — plus their negations. Combine several conditions and match all (AND) or any (OR). The full operator reference is in the Filter Rules documentation.

Example: forward a webhook only if it is a completed high-value order

Say you only want to alert your sales team when a paid order is worth more than €100. Point the store's webhook at your NodeTrigger URL and add a filter:

Match ALL of:
  status            equals         "paid"
  total_price       greater than    100
  currency          equals         "EUR"

→ forward to  Slack #big-orders
→ forward to  HubSpot deal webhook

Everything else is received, logged, and dropped from forwarding — so your destinations only ever see the events you asked for. From here you can also fan the same matching event out to multiple destinations.

Filter, then reshape

Filtering decides whether an event is forwarded; transformation decides what shape it arrives in. After a webhook passes your filter, you can map fields, add static values, and redact sensitive keys so each destination receives exactly the payload it expects. See Payload Transformation for the mapping syntax.

Frequently asked questions

Can I filter a webhook by a nested JSON field?

Yes. Use a dot path such as data.object.customer.email to reach any nested value, then pick an operator.

Can I forward a webhook only if a condition is true?

That is exactly what a filter rule does. If the payload does not match, the event is logged but not forwarded.

Can I combine multiple conditions?

Yes — match ALL conditions (AND) or ANY condition (OR), with operators like equals, contains, greater than, in-list, and regex.

Is filtering available without code?

Yes. Filters are built on a visual canvas; no scripting required. See the docs.

Send only the webhooks that matter

Filter incoming payloads by any field and forward matching events to Slack, CRMs, or any URL.