Two part series about how we built incident.io workflows. Part one explains core concepts used across the feature, and look at how code structure makes development easy. Followed by a deep-dive into the Workflow Builder (the configuration UI) showing how the concepts are exposed in APIs, and used to power the frontend. Part two describes the workflow executor, showing how it listens for workflow triggers and if the conditions match, executes them. Finally, we reflect on whether we succeeded i...