Notify

Overview

Notify pulls compound actions into the chat spotlight, sending messages to specific users with embedded actions, shown as buttons, that can perform various actions when clicked.

Action Types

TypeFunction
Content ActionDeliver an inline message. Ideal for links or summaries
System ActionTriggers an action with input arguments
Conversation ActionStarts a conversation process. Inputs args must be declared as slots in the process.

Low-Code Editor

Add a Notify step, define the recipient, the content of the message they are receiving, and what actions they'll be provided with.

  1. Prepare Essentials: Set the notification's recipient and informational message.
  1. Add Actionable Task: Add a button that can trigger an HTTP, compound, or script action.
  1. Start a Conversation: Add a button that invokes a conversational flow with the user.
  1. Add More Content: Provide a button that provides inline content that doesn't require fetching or starting a conversation.

Syntax Reference

Schema

notify:  # Delivers message + buttons to user
  output_key: RESULT_VAR*  # str: Stores interaction results
  recipient_id: USER_ID*   # str: e.g., data.user.id
  message: MSG_EXPR*       # DSL str or RENDER() template
  actions:                 # Optional list[dict]
    - key: ACTION_KEY      # Unique str ID
      label: BUTTON_TEXT   # Display DSL str
      # ONE of:
      content_action:
        message: CONTENT_MSG
      system_action:
        action_name: ACTION_NAME
        input_args:
					key: VAL
      conversation_action:
        conversation_process_name: PROCESS_NAME  # Published plugin
        input_args: 
					slot_name: VAL   # Match process slots

Fields

FieldTypeMandatoryDescription
output_keystringYesCapture's button outcome. Currently returns NULL
recipient_idstringYesID of the target user
messagestringYesDSL expression field
actionslist[dict]NoButtons displayed to user

Action Types

FieldKeysUse Case
content_actionmessageQuick info drops.
system_actionaction_name, input_argsInvoke actions
conversation_actionconversation_process_name, input_argsStart conversation processes

Practical Examples

Example 1: Simple Ticket Alert

Notify assignee with a link

notify:
  output_key: alert_sent
  recipient_id: data.target_user.id
  message: 
    RENDER():
      template: "Hello {{name}}, <b>T-{{id}}</b> assigned to you. Follow runbook."
      args: 
        name: data.target_user.first_name
        id: data.ticket.display_id 

Expectation: User will receive a simple notification message with the ID of the ticket they were assigned

Example 2: Multi-Option Response

Offer multiple options to the user

# input args: data.ticket
notify:
  output_key: user_choice
  recipient_id: data.target_user.id
  message: 
    RENDER():
      template: "Ticket {{id}} assigned—act now."
      args:
        id: data.ticket.id
  actions:
    - key: view
      label: "View Ticket"
      content_action: 
        message: 
          RENDER():
            template: "View ticket {{id}}"
            args:
              id: data.ticket.id
    - key: convert
      label: "Convert to Bug"
      system_action:
        action_name: convert_support_issue_to_known_bug
        input_args: 
          support_ticket: data.ticket

Expectation: User will receive a notification about a ticket that was assigned to them. They will be provided two buttons, one to look at the ticket and one to convert the ticket.

Example 3: Handoff to Conversation

Alert the user and collection more information

# input args: data.ticket
notify:
  output_key: handoff_result
  recipient_id: data.target_user.id
  message: 
    RENDER():
      template: "[{{id}}]({{url}}) assigned—need details?"
      args: 
        id: data.ticket.display_id, 
        url: $CONCAT(["https://notion.so/", data.ticket.sys_id], "")
  actions:
    - key: send_back
      label: "Send Back"
      conversation_action:
        conversation_process_name: collect_reason_for_send_back_and_send_case_back_to_case_owner
        input_args: 
          support_ticket: data.ticket 

Expectation: User receives the notification and are prompted to start a conversational process to send back the ticket for more information.