Notifications

<notify> accepts one or more built-in or imported custom provider tags.

Approval delivery

WOML
<notify>
  <telegram chats="123456789" bot-token="{{secrets.TELEGRAM_BOT_TOKEN}}" />
  <discord channels="200000000000000001" bot-token="{{secrets.DISCORD_BOT_TOKEN}}" />
</notify>

Each delivery receives a separate single-use capability, but every button settles the same approval. One successful delivery is enough to wait. If every delivery fails, WOML fails instead of waiting invisibly.

Lifecycle delivery

Lifecycle provider tags require a message. They are informational, have no decision authority, and failed delivery becomes a lifecycle warning rather than changing the business outcome. Secret interpolation in message templates is forbidden.

Notify several destinations

WOML
<notify>
  <telegram
    chats="123456789 -1001234567890"
    bot-token="{{secrets.TELEGRAM_BOT_TOKEN}}"
  />
  <discord
    channels="200000000000000001"
    bot-token="{{secrets.DISCORD_BOT_TOKEN}}"
  />
</notify>

Each destination gets its own delivery identity and capability. Approving from any successful delivery settles the same approval. A later opposing click conflicts instead of changing the decision.

One successful approval notification is enough to enter the durable wait. If every configured delivery fails, WOML fails the approval instead of creating an invisible wait that no person can reach.

Send lifecycle information

WOML
<lifecycle>
  <on-complete>
    <notify>
      <telegram
        chats="123456789"
        message="Order workflow completed"
        bot-token="{{secrets.TELEGRAM_BOT_TOKEN}}"
      />
    </notify>
  </on-complete>
</lifecycle>

Lifecycle notifications cannot approve work and cannot change the business outcome. A failed delivery becomes a durable lifecycle warning and may produce completed_with_warnings.

Keep messages safe

Templates may include allowed context or lifecycle values, but secret interpolation is forbidden. Avoid placing sensitive payloads, approval tokens, personal data, or complete failure objects in ordinary message text.