How to read BPMN events
Every BPMN event has two visual properties:
- 1.Circle border tells you the position: thin = start, double = intermediate, bold = end.
- 2.Icon inside tells you the type: envelope = message, clock = timer, lightning = error, and so on.
Additionally, a filled (solid) icon means the event throws (sends something). An outline icon means it catches (waits for something).
Start events
Thin circle — What triggers the process.
Intermediate events
Double circle — Something happens during the process.
Boundary events
Double circle on task border — An event that happens while a task or sub-process is running.
End events
Bold circle — How the process (or a path) finishes.
Interrupting vs non-interrupting
Boundary events and event sub-process start events can be either interrupting or non-interrupting:
Interrupting (solid border)
Cancels the activity it is attached to. The normal flow stops, and the exception path takes over. Example: an error boundary event on a sub-process.
Non-interrupting (dashed border)
Triggers a parallel path without stopping the activity. Both the normal flow and the event path run concurrently. Example: a timer that sends reminders every 24 hours.
Which events do I actually need?
BPMN defines many event types, but most processes only use a few:
Start with the basics and add event types only when the process requires them.
Related guides
Keep learning
Frequently asked questions
How many event types are there in BPMN?▼
BPMN 2.0 defines 13 event types (none, message, timer, error, escalation, cancel, compensation, conditional, link, signal, terminate, multiple, parallel multiple). Combined with three positions (start, intermediate, end) and throw/catch, this creates over 50 possible event variants.
What is the difference between a message event and a signal event?▼
A message is point-to-point — sent to a specific recipient. A signal is a broadcast — every process listening for that signal receives it. Think email (message) vs announcement over the intercom (signal).
What is a boundary event?▼
A boundary event is attached to the border of a task or sub-process. It triggers when something happens while that activity is running — for example, a timer boundary event fires if the task takes too long.