Recipes
Alert when anyone consumes a message your service produces
Use the produces: prefix to scope a rule to all messages sent by a given service. This is the recommended pattern for service owners who want visibility into downstream adoption.
rules:
- name: orders-service-consumer-changes
when:
- consumer_added
- consumer_removed
resources:
- produces:OrdersService
actions:
- type: webhook
url: $SLACK_WEBHOOK_URL
headers:
Authorization: Bearer $API_TOKEN
Alert when a producer stops producing a message your service depends on
Use consumes: to watch all messages a service receives, then trigger on producer_removed. This catches upstream breaking changes before they affect your service.
rules:
- name: payment-service-upstream-removed
when:
- producer_removed
resources:
- consumes:PaymentService
actions:
- type: console
- type: webhook
url: $PAGERDUTY_WEBHOOK_URL
A collection of examples of common governance configurations you can copy and adapt.
Alert when a message gets a new consumer
Useful when you own a message and want to know when other teams start depending on it.
rules:
- name: new-consumer-for-payment-processed
when:
- consumer_added
resources:
- message:PaymentProcessed
actions:
- type: webhook
url: $SLACK_WEBHOOK_URL
Alert when a message gets a new producer
Useful for messages that should only ever have one authoritative producer.
rules:
- name: new-producer-for-order-created
when:
- producer_added
resources:
- message:OrderCreated
actions:
- type: console
- type: webhook
url: $SLACK_WEBHOOK_URL
Track all changes across the catalog
The "*" wildcard matches every consumer and producer change. Useful for audit logs or a central ops channel.
rules:
- name: catalog-wide-relationship-changes
when:
- consumer_added
- consumer_removed
- producer_added
- producer_removed
resources:
- "*"
actions:
- type: webhook
url: $AUDIT_WEBHOOK_URL
Monitor all changes for a specific service
Use the service: prefix to watch any consuming or producing change that involves a named service, regardless of which message is affected.
rules:
- name: notification-service-changes
when:
- consumer_added
- consumer_removed
- producer_added
- producer_removed
resources:
- service:NotificationService
actions:
- type: console
- type: webhook
url: $SLACK_WEBHOOK_URL
Get notified when a message your service consumes is deprecated
Use consumes: with message_deprecated to alert your team when an upstream producer deprecates a message you depend on. This is the most useful deprecation pattern for consumer teams.
rules:
- name: alert-deprecated-messages
when:
- message_deprecated
resources:
- "consumes:InventoryService"
actions:
- type: console
- type: webhook
url: $SLACK_WEBHOOK_URL
Watch a specific message for deprecation
Use message: to monitor a single message across any of its producers.
rules:
- name: watch-order-placed-deprecation
when:
- message_deprecated
resources:
- "message:OrderPlaced"
actions:
- type: webhook
url: $TEAM_WEBHOOK_URL
Track all deprecations across the catalog
The "*" wildcard catches every deprecation in the catalog. Useful for a central ops channel or audit log.
rules:
- name: catalog-wide-deprecation-alerts
when:
- message_deprecated
resources:
- "*"
actions:
- type: console
- type: webhook
url: $AUDIT_WEBHOOK_URL
Alert when a message schema changes
Use schema_changed to detect when the schema file for any message is added, modified, or replaced. This is useful for catching breaking changes before they propagate to consumers.
rules:
- name: schema-change-alerts
when:
- schema_changed
resources:
- "*"
actions:
- type: console
- type: webhook
url: $SLACK_WEBHOOK_URL
Alert when a schema changes for messages your service consumes
Use consumes: with schema_changed to scope alerts to only the messages your service depends on.
rules:
- name: payment-service-schema-changes
when:
- schema_changed
resources:
- consumes:PaymentService
actions:
- type: webhook
url: $PAGERDUTY_WEBHOOK_URL
Watch a specific message for schema changes
Use message: to monitor schema changes for a single message across any of its producers.
rules:
- name: order-created-schema-watch
when:
- schema_changed
resources:
- message:OrderCreated
actions:
- type: console
- type: webhook
url: $TEAM_WEBHOOK_URL
Block CI when a payment-critical schema changes
Combine type: fail with schema_changed and service-scoped resource filters to require sign-off before a schema change can merge.
rules:
- name: payment-schema-guard
when:
- schema_changed
resources:
- consumes:PaymentService
- consumes:BillingService
- message:PaymentProcessed
- message:OrderCreated
actions:
- type: console
- type: webhook
url: $SLACK_ALERTS_WEBHOOK
headers:
Authorization: Bearer $SLACK_TOKEN
- type: fail
message: "Schema change impacts payment services. Requires sign-off from @payments-team."
Block CI when a consumer is silently removed
Use consumer_removed with type: fail to ensure consumer removals are never merged without a migration ticket.
rules:
- name: consumer-removal-guard
when:
- consumer_removed
resources:
- "*"
actions:
- type: console
- type: fail
message: "Removing a consumer is a breaking change. Open a migration ticket first."
Block CI on deprecation without a replacement
Pair message_deprecated with type: fail to enforce that deprecations are reviewed before merging.
rules:
- name: deprecation-review-gate
when:
- message_deprecated
resources:
- "*"
actions:
- type: console
- type: fail
message: "Deprecations require a migration guide before merging. See CONTRIBUTING.md."
Notify on some changes, block on others
Rules without type: fail always exit 0, so you can mix notification-only rules with blocking rules in the same file.
rules:
# Blocks CI — schema changes to payment-critical messages
- name: payment-schema-guard
when:
- schema_changed
resources:
- consumes:PaymentService
actions:
- type: console
- type: fail
message: "Schema change impacts payment services. Requires sign-off from @payments-team."
# Notifies only — new consumers are welcome but the team wants visibility
- name: notify-new-consumers
when:
- consumer_added
resources:
- "*"
actions:
- type: console
- type: webhook
url: $SLACK_NOTIFICATIONS_WEBHOOK
Future changes
We are working on adding new change detection features to EventCatalog, if you have any ideas or feedback please let us know on Discord or raise an issue on GitHub.