Guides

Subscription Filters

Beyond picking an Event Type, a Subscription can conditionally receive events based on the payload itself — e.g. only order.created events where amount > 100. This is different from Payload Transforms, which reshape what's delivered — a filter decides whether it's delivered at all.

Evaluated before a job is ever queued

Event published filter evaluated at fan-out match → delivery job created no match → skipped, no queue slot used

A filtered-out event never becomes a Delivery Attempt at all — it's not "delivered and ignored," it's never enqueued in the first place.

Three ways a Subscription can target events

Exact Event Type
The default — subscribe to one specific type, e.g. order.created.
Event Type prefix
Subscribe to every type starting with a prefix, e.g. order. matches order.created, order.updated, order.cancelled — useful when you don't want to manage a Subscription per sub-type.
Payload filter expression
Combine with either of the above (or with the wildcard) to further narrow by payload content.

Filter expression syntax

Filters use the same JSONata language as Payload Transforms, evaluated as a boolean.

Example expressions
status = "paid"
order.status = "paid"
amount > 100
status != "cancelled"
A malformed or failing expression means "no match," not an error surfaced to you. The Subscription is silently skipped for that event rather than blocking fan-out for every other Subscription — write and test your filter carefully, since a typo fails closed.