Documentation Index
Fetch the complete documentation index at: https://docs.tedro.io/llms.txt
Use this file to discover all available pages before exploring further.
Trigger Nodes
Trigger nodes are the entry points of every workflow. They define what event starts the workflow execution. Every workflow must have exactly one trigger node.
trigger.inbound_message
Entrypoint for inbound WhatsApp messages.
This is the primary trigger node used in production workflows. When a customer sends a WhatsApp message to your connected number, this node fires and passes the message data into the workflow.
Configuration
No configuration required. This node is auto-configured when placed on the canvas.
Outputs
The trigger node passes the following data to connected nodes:
| Output | Type | Description |
|---|
message.text | string | The text content of the inbound message |
message.type | string | Message type (text, image, document, etc.) |
contact | object | The sender’s contact record (name, phone, tags, custom fields) |
conversation | object | The active conversation context (ID, status, history) |
timestamp | string | ISO 8601 timestamp of the inbound message |
Connections
- Inputs: None (this is the entry point)
- Outputs: Single output handle connecting to the next node in the flow
Example Use Case
Every customer-facing workflow starts with this node. When a customer sends “Hi, I need help with my order,” the trigger captures the message and passes it to an AI Router or AI Respond node for processing.
trigger.manual_test
Builder preview testing trigger.
This node is used exclusively in the workflow builder for testing your workflow without sending real WhatsApp messages. It simulates an inbound message with test data you define.
Configuration
| Option | Type | Required | Description |
|---|
testMessage | string | Yes | The simulated message text to send through the workflow |
Outputs
Same output shape as trigger.inbound_message — your workflow logic works identically with both trigger types.
| Output | Type | Description |
|---|
message.text | string | The test message text you configured |
contact | object | A mock contact record |
conversation | object | A mock conversation context |
Connections
- Inputs: None (this is the entry point)
- Outputs: Single output handle connecting to the next node in the flow
Example Use Case
While building a customer support workflow, use this node to test how your AI Respond node handles different message types (questions, complaints, greetings) without needing to send real WhatsApp messages. Switch to trigger.inbound_message before publishing.
The trigger.manual_test node is for builder preview only. Published workflows always use trigger.inbound_message as their entry point.
trigger.broadcast_reply
Starts when a contact replies to a broadcast message.
This trigger fires when a contact sends a reply to a specific broadcast campaign. Use it to build follow-up workflows that handle responses to your outbound campaigns — for example, processing opt-ins, answering questions about a promotion, or routing interested leads.
Configuration
| Option | Type | Required | Description |
|---|
broadcastId | string | Yes | The ID of the broadcast campaign this trigger listens for replies to |
Outputs
| Output | Type | Description |
|---|
message.text | string | The text content of the reply message |
message.type | string | Message type (text, image, document, etc.) |
contact | object | The replying contact’s record (name, phone, tags, custom fields) |
conversation | object | The conversation context |
broadcast | object | The originating broadcast campaign details (name, ID, sent date) |
timestamp | string | ISO 8601 timestamp of the reply |
Connections
- Inputs: None (this is the entry point)
- Outputs: Single output handle connecting to the next node in the flow
Example Use Case
You send a promotional broadcast about a new product. Contacts who reply with “interested” are routed through an AI Agent that provides product details and collects their order preferences. Connect this trigger to a logic.switch node to branch based on reply content.
Each broadcast reply trigger is linked to a specific campaign. To handle replies from different broadcasts, create separate workflows with their own trigger.broadcast_reply nodes.
Channel-Specific Triggers
The following triggers restrict workflow execution to messages from a single channel. Use these when your workflow logic is channel-specific — for example, a workflow that only handles WhatsApp messages differently from other channels.
For workflows that should handle messages from any channel, use trigger.inbound_message instead. Channel-specific triggers are useful when you need different automation logic per channel.
trigger.whatsapp_message
Channel: WhatsApp — Starts only when a WhatsApp message arrives.
This trigger fires exclusively for inbound WhatsApp messages. Use it when your workflow contains WhatsApp-specific logic, such as template sending or WhatsApp-specific formatting.
Configuration
No configuration required. Auto-configured when placed on the canvas.
Outputs
Same output shape as trigger.inbound_message.
| Output | Type | Description |
|---|
message.text | string | The text content of the WhatsApp message |
message.type | string | Message type (text, image, document, audio, etc.) |
contact | object | The sender’s contact record |
conversation | object | The active conversation context |
timestamp | string | ISO 8601 timestamp |
Connections
- Inputs: None (entry point)
- Outputs: Single output handle
trigger.instagram_message
Channel: Instagram — Starts only when an Instagram DM arrives.
This trigger fires exclusively for inbound Instagram direct messages. Use it for Instagram-specific automation flows.
Configuration
No configuration required. Auto-configured when placed on the canvas.
Outputs
| Output | Type | Description |
|---|
message.text | string | The text content of the Instagram DM |
message.type | string | Message type (text, image, video, etc.) |
contact | object | The sender’s contact record |
conversation | object | The active conversation context |
timestamp | string | ISO 8601 timestamp |
Connections
- Inputs: None (entry point)
- Outputs: Single output handle
Instagram messages have a 1,000 character limit and do not support rich formatting or buttons. Plan your automation responses accordingly.
trigger.messenger_message
Channel: Messenger — Starts only when a Facebook Messenger message arrives.
This trigger fires exclusively for inbound Messenger messages. Use it for Messenger-specific automation flows.
Configuration
No configuration required. Auto-configured when placed on the canvas.
Outputs
| Output | Type | Description |
|---|
message.text | string | The text content of the Messenger message |
message.type | string | Message type (text, image, video, etc.) |
contact | object | The sender’s contact record |
conversation | object | The active conversation context |
timestamp | string | ISO 8601 timestamp |
Connections
- Inputs: None (entry point)
- Outputs: Single output handle
trigger.livechat_message
Channel: Live Chat — Starts when a live chat message arrives from a website visitor.
This trigger fires exclusively for messages from your website’s live chat widget. Use it for website-specific automation, such as greeting visitors or qualifying leads from your site.
Configuration
No configuration required. Auto-configured when placed on the canvas.
Outputs
| Output | Type | Description |
|---|
message.text | string | The text content of the live chat message |
message.type | string | Message type (text, image, document, etc.) |
contact | object | The visitor’s contact record (includes pre-chat form data if collected) |
conversation | object | The active conversation context |
timestamp | string | ISO 8601 timestamp |
Connections
- Inputs: None (entry point)
- Outputs: Single output handle
Live Chat has no messaging window restrictions. Automated responses can be sent at any time during an active visitor session.