Model the relationships
Relationships come from attributes whose type is another catalog type. When you add an attribute to a catalog type, the Reference types include your own catalog types and the ones incident.io provides, such as:- Slack Channel and Microsoft Teams Channel, for where a team talks
- Slack User Group, for who to invite
- Escalation Path and Schedule, for who to page
- User, for a specific person
Follow relationships in workflows
When a workflow step or condition asks for a value, the variable picker lets you step through an entry’s attributes. For example, to invite the teams that own the affected services, pick Incident → Affected services → Owning team → Slack user group in the Invite user or group to the incident’s channel step. Use the arrow keys, or click an item, to move in and out. The picker only lists variables that fit the field, so a path can seem to be missing:- Anything reached through a multi-value field is a list. An incident can have several affected services, so Affected services → Owning team → Slack channel is a list of channels. It appears in steps that take several values, but not in a step that takes one channel, like Send message to a channel. For those, choose what you want to happen: a loop runs the step For each value of the list, like posting in every affected team’s channel, and a Query ending in First picks one value, like a single channel to post in.
- The picker goes a few levels deep. For a longer path, use a Query expression, which can follow as many links as you need.
- The trigger decides what’s available. An incident trigger can’t see an alert’s attributes. To use those, start the workflow from an alert is attached to an incident instead.
Query expressions
When you need to do more than follow a link, add a Query expression. See How to use Workflow Expressions. A Query starts from a value and applies steps in order:- Navigate follows an attribute to a related entry, like from a service to its team. From a list, it returns a list.
- Filter keeps the entries that match your conditions.
- First, Maximum, Minimum, and Random pick one entry from a list.
- Count and Sum turn a list into a number.
- Merge combines the result with another variable of the same type.
Templates
Several workflow templates are built this way, including Notify responders about new incidents, Invite the affected team to an incident, and Escalate via incident.io. When you create one, it finds a path through your Catalog from the incident to the channel, user group, or escalation path it needs.Follow relationships in alert routes
When your alert attributes are Catalog-backed, an alert route can use them the same way. Under How should alerts be escalated?, choose to escalate using the alert’s attributes, and the route suggests paths from the alert to an escalation path, like Alert → Team → Escalation path. See Alerts and teams for a walkthrough. The route’s incident template can set custom fields from the alert’s attributes too, so incidents created from alerts arrive with their affected services and teams already filled in. This depends on the alert’s attribute matching a catalog entry:- The value must match exactly. It’s compared, case-sensitively, with each entry’s ID, external ID, and aliases, and with its name if the catalog type has Reference entries by name turned on. If more than one entry matches, the external ID wins, then an alias, then the name.
- If nothing matches, the attribute is left empty, without an error. Anything the route derives from it is empty too, so no one is paged from that path.