Skip to content

Make Triggers

The Watch Events module is an instant trigger. When you turn a scenario on, it registers a webhook subscription with Tenreply for the event you select; when you turn it off, the subscription is removed. Use one Watch Events module per event — add more modules (in separate scenarios) to react to different events.

Events

EventFires when
message.receivedA customer sends a new message
message.sentAn agent or automation sends a message
message.deliveredA sent message is delivered
message.readA customer reads a message
message.failedA message fails to send
conversation.createdA new conversation starts
conversation.status_changedA conversation is opened, closed, or set to pending
contact.createdA new contact is added
contact.updatedA contact record is updated
broadcast.completedA broadcast finishes sending
conversation.assignedA conversation is assigned or unassigned
contact.taggedTags are added to or removed from a contact
sequence.enrolledA contact is enrolled in a sequence
sequence.completedA contact finishes a sequence
social_post.publishedA social post goes live
social_post.failedA social post fails to publish
comment.receivedSomeone comments on an Instagram or Facebook post
deal.createdA deal is added to a pipeline
deal.stage_changedA deal moves to another stage
deal.status_changedA deal is marked won, lost, or reopened

Payload examples for every event are in the webhook event catalog and the n8n triggers reference.

Event payloads

message.received

{
"id": "msg_abc123",
"conversationId": "conv_xyz",
"contactId": "contact_def",
"type": "text",
"content": { "text": "Hello, I need help!" },
"status": "delivered",
"waMessageId": "wamid.abc",
"timestamp": "2026-06-01T10:00:00.000Z"
}

conversation.created / conversation.status_changed

{
"id": "conv_xyz",
"status": "open",
"channel": "whatsapp",
"contactId": "contact_def",
"assignedAgentId": null,
"createdAt": "2026-06-01T10:00:00.000Z"
}

contact.created / contact.updated

{
"id": "contact_def",
"phoneNumber": "+1234567890",
"name": "Jane Doe",
"email": "jane@example.com",
"tags": ["vip"],
"createdAt": "2026-06-01T10:00:00.000Z"
}

message.sent / message.delivered / message.read / message.failed

Same schema as message.received with the updated status field.

broadcast.completed

{
"broadcastId": "bcast_123",
"name": "June promo",
"sent": 842,
"failed": 3,
"completedAt": "2026-06-01T11:00:00.000Z"
}

Signature verification

Each delivery includes the header X-Tenreply-Signature: sha256=<hmac-hex>, computed with HMAC-SHA256 over the raw request body using the secret returned when the subscription was created. Add a verification step in your scenario if you need to enforce it.