Skip to main content

How Webhook Event Filters Work

Event filters help you narrow a webhook subscription beyond event type alone. Instead of sending every asset.status.changed event or every visitor.checked_in event, you can limit deliveries to the exact assets, locations, sites, bookings, work orders, or quotations that matter to your integration.

Where Filters Appear

In both webhook management experiences, the filter UI appears after you select at least one event type.

  • New workspace flow: filters appear inside the create or edit form under Event filters
  • Classic workspace flow: create uses the same Event filters section, and detail view can also open Edit Filters

If no relevant fields are configured, the webhook summary shows All matching events.

Which Filter Fields Show Up

Infodeck only shows the filter fields that are meaningful for the selected event types.

Event familyAvailable filter fields
asset.*assetId, locationId, assetTypeId
workorder.*workOrderId, locationId, assetId
booking.*siteId, resourceId
visitor.*siteId
sor.schedule.publishedsorScheduleId
sor.quotation.*quotationId, sorScheduleId, workOrderId

Matching Rules

Webhook filtering uses:

  • AND across fields
  • OR within one field list

That means:

  • locationId = [loc_hq, loc_east] matches either location
  • locationId = [...] plus assetId = [ast_01] requires both the location rule and the asset rule to match
  • if a configured field is missing from the event, that event does not match

Input Rules

  • Enter IDs separated by commas or line breaks
  • Repeated IDs are automatically normalized to a unique list
  • Empty filter fields are ignored
  • V1 allows up to 50 IDs per filter field

Practical Examples

Example 1: Monitor one AHU in two locations

Select:

  • asset.status.changed
  • asset.telemetry.updated

Then add:

  • assetId: ast_ahu_01
  • locationId: loc_hq_l1, loc_hq_l2

Result: the webhook fires only when ast_ahu_01 belongs to one of those locations.

Example 2: Receive all visitor activity for one site

Select:

  • visitor.registered
  • visitor.checked_in
  • visitor.checked_out

Then add:

  • siteId: site_main_lobby

Result: all three visitor events are delivered for that one site only.

Example 3: Receive only quotation approvals for one work order

Select:

  • sor.quotation.approved

Then add:

  • workOrderId: wo_12345

Result: only approvals related to that work order are delivered.

Wildcard Subscriptions

If you subscribe to *, the webhook can receive every supported event type. Filters still apply.

Example:

  • events: ["*"]
  • filters: siteId = ["site_hq"]

This webhook does not receive every event in the organization. It only receives the events whose internal filter context includes siteId = site_hq.

When to Leave Filters Blank

Leave filters blank when:

  • your endpoint should receive every selected event type
  • your downstream system decides which records to keep
  • you are starting with a small integration and want to verify the flow first

Add filters when:

  • one endpoint serves a narrow scope, such as one site or one contractor workflow
  • you want to reduce downstream traffic and noise
  • you need separate webhook endpoints for different business areas
Was this page helpful?