Documentation / Workflows

Building blocks: conversation and messages

Minimum role
Organisation admin
Applies per
organisation
Last updated
11 October 2026
aishaa version
80c056408

Menu path: Account > Workflows > (open a workflow) > Add step > Do

In short: four blocks work on the run’s conversation: ticket.update (Update conversation) assigns, sets the status and marks as important or urgent; ticket.label (Put on a label) puts on a label; ticket.forward (Forward by e-mail) sends the customer’s message to an address outside the organisation; message.send (Message to the customer) writes to the customer in the conversation. All four need a run that is about a conversation.

Where to find this

Account > Workflows, open a workflow, Add step, group Do. Who: from the role Organisation admin.

A Message to the customer step in the workflow editor with the Message field, the How choice (A colleague reads and sends it or Send at once), For, Deadline (minutes) and, for each exit, the If choice.

ticket.update: Update conversation

Updates the run’s conversation the way a colleague does: give it to a colleague or a team, set the status, mark it as important or urgent. Every input is optional; whatever you leave out stays as it is.

Input

Name Label Type Required Values and explanation
assignee For User no The user id of the colleague who gets the conversation. Left out: whoever has it keeps it.
team Team SupportGroup no The id of an active team of the conversation’s organisation. The team’s work distribution chooses the colleague, unless assignee names one.
status Status Choice no keep (Leave as it is, default), open (Open), answered (Answered), closed (Closed)
important Important Choice no keep (Leave as it is, default), yes (Yes), no (No)
urgent Urgent Choice no keep (Leave as it is, default), yes (Yes), no (No)

Exits: none; continues with next.

Output fields

Field Label Content
assignee For The user id of the colleague who now has the conversation.
status Status The status of the conversation after the step, such as Open or Closed.

Good to know

  • The colleague is set first, then the team: giving a conversation to a person empties the team, so the team comes last.
  • With a team that distributes in turn, each run takes the next turn, so two runs never pick the same colleague.
  • The step fails if the run is not about a conversation, the conversation no longer exists, the team does not (or no longer) belong to the organisation, or the colleague may not handle the organisation’s conversations.

When to use it: to assign per route, to mark a conversation as answered after a workflow wrote to the customer, or to make it urgent. A message from message.send does not change the status; do that with ticket.update.

ticket.label: Put on a label

Puts a label of the account on the run’s conversation. A label that is already there stays.

Input

Name Label Type Required Explanation
label Label Label yes The id of a label of the account, as a number.

Exits: none; continues with next.

Output fields: label (Label), the name of the label.

The step fails if the run is not about a conversation, the conversation no longer exists or the label no longer exists. Without labels in the account you cannot use this block.

Tip: if you sort with agent.choose, use that step’s input labels: then you sort and label in one step.

ticket.forward: Forward by e-mail

Forwards the customer’s message the run started on to an e-mail address outside the organisation (a supplier, another department), with an optional note above it. It is the same built-in message to an external party that a colleague sees on the ticket.

Input

Name Label Type Required Explanation
to To Text yes The e-mail address. Must be a valid address.
note Note LongText no A note above the forwarded message.
mode How Choice no propose (default, A colleague checks and sends it): a colleague checks the address and note, can edit the note and sends it; the step waits. execute (Send at once): it goes out straight away under the name of the organisation.
assignee For User no Only with propose: the colleague who checks and sends it. Left out: everyone.
deadlineMinutes Deadline (minutes) Number no Only with propose: minutes until the proposal expires. 7 days by default, at most 30 days.

Exits: none; the step continues with next, whatever the colleague decided. The field status says what happened. If the sending itself fails, the step fails (catch that with onError).

Output fields

Field Label Content
to To The address it went to.
status Status Executed (sent), Rejected (rejected) or Expired (expired).
note Note The note as it was sent.
edited Edited by a person true if a colleague edited the note.
executedBy Executed by Who sent it; empty with execute.
error Error The error, if there was one.
actionId Action The id of the proposal.

Good to know

  • The step needs the trigger’s message (trigger.messageId): start the workflow on message.understood (or message.received). Otherwise the step fails.
  • A message to an external party is critical. Leave mode on propose until the organisation trusts the workflow.
  • The title of the proposal in To do is the step’s label. So give the step a clear label.

When to use it: to pass a certain kind of question on to a supplier or department with its own mailbox. If you want to continue based on what the colleague decided, use flow.switch or flow.condition on {{<step>.status}}.

message.send: Message to the customer

Writes the customer a message in the run’s conversation, in the conversation’s own channel, through the same sending queue as a colleague’s reply.

Input

Name Label Type Required Explanation
message Message LongText yes The text to the customer, in their language. May contain references, such as {{schrijf.text}}.
mode How Choice no propose (default, A colleague reads and sends it): a colleague reads it, can edit it and sends it; the step waits. execute (Send at once): it goes out straight away under the name of the organisation, with its automatic signature.
assignee For User no Only with propose: the colleague who reads and sends it. Left out: everyone.
deadlineMinutes Deadline (minutes) Number no Only with propose: minutes until the proposal expires. 7 days by default, at most 30 days.

Exits

Exit Label When
sent sent The message has been sent.
failed failed Sending did not work: the run is not about a conversation, the message is empty, or the channel does not allow it (with WhatsApp after 24 hours without a message from the customer).
rejected rejected A colleague rejected the proposal.
expired expired Nobody handled the proposal before the deadline.

Output fields

Field Label Content
status Status Executed, Failed, Rejected or Expired.
message Message The text as it was sent or proposed.
edited Edited by a person true if a colleague edited the text.
executedBy Executed by Who sent it; empty with execute.
error Error The error, if there was one.
actionId Action The id of the proposal.

Good to know

  • If a colleague sends the proposal, it goes out as their own message, with their signature. With execute, it goes out under the name of the organisation, so there is never a name under it of someone who did not see it.
  • A message from the editor in HTML goes out as HTML; plain text goes out as paragraphs.
  • A message from a workflow is not a reply: it does not change the status or the waiting of the conversation, never marks it as failed if it fails, does not count as a reply and does not become the preview in the list. If the workflow should mark the conversation as answered, add ticket.update with status answered afterwards.
  • The title of the proposal in To do is the step’s label.
  • If another workflow also answers the same message, the colleague who sends it sees that another workflow already wrote to the customer. You can mark a workflow that deliberately writes next to the reply (such as an acknowledgement) as a workflow that may write next to an answer (see Answering customer messages with workflows).

When to use it: for a fixed or composed message that no agent needs to write: an acknowledgement, a reminder after a wait step, a message with data from a connected system. When not to: for the reply to the customer’s question. Use agent.reply for that.

Good to know

  • All four blocks work on the conversation the run is about. A run on schedule.due, or on recording.transcribed without a ticket, has no conversation: message.send then goes via failed, the other three fail.
  • Proposals from ticket.forward and message.send land in To do and on the ticket.
  • After a proposal from the same step has been sent unchanged 10 times in a row, aishaa offers Do this itself from now on (see Building blocks of a workflow).

Related

Last updated on 11 October 2026. Checked against aishaa version 80c056408. Something wrong or missing? Email support@aishaa.nl.