# ZenUML Sequence Diagrams in Confluence: Copy-Paste Guide

September 24, 2026 ·

<!-- -->

4 min read

[NGPilot](https://ngpilot.com)

Sequence diagrams die in Confluence in one of two ways: someone draws one in a diagramming tool, exports a PNG, pastes it into a page — and three sprints later the flow has changed but the image has not. Or someone writes the flow as prose ("the client calls the order service, and if payment is approved…"), which is accurate but impossible to read under time pressure.

ZenUML splits the difference: the diagram *is* code, so it edits like code and renders like a diagram — branches, error paths, and parallel work included. This guide shows the syntax with copy-paste examples you can drop into Confluence today.

**Quick answer:** To create ZenUML sequence diagrams in Confluence, install [Enhanced Markdown for Confluence](https://marketplace.atlassian.com/apps/1237026/enhanced-markdown-for-confluence) and use a ` ```zenuml ` fence in its Markdown macro. ZenUML renders UML sequence diagrams with real control flow — `if/else`, `try/catch`, `par`, `while` — in the browser, fully inside Confluence. Free for up to 10 users.

## The First Diagram — Checkout with a Branch[​](#the-first-diagram--checkout-with-a-branch "Direct link to The First Diagram — Checkout with a Branch")

Paste this into a ` ```zenuml ` fence:

````
```zenuml

participant User

participant Checkout

participant PaymentProvider

User->Checkout: submit order

Checkout->PaymentProvider: charge card

if (payment approved) {

  Checkout-->User: confirmation page

} else {

  Checkout->PaymentProvider: retry with backoff

  Checkout-->User: "will confirm by email"

}

```
````

![ZenUML checkout sequence with if/else branch rendered in Confluence](data:image/svg+xml;base64,PHN2ZyBpZD0iYmxvZy1zdmctYzVpOXZqbzNhbyIgd2lkdGg9IjEwMCUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBtYXgtd2lkdGg6IDU4OS41cHg7IiB2aWV3Qm94PSIwIDAgNTg5LjUgNDQxIiByb2xlPSJncmFwaGljcy1kb2N1bWVudCBkb2N1bWVudCIgYXJpYS1yb2xlZGVzY3JpcHRpb249InplbnVtbCI+PGRlZnM+CiAgPHN0eWxlPgogIC5mcmFtZS1ib3JkZXItb3V0ZXIgeyBmaWxsOiAjNjY2OyB9CiAgLmZyYW1lLWJvcmRlci1pbm5lciB7IGZpbGw6ICNmZmZmZmY7IH0KICAuZnJhbWUtaGVhZGVyLWJnIHsgZmlsbDogI2ZmZmZmZjsgfQogIC5mcmFtZS1oZWFkZXItbGluZSB7IHN0cm9rZTogIzY2Njsgc3Ryb2tlLXdpZHRoOiAxOyBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7IH0KICAuZnJhbWUtdGl0bGUgeyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBWZXJkYW5hLCBzZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNjAwOyBmaWxsOiAjMjIyOyB9CiAgLnBhcnRpY2lwYW50LWJveCB7IGZpbGw6ICNmZmZmZmY7IHN0cm9rZTogIzY2Njsgc3Ryb2tlLXdpZHRoOiAyOyB9CiAgLnBhcnRpY2lwYW50LWxhYmVsIHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZmlsbDogIzIyMjsgfQogIC5wYXJ0aWNpcGFudC1pY29uIHsgY29sb3I6ICMyMjI7IH0KICAucGFydGljaXBhbnQtaWNvbiBbZmlsbD0iY3VycmVudENvbG9yIl06bm90KFtzdHJva2VdKSB7IHN0cm9rZTogIzY2Njsgc3Ryb2tlLXdpZHRoOiAxOyB9CiAgLmxpZmVsaW5lIHsgc3Ryb2tlOiAjNjY2OyBzdHJva2Utd2lkdGg6IDE7IH0KICAubWVzc2FnZS1saW5lIHsgc3Ryb2tlOiAjMDAwOyBzdHJva2Utd2lkdGg6IDI7IHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsgfQogIC5tZXNzYWdlLWxhYmVsIHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogIzIyMjsgfQogIC5hcnJvdy1oZWFkIHsgZmlsbDogIzAwMDsgc3Ryb2tlOiAjMDAwOyBzdHJva2Utd2lkdGg6IDI7IH0KICAuYXJyb3ctb3BlbiB7IGZpbGw6IG5vbmU7IH0KICAub2NjdXJyZW5jZSB7IGZpbGw6ICNkZWRlZGU7IHN0cm9rZTogIzY2Njsgc3Ryb2tlLXdpZHRoOiAyOyBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7IH0KICAuZnJhZ21lbnQtYm9yZGVyIHsgZmlsbDogbm9uZTsgc3Ryb2tlOiAjNjY2OyBzdHJva2Utd2lkdGg6IDE7IHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsgfQogIC5mcmFnbWVudC1oZWFkZXIgeyBmaWxsOiAjZGVkZWRlOyBmaWxsLW9wYWNpdHk6IDAuNDk4OyBzdHJva2U6IG5vbmU7IHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsgfQogIC5mcmFnbWVudC1sYWJlbCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGZpbGw6ICMwMDA7IH0KICAuZnJhZ21lbnQtY29uZGl0aW9uIHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogIzAwMDsgfQogIC5mcmFnbWVudC1zZXBhcmF0b3IgeyBzdHJva2U6ICNlNWU3ZWI7IHN0cm9rZS13aWR0aDogMTsgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOyB9CiAgLmZyYWdtZW50LXNlY3Rpb24tbGFiZWwgeyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBWZXJkYW5hLCBzZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiAjMDAwOyB9CiAgLnJldHVybi1saW5lIHsgc3Ryb2tlOiAjMDAwOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDYsNDsgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOyB9CiAgLnJldHVybi1hcnJvdyB7IHN0cm9rZTogIzAwMDsgc3Ryb2tlLXdpZHRoOiAyOyBmaWxsOiBub25lOyB9CiAgLnJldHVybi1sYWJlbCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZpbGw6ICMyMjI7IH0KICAucmV0dXJuLWljb24geyBmaWxsOiAjMjIyOyB9CiAgLmRpdmlkZXItbGluZSB7IHN0cm9rZTogI2FhYWEzMzsgc3Ryb2tlLXdpZHRoOiAxOyB9CiAgLmRpdmlkZXItYmcgeyBmaWxsOiAjZmZmNWFkOyBzdHJva2U6ICNhYWFhMzM7IHN0cm9rZS13aWR0aDogMTsgfQogIC5kaXZpZGVyLWxhYmVsIHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogIzMzMzsgfQogIC5jb21tZW50LXRleHQgeyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBWZXJkYW5hLCBzZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiAjMzMzOyBvcGFjaXR5OiAwLjU7IH0KICAuc2VxLW51bWJlciB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiAxMDA7IGZpbGw6ICM2YjcyODA7IH0KICAuZ3JvdXAtb3V0bGluZSB7IGZpbGw6IG5vbmU7IHN0cm9rZTogIzY2NjsgfQogIC5ncm91cC10aXRsZS1iZyB7IGZpbGw6ICNmZmZmZmY7IHN0cm9rZTogbm9uZTsgfQogIC5ncm91cC10aXRsZS10ZXh0IHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IDQwMDsgZmlsbDogIzIyMjsgfQo8L3N0eWxlPgo8L2RlZnM+CjxyZWN0IGNsYXNzPSJmcmFtZS1ib3JkZXItb3V0ZXIiIHg9IjAiIHk9IjAiIHdpZHRoPSI1ODkuNSIgaGVpZ2h0PSI0NDEiIHJ4PSI0IiBmaWxsPSIjNjY2Ij48L3JlY3Q+CjxyZWN0IGNsYXNzPSJmcmFtZS1ib3JkZXItaW5uZXIiIHg9IjEiIHk9IjEiIHdpZHRoPSI1ODcuNSIgaGVpZ2h0PSI0MzkiIHJ4PSIzIiBmaWxsPSIjZmZmIj48L3JlY3Q+CjxsaW5lIGNsYXNzPSJmcmFtZS1oZWFkZXItbGluZSIgeDE9IjEiIHkxPSIzMy41IiB4Mj0iNTg4LjUiIHkyPSIzMy41Ij48L2xpbmU+Cgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMSwgMzQpIj4KPGxpbmUgeDE9IjUwLjUiIHkxPSI2OCIgeDI9IjUwLjUiIHkyPSI0MDYiIGNsYXNzPSJsaWZlbGluZSIgc3Ryb2tlLWRhc2hhcnJheT0iNSw1IiBzdHJva2UtZGFzaG9mZnNldD0iNSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48L2xpbmU+CjxsaW5lIHgxPSIxNTAuNSIgeTE9IjY4IiB4Mj0iMTUwLjUiIHkyPSI0MDYiIGNsYXNzPSJsaWZlbGluZSIgc3Ryb2tlLWRhc2hhcnJheT0iNSw1IiBzdHJva2UtZGFzaG9mZnNldD0iNSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48L2xpbmU+CjxsaW5lIHgxPSIzMzAuNSIgeTE9IjY4IiB4Mj0iMzMwLjUiIHkyPSI0MDYiIGNsYXNzPSJsaWZlbGluZSIgc3Ryb2tlLWRhc2hhcnJheT0iNSw1IiBzdHJva2UtZGFzaG9mZnNldD0iNSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48L2xpbmU+CjxsaW5lIHgxPSI0NzYuNSIgeTE9IjY4IiB4Mj0iNDc2LjUiIHkyPSI0MDYiIGNsYXNzPSJsaWZlbGluZSIgc3Ryb2tlLWRhc2hhcnJheT0iNSw1IiBzdHJva2UtZGFzaG9mZnNldD0iNSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48L2xpbmU+CjxnIGNsYXNzPSJwYXJ0aWNpcGFudCIgZGF0YS1wYXJ0aWNpcGFudD0icGFydGljaXBhbnQiPgogIDxyZWN0IHg9IjYuMDg5ODQzNzUiIHk9IjI5IiB3aWR0aD0iODcuODIwMzEyNSIgaGVpZ2h0PSIzOCIgcng9IjMiIGNsYXNzPSJwYXJ0aWNpcGFudC1ib3giPjwvcmVjdD4KICAKICAKICAKICA8dGV4dCB4PSI1MCIgeT0iNDcuNzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiBjbGFzcz0icGFydGljaXBhbnQtbGFiZWwiPnBhcnRpY2lwYW50PC90ZXh0Pgo8L2c+CjxnIGNsYXNzPSJwYXJ0aWNpcGFudCIgZGF0YS1wYXJ0aWNpcGFudD0iVXNlciI+CiAgPHJlY3QgeD0iMTExIiB5PSIyOSIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjM4IiByeD0iMyIgY2xhc3M9InBhcnRpY2lwYW50LWJveCI+PC9yZWN0PgogIAogIAogIAogIDx0ZXh0IHg9IjE1MCIgeT0iNDcuNzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiBjbGFzcz0icGFydGljaXBhbnQtbGFiZWwiPlVzZXI8L3RleHQ+CjwvZz4KPGcgY2xhc3M9InBhcnRpY2lwYW50IiBkYXRhLXBhcnRpY2lwYW50PSJDaGVja291dCI+CiAgPHJlY3QgeD0iMjg5LjIwMzEyNSIgeT0iMjkiIHdpZHRoPSI4MS41OTM3NSIgaGVpZ2h0PSIzOCIgcng9IjMiIGNsYXNzPSJwYXJ0aWNpcGFudC1ib3giPjwvcmVjdD4KICAKICAKICAKICA8dGV4dCB4PSIzMzAiIHk9IjQ3Ljc1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgY2xhc3M9InBhcnRpY2lwYW50LWxhYmVsIj5DaGVja291dDwvdGV4dD4KPC9nPgo8ZyBjbGFzcz0icGFydGljaXBhbnQiIGRhdGEtcGFydGljaXBhbnQ9IlBheW1lbnRQcm92aWRlciI+CiAgPHJlY3QgeD0iNDA3LjY0MDYyNSIgeT0iMjkiIHdpZHRoPSIxMzYuNzE4NzUiIGhlaWdodD0iMzgiIHJ4PSIzIiBjbGFzcz0icGFydGljaXBhbnQtYm94Ij48L3JlY3Q+CiAgCiAgCiAgCiAgPHRleHQgeD0iNDc2IiB5PSI0Ny43NSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIGNsYXNzPSJwYXJ0aWNpcGFudC1sYWJlbCI+UGF5bWVudFByb3ZpZGVyPC90ZXh0Pgo8L2c+CjxnIGNsYXNzPSJtZXNzYWdlIj4KICA8bGluZSB4MT0iMTUxIiB5MT0iODciIHgyPSIzMzAiIHkyPSI4NyIgY2xhc3M9Im1lc3NhZ2UtbGluZSI+PC9saW5lPgogIDxzdmcgeD0iMzIzIiB5PSI4MiIgd2lkdGg9IjciIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCA3IDkiIG92ZXJmbG93PSJ2aXNpYmxlIiBjbGFzcz0iYXJyb3ctaGVhZCBhcnJvdy1vcGVuIj4KICAgIDxnPgogICAgICA8cGF0aCBkPSJNMSAxLjI1IEw2LjE1IDQuNSBMMSA3Ljc1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICA8L2c+CiAgPC9zdmc+CiAgPHRleHQgeD0iMjM3IiB5PSI4NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgY2xhc3M9Im1lc3NhZ2UtbGFiZWwiPnN1Ym1pdCBvcmRlcjwvdGV4dD4KICA8dGV4dCB4PSIxNDciIHk9Ijg0IiB0ZXh0LWFuY2hvcj0iZW5kIiBjbGFzcz0ic2VxLW51bWJlciI+MTwvdGV4dD4KPC9nPgo8ZyBjbGFzcz0ibWVzc2FnZSI+CiAgPGxpbmUgeDE9IjMzMSIgeTE9IjExOSIgeDI9IjQ3NiIgeTI9IjExOSIgY2xhc3M9Im1lc3NhZ2UtbGluZSI+PC9saW5lPgogIDxzdmcgeD0iNDY5IiB5PSIxMTQiIHdpZHRoPSI3IiBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgNyA5IiBvdmVyZmxvdz0idmlzaWJsZSIgY2xhc3M9ImFycm93LWhlYWQgYXJyb3ctb3BlbiI+CiAgICA8Zz4KICAgICAgPHBhdGggZD0iTTEgMS4yNSBMNi4xNSA0LjUgTDEgNy43NSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSI+PC9wYXRoPgogICAgPC9nPgogIDwvc3ZnPgogIDx0ZXh0IHg9IjQwMCIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBjbGFzcz0ibWVzc2FnZS1sYWJlbCI+Y2hhcmdlIGNhcmQ8L3RleHQ+CiAgPHRleHQgeD0iMzI3IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzZXEtbnVtYmVyIj4yPC90ZXh0Pgo8L2c+CjxnIGNsYXNzPSJtZXNzYWdlIj4KICA8bGluZSB4MT0iMzMxIiB5MT0iMjkwIiB4Mj0iNDc2IiB5Mj0iMjkwIiBjbGFzcz0ibWVzc2FnZS1saW5lIj48L2xpbmU+CiAgPHN2ZyB4PSI0NjkiIHk9IjI4NSIgd2lkdGg9IjciIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCA3IDkiIG92ZXJmbG93PSJ2aXNpYmxlIiBjbGFzcz0iYXJyb3ctaGVhZCBhcnJvdy1vcGVuIj4KICAgIDxnPgogICAgICA8cGF0aCBkPSJNMSAxLjI1IEw2LjE1IDQuNSBMMSA3Ljc1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSJub25lIj48L3BhdGg+CiAgICA8L2c+CiAgPC9zdmc+CiAgPHRleHQgeD0iNDAwIiB5PSIyODciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGNsYXNzPSJtZXNzYWdlLWxhYmVsIj5yZXRyeSB3aXRoIGJhY2tvZmY8L3RleHQ+CiAgPHRleHQgeD0iMzI3IiB5PSIyODciIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzZXEtbnVtYmVyIj4zLjI8L3RleHQ+CjwvZz4KPGcgY2xhc3M9InJldHVybiI+CiAgPGxpbmUgeDE9IjMzMCIgeTE9IjIxMyIgeDI9IjE1MSIgeTI9IjIxMyIgY2xhc3M9InJldHVybi1saW5lIj48L2xpbmU+CiAgPHBvbHlsaW5lIHBvaW50cz0iMTU2LjE1LDIwOS43NSAxNTEsMjEzIDE1Ni4xNSwyMTYuMjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgY2xhc3M9InJldHVybi1hcnJvdyI+PC9wb2x5bGluZT4KICA8dGV4dCB4PSIyNDQiIHk9IjIxMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgY2xhc3M9InJldHVybi1sYWJlbCI+Y29uZmlybWF0aW9uIHBhZ2U8L3RleHQ+CiAgPHRleHQgeD0iMTQ3IiB5PSIyMTAiIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzZXEtbnVtYmVyIj4zLjE8L3RleHQ+CjwvZz4KPGcgY2xhc3M9InJldHVybiI+CiAgPGxpbmUgeDE9IjMzMCIgeTE9IjMyMiIgeDI9IjE1MSIgeTI9IjMyMiIgY2xhc3M9InJldHVybi1saW5lIj48L2xpbmU+CiAgPHBvbHlsaW5lIHBvaW50cz0iMTU2LjE1LDMxOC43NSAxNTEsMzIyIDE1Ni4xNSwzMjUuMjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgY2xhc3M9InJldHVybi1hcnJvdyI+PC9wb2x5bGluZT4KICA8dGV4dCB4PSIyNDQiIHk9IjMxOSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgY2xhc3M9InJldHVybi1sYWJlbCI+IndpbGwgY29uZmlybSBieSBlbWFpbCI8L3RleHQ+CiAgPHRleHQgeD0iMTQ3IiB5PSIzMTkiIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzZXEtbnVtYmVyIj4zLjM8L3RleHQ+CjwvZz4KPGcgY2xhc3M9ImZyYWdtZW50IGZyYWdtZW50LWFsdCI+CiAgPHJlY3QgeD0iOTAuNSIgeT0iMTM2LjUiIHdpZHRoPSI0NjYuNSIgaGVpZ2h0PSIyMTMiIHJ4PSI0IiBjbGFzcz0iZnJhZ21lbnQtYm9yZGVyIj48L3JlY3Q+CiAgPHJlY3QgeD0iOTEiIHk9IjEzNyIgd2lkdGg9IjQ2NS41IiBoZWlnaHQ9IjI1IiBjbGFzcz0iZnJhZ21lbnQtaGVhZGVyIj48L3JlY3Q+CiAgPHN2ZyB4PSI5NSIgeT0iMTM3IiB3aWR0aD0iMjAiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+CiAgICAgIDxwYXRoIGQ9Ik0xMiA4TDIwIDEyTDEyIDE2TDQgMTJMMTIgOFoiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPgogICAgPC9zdmc+CiAgPHRleHQgeD0iMTE3IiB5PSIxNDkiIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiBjbGFzcz0iZnJhZ21lbnQtbGFiZWwiPkFsdDwvdGV4dD4KICA8dGV4dCB4PSI4NyIgeT0iMTQ1IiB0ZXh0LWFuY2hvcj0iZW5kIiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgY2xhc3M9InNlcS1udW1iZXIiPjM8L3RleHQ+CiAgPGc+PHRleHQgeD0iOTEiIHk9IjE3NyIgY2xhc3M9ImZyYWdtZW50LWNvbmRpdGlvbiI+WzwvdGV4dD48dGV4dCB4PSI5OC44OSIgeT0iMTc3IiBjbGFzcz0iZnJhZ21lbnQtY29uZGl0aW9uIiBvcGFjaXR5PSIwLjY1Ij5wYXltZW50IGFwcHJvdmVkPC90ZXh0Pjx0ZXh0IHg9IjIxOC44NTQ4NDM3NSIgeT0iMTc3IiBjbGFzcz0iZnJhZ21lbnQtY29uZGl0aW9uIj5dPC90ZXh0PjwvZz4KICA8bGluZSB4MT0iOTEiIHkxPSIyMzguNSIgeDI9IjU1Ni41IiB5Mj0iMjM4LjUiIGNsYXNzPSJmcmFnbWVudC1zZXBhcmF0b3IiPjwvbGluZT4KICA8dGV4dCB4PSI5NSIgeT0iMjU0IiBjbGFzcz0iZnJhZ21lbnQtc2VjdGlvbi1sYWJlbCI+W2Vsc2VdPC90ZXh0Pgo8L2c+CjwvZz48L3N2Zz4=)

What you get for six lines of logic: labeled participants, a synchronous call (`->`), returns (`-->`), and an `if/else` rendered as proper frames — auto-numbered, so a reader can follow the request/response pairing without guessing.

## The Syntax in One Table[​](#the-syntax-in-one-table "Direct link to The Syntax in One Table")

| Token                      | Meaning                         | Example                             |
| -------------------------- | ------------------------------- | ----------------------------------- |
| `participant X`            | Declare a participant           | `participant Checkout`              |
| `@Actor X` / `@Database X` | Annotate the participant's role | `@Database PaymentDB`               |
| `A->B: msg`                | Synchronous call                | `Checkout->PaymentProvider: charge` |
| `A-->B: msg`               | Return / reply                  | `Checkout-->User: 201 Created`      |
| `if (x) { } else { }`      | Branch frames                   | `if (approved) { ... }`             |
| `while (x) { }`            | Loop frame                      | `while (retries left) { ... }`      |
| `par { } and { }`          | Parallel blocks                 | fan-out and join                    |
| `try { } catch (E) { }`    | Error path                      | reservation failure                 |

The annotators are worth adopting on day one: `@Actor Alice` and `@Database OrdersDB` change the participant's icon, so a reader sees who is a human and who is a store before reading a single message.

## Error Paths as First-Class Citizens[​](#error-paths-as-first-class-citizens "Direct link to Error Paths as First-Class Citizens")

The example that sells most teams: an order flow where reservation can fail. In a drawing tool this is a second diagram to maintain; in ZenUML it is four lines:

````
```zenuml

participant Client

participant OrderService

participant InventoryService

Client->OrderService: POST /orders

OrderService->InventoryService: reserve(SKU-991, qty=2)

try {

  InventoryService-->OrderService: reservation #R-4821

  OrderService-->Client: 201 Created, order #A-1088

} catch (OutOfStockError) {

  OrderService-->Client: 409 Conflict, "insufficient stock"

}

```
````

![ZenUML try/catch sequence diagram for an inventory reservation](data:image/svg+xml;base64,PHN2ZyBpZD0iYmxvZy1zdmctazdhc2hpbzVwa3AiIHdpZHRoPSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgbWF4LXdpZHRoOiA3MDIuNXB4OyIgdmlld0JveD0iMCAwIDcwMi41IDQyMSIgcm9sZT0iZ3JhcGhpY3MtZG9jdW1lbnQgZG9jdW1lbnQiIGFyaWEtcm9sZWRlc2NyaXB0aW9uPSJ6ZW51bWwiPjxkZWZzPgogIDxzdHlsZT4KICAuZnJhbWUtYm9yZGVyLW91dGVyIHsgZmlsbDogIzY2NjsgfQogIC5mcmFtZS1ib3JkZXItaW5uZXIgeyBmaWxsOiAjZmZmZmZmOyB9CiAgLmZyYW1lLWhlYWRlci1iZyB7IGZpbGw6ICNmZmZmZmY7IH0KICAuZnJhbWUtaGVhZGVyLWxpbmUgeyBzdHJva2U6ICM2NjY7IHN0cm9rZS13aWR0aDogMTsgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOyB9CiAgLmZyYW1lLXRpdGxlIHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgZmlsbDogIzIyMjsgfQogIC5wYXJ0aWNpcGFudC1ib3ggeyBmaWxsOiAjZmZmZmZmOyBzdHJva2U6ICM2NjY7IHN0cm9rZS13aWR0aDogMjsgfQogIC5wYXJ0aWNpcGFudC1sYWJlbCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZpbGw6ICMyMjI7IH0KICAucGFydGljaXBhbnQtaWNvbiB7IGNvbG9yOiAjMjIyOyB9CiAgLnBhcnRpY2lwYW50LWljb24gW2ZpbGw9ImN1cnJlbnRDb2xvciJdOm5vdChbc3Ryb2tlXSkgeyBzdHJva2U6ICM2NjY7IHN0cm9rZS13aWR0aDogMTsgfQogIC5saWZlbGluZSB7IHN0cm9rZTogIzY2Njsgc3Ryb2tlLXdpZHRoOiAxOyB9CiAgLm1lc3NhZ2UtbGluZSB7IHN0cm9rZTogIzAwMDsgc3Ryb2tlLXdpZHRoOiAyOyBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7IH0KICAubWVzc2FnZS1sYWJlbCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZpbGw6ICMyMjI7IH0KICAuYXJyb3ctaGVhZCB7IGZpbGw6ICMwMDA7IHN0cm9rZTogIzAwMDsgc3Ryb2tlLXdpZHRoOiAyOyB9CiAgLmFycm93LW9wZW4geyBmaWxsOiBub25lOyB9CiAgLm9jY3VycmVuY2UgeyBmaWxsOiAjZGVkZWRlOyBzdHJva2U6ICM2NjY7IHN0cm9rZS13aWR0aDogMjsgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOyB9CiAgLmZyYWdtZW50LWJvcmRlciB7IGZpbGw6IG5vbmU7IHN0cm9rZTogIzY2Njsgc3Ryb2tlLXdpZHRoOiAxOyBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7IH0KICAuZnJhZ21lbnQtaGVhZGVyIHsgZmlsbDogI2RlZGVkZTsgZmlsbC1vcGFjaXR5OiAwLjQ5ODsgc3Ryb2tlOiBub25lOyBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7IH0KICAuZnJhZ21lbnQtbGFiZWwgeyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBWZXJkYW5hLCBzZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNjAwOyBmaWxsOiAjMDAwOyB9CiAgLmZyYWdtZW50LWNvbmRpdGlvbiB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZpbGw6ICMwMDA7IH0KICAuZnJhZ21lbnQtc2VwYXJhdG9yIHsgc3Ryb2tlOiAjZTVlN2ViOyBzdHJva2Utd2lkdGg6IDE7IHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsgfQogIC5mcmFnbWVudC1zZWN0aW9uLWxhYmVsIHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogIzAwMDsgfQogIC5yZXR1cm4tbGluZSB7IHN0cm9rZTogIzAwMDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA2LDQ7IHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsgfQogIC5yZXR1cm4tYXJyb3cgeyBzdHJva2U6ICMwMDA7IHN0cm9rZS13aWR0aDogMjsgZmlsbDogbm9uZTsgfQogIC5yZXR1cm4tbGFiZWwgeyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBWZXJkYW5hLCBzZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiAjMjIyOyB9CiAgLnJldHVybi1pY29uIHsgZmlsbDogIzIyMjsgfQogIC5kaXZpZGVyLWxpbmUgeyBzdHJva2U6ICNhYWFhMzM7IHN0cm9rZS13aWR0aDogMTsgfQogIC5kaXZpZGVyLWJnIHsgZmlsbDogI2ZmZjVhZDsgc3Ryb2tlOiAjYWFhYTMzOyBzdHJva2Utd2lkdGg6IDE7IH0KICAuZGl2aWRlci1sYWJlbCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZpbGw6ICMzMzM7IH0KICAuY29tbWVudC10ZXh0IHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogIzMzMzsgb3BhY2l0eTogMC41OyB9CiAgLnNlcS1udW1iZXIgeyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBWZXJkYW5hLCBzZXJpZjsgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogMTAwOyBmaWxsOiAjNmI3MjgwOyB9CiAgLmdyb3VwLW91dGxpbmUgeyBmaWxsOiBub25lOyBzdHJva2U6ICM2NjY7IH0KICAuZ3JvdXAtdGl0bGUtYmcgeyBmaWxsOiAjZmZmZmZmOyBzdHJva2U6IG5vbmU7IH0KICAuZ3JvdXAtdGl0bGUtdGV4dCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGZpbGw6ICMyMjI7IH0KPC9zdHlsZT4KPC9kZWZzPgo8cmVjdCBjbGFzcz0iZnJhbWUtYm9yZGVyLW91dGVyIiB4PSIwIiB5PSIwIiB3aWR0aD0iNzAyLjUiIGhlaWdodD0iNDIxIiByeD0iNCIgZmlsbD0iIzY2NiI+PC9yZWN0Pgo8cmVjdCBjbGFzcz0iZnJhbWUtYm9yZGVyLWlubmVyIiB4PSIxIiB5PSIxIiB3aWR0aD0iNzAwLjUiIGhlaWdodD0iNDE5IiByeD0iMyIgZmlsbD0iI2ZmZiI+PC9yZWN0Pgo8bGluZSBjbGFzcz0iZnJhbWUtaGVhZGVyLWxpbmUiIHgxPSIxIiB5MT0iMzMuNSIgeDI9IjcwMS41IiB5Mj0iMzMuNSI+PC9saW5lPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjEsIDM0KSI+CjxsaW5lIHgxPSI1MC41IiB5MT0iNjgiIHgyPSI1MC41IiB5Mj0iMzg2IiBjbGFzcz0ibGlmZWxpbmUiIHN0cm9rZS1kYXNoYXJyYXk9IjUsNSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjUiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyI+PC9saW5lPgo8bGluZSB4MT0iMTUwLjUiIHkxPSI2OCIgeDI9IjE1MC41IiB5Mj0iMzg2IiBjbGFzcz0ibGlmZWxpbmUiIHN0cm9rZS1kYXNoYXJyYXk9IjUsNSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjUiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyI+PC9saW5lPgo8bGluZSB4MT0iMzkzLjUiIHkxPSI2OCIgeDI9IjM5My41IiB5Mj0iMzg2IiBjbGFzcz0ibGlmZWxpbmUiIHN0cm9rZS1kYXNoYXJyYXk9IjUsNSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjUiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyI+PC9saW5lPgo8bGluZSB4MT0iNTkxLjUiIHkxPSI2OCIgeDI9IjU5MS41IiB5Mj0iMzg2IiBjbGFzcz0ibGlmZWxpbmUiIHN0cm9rZS1kYXNoYXJyYXk9IjUsNSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjUiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyI+PC9saW5lPgo8ZyBjbGFzcz0icGFydGljaXBhbnQiIGRhdGEtcGFydGljaXBhbnQ9InBhcnRpY2lwYW50Ij4KICA8cmVjdCB4PSI2LjA4OTg0Mzc1IiB5PSIyOSIgd2lkdGg9Ijg3LjgyMDMxMjUiIGhlaWdodD0iMzgiIHJ4PSIzIiBjbGFzcz0icGFydGljaXBhbnQtYm94Ij48L3JlY3Q+CiAgCiAgCiAgCiAgPHRleHQgeD0iNTAiIHk9IjQ3Ljc1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgY2xhc3M9InBhcnRpY2lwYW50LWxhYmVsIj5wYXJ0aWNpcGFudDwvdGV4dD4KPC9nPgo8ZyBjbGFzcz0icGFydGljaXBhbnQiIGRhdGEtcGFydGljaXBhbnQ9IkNsaWVudCI+CiAgPHJlY3QgeD0iMTExIiB5PSIyOSIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjM4IiByeD0iMyIgY2xhc3M9InBhcnRpY2lwYW50LWJveCI+PC9yZWN0PgogIAogIAogIAogIDx0ZXh0IHg9IjE1MCIgeT0iNDcuNzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiBjbGFzcz0icGFydGljaXBhbnQtbGFiZWwiPkNsaWVudDwvdGV4dD4KPC9nPgo8ZyBjbGFzcz0icGFydGljaXBhbnQiIGRhdGEtcGFydGljaXBhbnQ9Ik9yZGVyU2VydmljZSI+CiAgPHJlY3QgeD0iMzM4Ljg3NSIgeT0iMjkiIHdpZHRoPSIxMDguMjUiIGhlaWdodD0iMzgiIHJ4PSIzIiBjbGFzcz0icGFydGljaXBhbnQtYm94Ij48L3JlY3Q+CiAgCiAgCiAgCiAgPHRleHQgeD0iMzkzIiB5PSI0Ny43NSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIGNsYXNzPSJwYXJ0aWNpcGFudC1sYWJlbCI+T3JkZXJTZXJ2aWNlPC90ZXh0Pgo8L2c+CjxnIGNsYXNzPSJwYXJ0aWNpcGFudCIgZGF0YS1wYXJ0aWNpcGFudD0iSW52ZW50b3J5U2VydmljZSI+CiAgPHJlY3QgeD0iNTI0LjQxNzk2ODc1IiB5PSIyOSIgd2lkdGg9IjEzMy4xNjQwNjI1IiBoZWlnaHQ9IjM4IiByeD0iMyIgY2xhc3M9InBhcnRpY2lwYW50LWJveCI+PC9yZWN0PgogIAogIAogIAogIDx0ZXh0IHg9IjU5MSIgeT0iNDcuNzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiBjbGFzcz0icGFydGljaXBhbnQtbGFiZWwiPkludmVudG9yeVNlcnZpY2U8L3RleHQ+CjwvZz4KPGcgY2xhc3M9Im1lc3NhZ2UiPgogIDxsaW5lIHgxPSIxNTEiIHkxPSI4NyIgeDI9IjM5MyIgeTI9Ijg3IiBjbGFzcz0ibWVzc2FnZS1saW5lIj48L2xpbmU+CiAgPHN2ZyB4PSIzODYiIHk9IjgyIiB3aWR0aD0iNyIgaGVpZ2h0PSIxMCIgdmlld0JveD0iMCAwIDcgOSIgb3ZlcmZsb3c9InZpc2libGUiIGNsYXNzPSJhcnJvdy1oZWFkIGFycm93LW9wZW4iPgogICAgPGc+CiAgICAgIDxwYXRoIGQ9Ik0xIDEuMjUgTDYuMTUgNC41IEwxIDcuNzUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgIDwvZz4KICA8L3N2Zz4KICA8dGV4dCB4PSIyNjguNSIgeT0iODQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGNsYXNzPSJtZXNzYWdlLWxhYmVsIj5QT1NUIC9vcmRlcnM8L3RleHQ+CiAgPHRleHQgeD0iMTQ3IiB5PSI4NCIgdGV4dC1hbmNob3I9ImVuZCIgY2xhc3M9InNlcS1udW1iZXIiPjE8L3RleHQ+CjwvZz4KPGcgY2xhc3M9Im1lc3NhZ2UiPgogIDxsaW5lIHgxPSIzOTQiIHkxPSIxMTkiIHgyPSI1OTEiIHkyPSIxMTkiIGNsYXNzPSJtZXNzYWdlLWxpbmUiPjwvbGluZT4KICA8c3ZnIHg9IjU4NCIgeT0iMTE0IiB3aWR0aD0iNyIgaGVpZ2h0PSIxMCIgdmlld0JveD0iMCAwIDcgOSIgb3ZlcmZsb3c9InZpc2libGUiIGNsYXNzPSJhcnJvdy1oZWFkIGFycm93LW9wZW4iPgogICAgPGc+CiAgICAgIDxwYXRoIGQ9Ik0xIDEuMjUgTDYuMTUgNC41IEwxIDcuNzUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgIDwvZz4KICA8L3N2Zz4KICA8dGV4dCB4PSI0ODkiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgY2xhc3M9Im1lc3NhZ2UtbGFiZWwiPnJlc2VydmUoU0tVLTk5MSwgcXR5PTIpPC90ZXh0PgogIDx0ZXh0IHg9IjM5MCIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0iZW5kIiBjbGFzcz0ic2VxLW51bWJlciI+MjwvdGV4dD4KPC9nPgo8ZyBjbGFzcz0icmV0dXJuIj4KICA8bGluZSB4MT0iNTkxIiB5MT0iMTkzIiB4Mj0iMzk0IiB5Mj0iMTkzIiBjbGFzcz0icmV0dXJuLWxpbmUiPjwvbGluZT4KICA8cG9seWxpbmUgcG9pbnRzPSIzOTkuMTUsMTg5Ljc1IDM5NCwxOTMgMzk5LjE1LDE5Ni4yNSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBjbGFzcz0icmV0dXJuLWFycm93Ij48L3BvbHlsaW5lPgogIDx0ZXh0IHg9IjQ5NiIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBjbGFzcz0icmV0dXJuLWxhYmVsIj5yZXNlcnZhdGlvbiAjUi00ODIxPC90ZXh0PgogIDx0ZXh0IHg9IjM5MCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0iZW5kIiBjbGFzcz0ic2VxLW51bWJlciI+My4xPC90ZXh0Pgo8L2c+CjxnIGNsYXNzPSJyZXR1cm4iPgogIDxsaW5lIHgxPSIzOTMiIHkxPSIyMjUiIHgyPSIxNTEiIHkyPSIyMjUiIGNsYXNzPSJyZXR1cm4tbGluZSI+PC9saW5lPgogIDxwb2x5bGluZSBwb2ludHM9IjE1Ni4xNSwyMjEuNzUgMTUxLDIyNSAxNTYuMTUsMjI4LjI1IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGNsYXNzPSJyZXR1cm4tYXJyb3ciPjwvcG9seWxpbmU+CiAgPHRleHQgeD0iMjc1LjUiIHk9IjIyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgY2xhc3M9InJldHVybi1sYWJlbCI+MjAxIENyZWF0ZWQsb3JkZXIgI0EtMTA4ODwvdGV4dD4KICA8dGV4dCB4PSIxNDciIHk9IjIyMiIgdGV4dC1hbmNob3I9ImVuZCIgY2xhc3M9InNlcS1udW1iZXIiPjMuMjwvdGV4dD4KPC9nPgo8ZyBjbGFzcz0icmV0dXJuIj4KICA8bGluZSB4MT0iMzkzIiB5MT0iMzAyIiB4Mj0iMTUxIiB5Mj0iMzAyIiBjbGFzcz0icmV0dXJuLWxpbmUiPjwvbGluZT4KICA8cG9seWxpbmUgcG9pbnRzPSIxNTYuMTUsMjk4Ljc1IDE1MSwzMDIgMTU2LjE1LDMwNS4yNSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBjbGFzcz0icmV0dXJuLWFycm93Ij48L3BvbHlsaW5lPgogIDx0ZXh0IHg9IjI3NS41IiB5PSIyOTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGNsYXNzPSJyZXR1cm4tbGFiZWwiPjQwOSBDb25mbGljdCwiaW5zdWZmaWNpZW50IHN0b2NrIjwvdGV4dD4KICA8dGV4dCB4PSIxNDciIHk9IjI5OSIgdGV4dC1hbmNob3I9ImVuZCIgY2xhc3M9InNlcS1udW1iZXIiPjMuMzwvdGV4dD4KPC9nPgo8ZyBjbGFzcz0iZnJhZ21lbnQgZnJhZ21lbnQtdGNmIj4KICA8cmVjdCB4PSI5MC41IiB5PSIxMzYuNSIgd2lkdGg9IjU3OS41IiBoZWlnaHQ9IjE5MyIgcng9IjQiIGNsYXNzPSJmcmFnbWVudC1ib3JkZXIiPjwvcmVjdD4KICA8cmVjdCB4PSI5MSIgeT0iMTM3IiB3aWR0aD0iNTc4LjUiIGhlaWdodD0iMjUiIGNsYXNzPSJmcmFnbWVudC1oZWFkZXIiPjwvcmVjdD4KICA8c3ZnIHg9Ijk1IiB5PSIxMzciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDc2IDc2IiBmaWxsPSIjMDAwIiBzdHJva2U9Im5vbmUiPgogICAgICA8cGF0aCBkPSJNIDI2LDIyLjAwMDFMIDI3LDIxLjk5OThMIDI3LDI3TCAyNi4wMDAxLDI3LjAwMDNDIDIzLjIzODYsMjcuMDAwMyAyMS4wMDAxLDI5LjIzODkgMjEuMDAwMSwzMi4wMDAzTCAyMSw0Ni4wMDAyQyAyMSw0OC43NjE2IDIzLjIzODYsNTEuMDAwMiAyNS45OTk5LDUxLjAwMDJMIDI3LDUxLjAwMDJMIDI3LDQ3TCAzMy43NSw1My41TCAyNyw2MEwgMjcsNTZMIDI2LDU2QyAyMC40NzcxLDU2IDE2LDUxLjUyMjkgMTYsNDZMIDE2LDMyLjAwMDFDIDE2LDI2LjQ3NzMgMjAuNDc3MSwyMi4wMDAxIDI2LDIyLjAwMDEgWiBNIDMzLDI3TCA1OSwyN0wgNTksMzJMIDMzLDMyTCAzMywyNyBaIE0gMzYsMzVMIDU5LDM1TCA1OSw0MEwgMzYsNDBMIDM2LDM1IFogTSAzMyw0M0wgNTksNDNMIDU5LDQ4TCAzMyw0OEwgMzMsNDMgWiI+PC9wYXRoPgogICAgPC9zdmc+CiAgPHRleHQgeD0iMTE3IiB5PSIxNDkiIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiBjbGFzcz0iZnJhZ21lbnQtbGFiZWwiPlRyeTwvdGV4dD4KICA8dGV4dCB4PSI4NyIgeT0iMTQ1IiB0ZXh0LWFuY2hvcj0iZW5kIiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgY2xhc3M9InNlcS1udW1iZXIiPjM8L3RleHQ+CiAgPGxpbmUgeDE9IjkxIiB5MT0iMjUwLjUiIHgyPSI2NjkuNSIgeTI9IjI1MC41IiBjbGFzcz0iZnJhZ21lbnQtc2VwYXJhdG9yIj48L2xpbmU+CiAgPGcgb3BhY2l0eT0iMC42NSI+PHJlY3QgeD0iOTEiIHk9IjI1MSIgd2lkdGg9IjE1Mi45MzA2NjQwNjI1IiBoZWlnaHQ9IjIwIiBmaWxsPSIjZmZmIj48L3JlY3Q+PHRleHQgeD0iOTUiIHk9IjI2NiIgY2xhc3M9ImZyYWdtZW50LXNlY3Rpb24tbGFiZWwiIGZpbGw9IiMyMjIiPmNhdGNoPC90ZXh0Pjx0ZXh0IHg9IjEzNi40NjE5MTQwNjI1IiB5PSIyNjYiIGNsYXNzPSJmcmFnbWVudC1zZWN0aW9uLWxhYmVsIiBmaWxsPSIjMjIyIj5PdXRPZlN0b2NrRXJyb3I8L3RleHQ+PC9nPgo8L2c+CjwvZz48L3N2Zz4=)

The happy path and the failure path live in the same block of text, review together in a PR, and — the actual point — get updated in the same commit when the API contract changes.

## Parallel Work with par/and[​](#parallel-work-with-parand "Direct link to Parallel Work with par/and")

Batch jobs and fan-outs read cleanly with `par`:

````
```zenuml

participant Scheduler

participant BillingService

participant EmailService

Scheduler->BillingService: run monthly invoices

par {

  BillingService->BillingService: render PDF statements

}

and {

  BillingService->EmailService: queue invoice emails

}

BillingService-->Scheduler: 1,204 invoices, 3 failures

```
````

![ZenUML par block for parallel billing work](data:image/svg+xml;base64,PHN2ZyBpZD0iYmxvZy1zdmctb2pnODJycDZmMTkiIHdpZHRoPSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgbWF4LXdpZHRoOiA3MzAuNXB4OyIgdmlld0JveD0iMCAwIDczMC41IDQzNiIgcm9sZT0iZ3JhcGhpY3MtZG9jdW1lbnQgZG9jdW1lbnQiIGFyaWEtcm9sZWRlc2NyaXB0aW9uPSJ6ZW51bWwiPjxkZWZzPgogIDxzdHlsZT4KICAuZnJhbWUtYm9yZGVyLW91dGVyIHsgZmlsbDogIzY2NjsgfQogIC5mcmFtZS1ib3JkZXItaW5uZXIgeyBmaWxsOiAjZmZmZmZmOyB9CiAgLmZyYW1lLWhlYWRlci1iZyB7IGZpbGw6ICNmZmZmZmY7IH0KICAuZnJhbWUtaGVhZGVyLWxpbmUgeyBzdHJva2U6ICM2NjY7IHN0cm9rZS13aWR0aDogMTsgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOyB9CiAgLmZyYW1lLXRpdGxlIHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgZmlsbDogIzIyMjsgfQogIC5wYXJ0aWNpcGFudC1ib3ggeyBmaWxsOiAjZmZmZmZmOyBzdHJva2U6ICM2NjY7IHN0cm9rZS13aWR0aDogMjsgfQogIC5wYXJ0aWNpcGFudC1sYWJlbCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZpbGw6ICMyMjI7IH0KICAucGFydGljaXBhbnQtaWNvbiB7IGNvbG9yOiAjMjIyOyB9CiAgLnBhcnRpY2lwYW50LWljb24gW2ZpbGw9ImN1cnJlbnRDb2xvciJdOm5vdChbc3Ryb2tlXSkgeyBzdHJva2U6ICM2NjY7IHN0cm9rZS13aWR0aDogMTsgfQogIC5saWZlbGluZSB7IHN0cm9rZTogIzY2Njsgc3Ryb2tlLXdpZHRoOiAxOyB9CiAgLm1lc3NhZ2UtbGluZSB7IHN0cm9rZTogIzAwMDsgc3Ryb2tlLXdpZHRoOiAyOyBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7IH0KICAubWVzc2FnZS1sYWJlbCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZpbGw6ICMyMjI7IH0KICAuYXJyb3ctaGVhZCB7IGZpbGw6ICMwMDA7IHN0cm9rZTogIzAwMDsgc3Ryb2tlLXdpZHRoOiAyOyB9CiAgLmFycm93LW9wZW4geyBmaWxsOiBub25lOyB9CiAgLm9jY3VycmVuY2UgeyBmaWxsOiAjZGVkZWRlOyBzdHJva2U6ICM2NjY7IHN0cm9rZS13aWR0aDogMjsgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOyB9CiAgLmZyYWdtZW50LWJvcmRlciB7IGZpbGw6IG5vbmU7IHN0cm9rZTogIzY2Njsgc3Ryb2tlLXdpZHRoOiAxOyBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7IH0KICAuZnJhZ21lbnQtaGVhZGVyIHsgZmlsbDogI2RlZGVkZTsgZmlsbC1vcGFjaXR5OiAwLjQ5ODsgc3Ryb2tlOiBub25lOyBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7IH0KICAuZnJhZ21lbnQtbGFiZWwgeyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBWZXJkYW5hLCBzZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNjAwOyBmaWxsOiAjMDAwOyB9CiAgLmZyYWdtZW50LWNvbmRpdGlvbiB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZpbGw6ICMwMDA7IH0KICAuZnJhZ21lbnQtc2VwYXJhdG9yIHsgc3Ryb2tlOiAjZTVlN2ViOyBzdHJva2Utd2lkdGg6IDE7IHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsgfQogIC5mcmFnbWVudC1zZWN0aW9uLWxhYmVsIHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogIzAwMDsgfQogIC5yZXR1cm4tbGluZSB7IHN0cm9rZTogIzAwMDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA2LDQ7IHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsgfQogIC5yZXR1cm4tYXJyb3cgeyBzdHJva2U6ICMwMDA7IHN0cm9rZS13aWR0aDogMjsgZmlsbDogbm9uZTsgfQogIC5yZXR1cm4tbGFiZWwgeyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBWZXJkYW5hLCBzZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiAjMjIyOyB9CiAgLnJldHVybi1pY29uIHsgZmlsbDogIzIyMjsgfQogIC5kaXZpZGVyLWxpbmUgeyBzdHJva2U6ICNhYWFhMzM7IHN0cm9rZS13aWR0aDogMTsgfQogIC5kaXZpZGVyLWJnIHsgZmlsbDogI2ZmZjVhZDsgc3Ryb2tlOiAjYWFhYTMzOyBzdHJva2Utd2lkdGg6IDE7IH0KICAuZGl2aWRlci1sYWJlbCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZpbGw6ICMzMzM7IH0KICAuY29tbWVudC10ZXh0IHsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgVmVyZGFuYSwgc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogIzMzMzsgb3BhY2l0eTogMC41OyB9CiAgLnNlcS1udW1iZXIgeyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBWZXJkYW5hLCBzZXJpZjsgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogMTAwOyBmaWxsOiAjNmI3MjgwOyB9CiAgLmdyb3VwLW91dGxpbmUgeyBmaWxsOiBub25lOyBzdHJva2U6ICM2NjY7IH0KICAuZ3JvdXAtdGl0bGUtYmcgeyBmaWxsOiAjZmZmZmZmOyBzdHJva2U6IG5vbmU7IH0KICAuZ3JvdXAtdGl0bGUtdGV4dCB7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNlcmlmOyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGZpbGw6ICMyMjI7IH0KPC9zdHlsZT4KPC9kZWZzPgo8cmVjdCBjbGFzcz0iZnJhbWUtYm9yZGVyLW91dGVyIiB4PSIwIiB5PSIwIiB3aWR0aD0iNzMwLjUiIGhlaWdodD0iNDM2IiByeD0iNCIgZmlsbD0iIzY2NiI+PC9yZWN0Pgo8cmVjdCBjbGFzcz0iZnJhbWUtYm9yZGVyLWlubmVyIiB4PSIxIiB5PSIxIiB3aWR0aD0iNzI4LjUiIGhlaWdodD0iNDM0IiByeD0iMyIgZmlsbD0iI2ZmZiI+PC9yZWN0Pgo8bGluZSBjbGFzcz0iZnJhbWUtaGVhZGVyLWxpbmUiIHgxPSIxIiB5MT0iMzMuNSIgeDI9IjcyOS41IiB5Mj0iMzMuNSI+PC9saW5lPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjEsIDM0KSI+CjxsaW5lIHgxPSI1NiIgeTE9IjY4IiB4Mj0iNTYiIHkyPSI0MDEiIGNsYXNzPSJsaWZlbGluZSIgc3Ryb2tlLWRhc2hhcnJheT0iNSw1IiBzdHJva2UtZGFzaG9mZnNldD0iNSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48L2xpbmU+CjxsaW5lIHgxPSIxNjEuNSIgeTE9IjY4IiB4Mj0iMTYxLjUiIHkyPSI0MDEiIGNsYXNzPSJsaWZlbGluZSIgc3Ryb2tlLWRhc2hhcnJheT0iNSw1IiBzdHJva2UtZGFzaG9mZnNldD0iNSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48L2xpbmU+CjxsaW5lIHgxPSIyNjEuNSIgeTE9IjY4IiB4Mj0iMjYxLjUiIHkyPSI0MDEiIGNsYXNzPSJsaWZlbGluZSIgc3Ryb2tlLWRhc2hhcnJheT0iNSw1IiBzdHJva2UtZGFzaG9mZnNldD0iNSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48L2xpbmU+CjxsaW5lIHgxPSI0NTguNSIgeTE9IjY4IiB4Mj0iNDU4LjUiIHkyPSI0MDEiIGNsYXNzPSJsaWZlbGluZSIgc3Ryb2tlLWRhc2hhcnJheT0iNSw1IiBzdHJva2UtZGFzaG9mZnNldD0iNSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48L2xpbmU+CjxsaW5lIHgxPSI2MzIuNSIgeTE9IjY4IiB4Mj0iNjMyLjUiIHkyPSI0MDEiIGNsYXNzPSJsaWZlbGluZSIgc3Ryb2tlLWRhc2hhcnJheT0iNSw1IiBzdHJva2UtZGFzaG9mZnNldD0iNSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48L2xpbmU+CjxnIGNsYXNzPSJwYXJ0aWNpcGFudCBwYXJ0aWNpcGFudC1zdGFydGVyIiBkYXRhLXBhcnRpY2lwYW50PSJfU1RBUlRFUl8iPgogIDxyZWN0IHg9IjE2LjUiIHk9IjI5IiB3aWR0aD0iNzgiIGhlaWdodD0iMzgiIHJ4PSIzIiBjbGFzcz0icGFydGljaXBhbnQtYm94Ij48L3JlY3Q+CiAgPGcgY2xhc3M9InBhcnRpY2lwYW50LWljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQxLjUsIDM2KSBzY2FsZSgxKSIgZmlsbD0ibm9uZSI+CiAgICA8Zz4KICAgIDxwYXRoIGQ9Ik0xNS41NDg5IDQuMTk3NzFDMTUuNTQ4OSA1LjE4NzczIDE1LjE0ODUgNi4xMzcyMSAxNC40MzU4IDYuODM3MjZDMTMuNzIzMSA3LjUzNzMxIDEyLjc1NjUgNy45MzA1OCAxMS43NDg2IDcuOTMwNThDMTAuNzQwNyA3LjkzMDU4IDkuNzc0MDMgNy41MzczMSA5LjA2MTMzIDYuODM3MjZDOC4zNDg2MyA2LjEzNzIxIDcuOTQ4MjQgNS4xODc3MyA3Ljk0ODI0IDQuMTk3NzFDNy45NDgyNCAzLjIwNzY4IDguMzQ4NjMgMi4yNTgyMiA5LjA2MTMzIDEuNTU4MThDOS43NzQwMyAwLjg1ODEyNiAxMC43NDA3IDAuNDY0ODQ0IDExLjc0ODYgMC40NjQ4NDRDMTIuNzU2NSAwLjQ2NDg0NCAxMy43MjMxIDAuODU4MTI2IDE0LjQzNTggMS41NTgxOEMxNS4xNDg1IDIuMjU4MjIgMTUuNTQ4OSAzLjIwNzY4IDE1LjU0ODkgNC4xOTc3MVoiIHN0cm9rZT0iY3VycmVudENvbG9yIj48L3BhdGg+CiAgICA8cGF0aCBkPSJNNi41NDg4MyAxMS4yMTUyTDE3LjIwMjUgMTEuMjA3M00xMS43NDcxIDguMDY2NDFWMTkuNTgwNlY4LjA2NjQxWk0xMS43NDcxIDE5LjQzODVMNi43OTc4OSAyMy41NzM4TDExLjc0NzEgMTkuNDM4NVpNMTEuNzU1MSAxOS40Mzg1TDE3LjE4NjQgMjMuMzA1NUwxMS43NTUxIDE5LjQzODVaIiBzdHJva2U9ImN1cnJlbnRDb2xvciI+PC9wYXRoPgogIDwvZz4KICA8L2c+CjwvZz4KPGcgY2xhc3M9InBhcnRpY2lwYW50IiBkYXRhLXBhcnRpY2lwYW50PSJwYXJ0aWNpcGFudCI+CiAgPHJlY3QgeD0iMTE3LjA4OTg0Mzc1IiB5PSIyOSIgd2lkdGg9Ijg3LjgyMDMxMjUiIGhlaWdodD0iMzgiIHJ4PSIzIiBjbGFzcz0icGFydGljaXBhbnQtYm94Ij48L3JlY3Q+CiAgCiAgCiAgCiAgPHRleHQgeD0iMTYxIiB5PSI0Ny43NSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZG9taW5hbnQtYmFzZWxpbmU9ImNlbnRyYWwiIGNsYXNzPSJwYXJ0aWNpcGFudC1sYWJlbCI+cGFydGljaXBhbnQ8L3RleHQ+CjwvZz4KPGcgY2xhc3M9InBhcnRpY2lwYW50IiBkYXRhLXBhcnRpY2lwYW50PSJTY2hlZHVsZXIiPgogIDxyZWN0IHg9IjIxNy45NzY1NjI1IiB5PSIyOSIgd2lkdGg9Ijg2LjA0Njg3NSIgaGVpZ2h0PSIzOCIgcng9IjMiIGNsYXNzPSJwYXJ0aWNpcGFudC1ib3giPjwvcmVjdD4KICAKICAKICAKICA8dGV4dCB4PSIyNjEiIHk9IjQ3Ljc1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgY2xhc3M9InBhcnRpY2lwYW50LWxhYmVsIj5TY2hlZHVsZXI8L3RleHQ+CjwvZz4KPGcgY2xhc3M9InBhcnRpY2lwYW50IiBkYXRhLXBhcnRpY2lwYW50PSJCaWxsaW5nU2VydmljZSI+CiAgPHJlY3QgeD0iNDAyLjk4MDQ2ODc1IiB5PSIyOSIgd2lkdGg9IjExMC4wMzkwNjI1IiBoZWlnaHQ9IjM4IiByeD0iMyIgY2xhc3M9InBhcnRpY2lwYW50LWJveCI+PC9yZWN0PgogIAogIAogIAogIDx0ZXh0IHg9IjQ1OCIgeT0iNDcuNzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiBjbGFzcz0icGFydGljaXBhbnQtbGFiZWwiPkJpbGxpbmdTZXJ2aWNlPC90ZXh0Pgo8L2c+CjxnIGNsYXNzPSJwYXJ0aWNpcGFudCIgZGF0YS1wYXJ0aWNpcGFudD0iRW1haWxTZXJ2aWNlIj4KICA8cmVjdCB4PSI1NzguMzIwMzEyNSIgeT0iMjkiIHdpZHRoPSIxMDcuMzU5Mzc1IiBoZWlnaHQ9IjM4IiByeD0iMyIgY2xhc3M9InBhcnRpY2lwYW50LWJveCI+PC9yZWN0PgogIAogIAogIAogIDx0ZXh0IHg9IjYzMiIgeT0iNDcuNzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiBjbGFzcz0icGFydGljaXBhbnQtbGFiZWwiPkVtYWlsU2VydmljZTwvdGV4dD4KPC9nPgo8cmVjdCB4PSI0OS41IiB5PSIyNjIiIHdpZHRoPSIxMyIgaGVpZ2h0PSI1MCIgcng9IjEiIGNsYXNzPSJvY2N1cnJlbmNlIiBkYXRhLXBhcnRpY2lwYW50PSJfU1RBUlRFUl8iPjwvcmVjdD4KPGcgY2xhc3M9Im1lc3NhZ2UiPgogIDxsaW5lIHgxPSIyNjIiIHkxPSI4NyIgeDI9IjQ1OCIgeTI9Ijg3IiBjbGFzcz0ibWVzc2FnZS1saW5lIj48L2xpbmU+CiAgPHN2ZyB4PSI0NTEiIHk9IjgyIiB3aWR0aD0iNyIgaGVpZ2h0PSIxMCIgdmlld0JveD0iMCAwIDcgOSIgb3ZlcmZsb3c9InZpc2libGUiIGNsYXNzPSJhcnJvdy1oZWFkIGFycm93LW9wZW4iPgogICAgPGc+CiAgICAgIDxwYXRoIGQ9Ik0xIDEuMjUgTDYuMTUgNC41IEwxIDcuNzUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiPjwvcGF0aD4KICAgIDwvZz4KICA8L3N2Zz4KICA8dGV4dCB4PSIzNTYuNSIgeT0iODQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGNsYXNzPSJtZXNzYWdlLWxhYmVsIj5ydW4gbW9udGhseSBpbnZvaWNlczwvdGV4dD4KICA8dGV4dCB4PSIyNTgiIHk9Ijg0IiB0ZXh0LWFuY2hvcj0iZW5kIiBjbGFzcz0ic2VxLW51bWJlciI+MTwvdGV4dD4KPC9nPgo8ZyBjbGFzcz0ibWVzc2FnZSI+CiAgPGxpbmUgeDE9IjQ1OSIgeTE9IjI5NCIgeDI9IjYzMiIgeTI9IjI5NCIgY2xhc3M9Im1lc3NhZ2UtbGluZSI+PC9saW5lPgogIDxzdmcgeD0iNjI1IiB5PSIyODkiIHdpZHRoPSI3IiBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgNyA5IiBvdmVyZmxvdz0idmlzaWJsZSIgY2xhc3M9ImFycm93LWhlYWQgYXJyb3ctb3BlbiI+CiAgICA8Zz4KICAgICAgPHBhdGggZD0iTTEgMS4yNSBMNi4xNSA0LjUgTDEgNy43NSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSI+PC9wYXRoPgogICAgPC9nPgogIDwvc3ZnPgogIDx0ZXh0IHg9IjU0MiIgeT0iMjkxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBjbGFzcz0ibWVzc2FnZS1sYWJlbCI+cXVldWUgaW52b2ljZSBlbWFpbHM8L3RleHQ+CiAgPHRleHQgeD0iNDU1IiB5PSIyOTEiIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzZXEtbnVtYmVyIj4zLjE8L3RleHQ+CjwvZz4KPGcgY2xhc3M9Im1lc3NhZ2Ugc2VsZi1jYWxsIj4KICA8c3ZnIHg9IjQ1OSIgeT0iMTY2IiB3aWR0aD0iMzAiIGhlaWdodD0iMjQiPgogICAgPHBhdGggZD0iTTAsMiBMMjYsMiBRMjgsMiAyOCw0IEwyOCwxMyBRMjgsMTUgMjYsMTUgTDEsMTUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIyIj48L3BhdGg+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAxMCkiPgogICAgICA8c3ZnIGhlaWdodD0iMTAiIHdpZHRoPSI3IiB2aWV3Qm94PSIwIDAgNyA5Ij4KICAgICAgICA8ZyB0cmFuc2Zvcm09InNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTcsIDApIj4KICAgICAgICAgIDxwYXRoIGQ9Ik0xIDEuMjUgTDYuMTUgNC41IEwxIDcuNzUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJub25lIiBzdHJva2Utd2lkdGg9IjIiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICAgIDwvc3ZnPgogICAgPC9nPgogIDwvc3ZnPgogIDx0ZXh0IHg9IjQ2NCIgeT0iMTYxIiB0ZXh0LWFuY2hvcj0ic3RhcnQiIGNsYXNzPSJtZXNzYWdlLWxhYmVsIj5yZW5kZXIgUERGIHN0YXRlbWVudHM8L3RleHQ+CiAgPHRleHQgeD0iNDU1IiB5PSIxNTgiIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzZXEtbnVtYmVyIj4yLjE8L3RleHQ+CjwvZz4KPGcgY2xhc3M9Im1lc3NhZ2Ugc2VsZi1jYWxsIj4KICA8c3ZnIHg9IjU2LjUiIHk9IjI0NyIgd2lkdGg9IjMwIiBoZWlnaHQ9IjI0Ij4KICAgIDxwYXRoIGQ9Ik0wLDIgTDI2LDIgUTI4LDIgMjgsNCBMMjgsMTMgUTI4LDE1IDI2LDE1IEwxNCwxNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjIiPjwvcGF0aD4KICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDcsIDEwKSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxMCIgd2lkdGg9IjciIHZpZXdCb3g9IjAgMCA3IDkiPgogICAgICAgIDxnIHRyYW5zZm9ybT0ic2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNywgMCkiPgogICAgICAgICAgPHBhdGggZD0iTTEgMS4yNSBMNi4xNSA0LjUgTDEgNy43NSBaIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZmlsbD0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIyIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgICA8L3N2Zz4KICAgIDwvZz4KICA8L3N2Zz4KICA8dGV4dCB4PSI2MS41IiB5PSIyNDUiIHRleHQtYW5jaG9yPSJzdGFydCIgY2xhc3M9Im1lc3NhZ2UtbGFiZWwiPmFuZDwvdGV4dD4KICA8dGV4dCB4PSI1Mi41IiB5PSIyNDUiIHRleHQtYW5jaG9yPSJlbmQiIGNsYXNzPSJzZXEtbnVtYmVyIj4zPC90ZXh0Pgo8L2c+CjxnIGNsYXNzPSJyZXR1cm4iPgogIDxsaW5lIHgxPSI0NTgiIHkxPSIzNDQiIHgyPSIyNjIiIHkyPSIzNDQiIGNsYXNzPSJyZXR1cm4tbGluZSI+PC9saW5lPgogIDxwb2x5bGluZSBwb2ludHM9IjI2Ny4xNSwzNDAuNzUgMjYyLDM0NCAyNjcuMTUsMzQ3LjI1IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGNsYXNzPSJyZXR1cm4tYXJyb3ciPjwvcG9seWxpbmU+CiAgPHRleHQgeD0iMzYzLjUiIHk9IjM0MSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgY2xhc3M9InJldHVybi1sYWJlbCI+MSwyMDQgaW52b2ljZXMsMyBmYWlsdXJlczwvdGV4dD4KICA8dGV4dCB4PSIyNTgiIHk9IjM0MSIgdGV4dC1hbmNob3I9ImVuZCIgY2xhc3M9InNlcS1udW1iZXIiPjQ8L3RleHQ+CjwvZz4KPGcgY2xhc3M9ImZyYWdtZW50IGZyYWdtZW50LXBhciI+CiAgPHJlY3QgeD0iLTkuNSIgeT0iMTA0LjUiIHdpZHRoPSI2NDIiIGhlaWdodD0iMTEyIiByeD0iNCIgY2xhc3M9ImZyYWdtZW50LWJvcmRlciI+PC9yZWN0PgogIDxyZWN0IHg9Ii05IiB5PSIxMDUiIHdpZHRoPSI2NDEiIGhlaWdodD0iMjUiIGNsYXNzPSJmcmFnbWVudC1oZWFkZXIiPjwvcmVjdD4KICA8c3ZnIHg9Ii01IiB5PSIxMDUiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICAgICAgPHBhdGggZD0iTTUgMTBIMTkiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPgogICAgICA8cGF0aCBkPSJNNSAxNEgxOSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48L3BhdGg+CiAgICA8L3N2Zz4KICA8dGV4dCB4PSIxNyIgeT0iMTE3IiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgY2xhc3M9ImZyYWdtZW50LWxhYmVsIj5QYXI8L3RleHQ+CiAgPHRleHQgeD0iLTEzIiB5PSIxMTMiIHRleHQtYW5jaG9yPSJlbmQiIGRvbWluYW50LWJhc2VsaW5lPSJjZW50cmFsIiBjbGFzcz0ic2VxLW51bWJlciI+MjwvdGV4dD4KPC9nPgo8L2c+PC9zdmc+)

`par` and `and` nest inside `if` and `try` too, so a real integration flow — branches, retries, parallel calls — stays one readable diagram instead of three screenshots stitched together.

## ZenUML or Mermaid sequenceDiagram?[​](#zenuml-or-mermaid-sequencediagram "Direct link to ZenUML or Mermaid sequenceDiagram?")

Both render in the same macro; they optimize for different moments:

| Situation                                                 | Reach for                            |
| --------------------------------------------------------- | ------------------------------------ |
| Simple request/response flow, documentation flavor        | Mermaid `sequenceDiagram`            |
| Business logic with branches and error paths              | ZenUML                               |
| Diagram also lives in a GitHub README                     | Mermaid (GitHub renders it natively) |
| Spec where the diagram must match the code's control flow | ZenUML                               |

Install [Enhanced Markdown for Confluence](https://marketplace.atlassian.com/apps/1237026/enhanced-markdown-for-confluence), paste the checkout example into a ` ```zenuml ` fence, and watch the branch render while you type. Free for up to 10 users.

## Related Guides[​](#related-guides "Direct link to Related Guides")

* [Create Mermaid Diagrams in Confluence](/blog/create-mermaid-diagrams-confluence.md) — the same macro's full diagram family
* [Mermaid Sequence Diagrams in Confluence](/blog/mermaid-api-sequence-diagram-confluence.md) — the `sequenceDiagram` route for simpler flows
* [How to Write Markdown in Confluence](/blog/how-to-write-markdown-in-confluence.md) — the base syntax everything lives in

## Related guides

* [How to Create Mermaid Diagrams in Jira](/blog/how-to-create-mermaid-diagrams-jira.md)
* [Export Jira Issues to Excel or CSV](/blog/export-jira-issues-to-excel.md)
* [Bulk Download Jira Attachments](/blog/bulk-download-jira-attachments.md)
* [How to Migrate Confluence Content](/blog/how-to-migrate-confluence-content.md)
* [How to Add a Block Quote in Confluence](/blog/block-quote-confluence.md)

Explore NGPILOT[Browse Solutions](/solutions.md)[All Apps](/apps.md)[Atlassian Marketplace →](https://marketplace.atlassian.com/vendors/1226848/?utm_source=ngpilot.com\&utm_medium=blog\&utm_campaign=hub-links)

**Tags:**

* [confluence](/blog/tags/confluence.md)
* [zenuml](/blog/tags/zenuml.md)
* [sequence-diagram](/blog/tags/sequence-diagram.md)
* [uml](/blog/tags/uml.md)
* [mermaid](/blog/tags/mermaid.md)
* [markdown](/blog/tags/markdown.md)
* [how-to](/blog/tags/how-to.md)
* [engineering](/blog/tags/engineering.md)
