toldguard

ToldGuard nodes for n8n workflows and aggregator-only message routing

Documentation

n8n-nodes-toldguard

Community nodes for using ToldGuard inside n8n workflows.

The aggregator-only mode is for flows where n8n receives messages from any source, sends them to ToldGuard for debounce/deduplication, and receives one consolidated batch back in n8n. ToldGuard does not need Chatwoot in this mode and does not send the final answer to the customer.

Nodes

  • ToldGuard Message sends one normalized upstream chat message into a ToldGuard aggregator_only instance.
  • ToldGuard Aggregation Trigger receives the aggregation.ready batch emitted by ToldGuard.

Aggregator-Only Workflow

Use this mode when n8n owns the upstream chat integration, AI/CRM workflow, and final channel delivery.

Any source -> n8n -> ToldGuard Message -> ToldGuard
ToldGuard -> ToldGuard Aggregation Trigger -> n8n continues the flow

Inbound messages:

Chat / CRM / Webhook -> ToldGuard Message

Aggregated batch:

ToldGuard Aggregation Trigger -> AI / CRM / analytics / channel delivery

Configure the ToldGuard API credential with:

  • Base URL: for example https://toldguard.com
  • Tenant ID: the aggregator-only instance ID
  • Aggregator Input Token: the instance input token generated in ToldGuard

Set the production webhook URL from ToldGuard Aggregation Trigger as the instance output webhook in ToldGuard. If a signing secret is configured in ToldGuard, put the same secret in the trigger.

For a user-facing setup guide, see the ToldGuard SaaS documentation:

docs/n8n-aggregator-node.md

ToldGuard Message Input

The message node posts to:

POST /aggregator/messages/:tenantId

It sends this contract:

{
  "conversation_id": "external-conversation-id",
  "message_id": "external-message-id",
  "sender": "user",
  "content": "message text",
  "content_type": "text",
  "created_at": "2026-06-14T12:00:00.000Z",
  "contact_id": "optional-contact",
  "inbox_id": "optional-inbox",
  "phone_number": "optional-phone",
  "source_channel": "whatsapp",
  "attachments": [],
  "raw_event_ref": "optional-event-id",
  "raw_payload": {}
}

ToldGuard returns accepted, duplicate, or ignored in toldguard.status.

Aggregation Trigger Output

The aggregation trigger exposes:

  • event
  • tenant_id
  • batch_id
  • conversation_id
  • message_count
  • consolidated_text
  • raw_payload_common
  • messages
  • toldguard
  • request
  • raw

raw_payload_common contains the repeated fields that were identical across the original upstream payloads in the batch. Each item in messages may include raw_payload_delta, with only the fields that changed from raw_payload_common. ToldGuard does not repeat the complete raw payload in every message by default. This is universal JSON compaction and does not depend on Chatwoot.

Discussion