> ## Documentation Index
> Fetch the complete documentation index at: https://docs.groundforge.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Twilio WhatsApp

> Connect Twilio WhatsApp to the LangChain weather Agent.

<img src="https://mintcdn.com/groundforgeai/V4bCNZADLwZmOUhb/images/logos/twilio.svg?fit=max&auto=format&n=V4bCNZADLwZmOUhb&q=85&s=23137771bd5787e2f879be0b011b0f6f" alt="Twilio" width="180" height="52" data-path="images/logos/twilio.svg" />

Complete [LangChain Agent Example](/examples/langchain-agent) and keep the Agent process running.

## 1. Create the Channel

In **Channels**, choose **Twilio WhatsApp**. Enter the Twilio Account SID, authentication credential, and WhatsApp sender. GroundForge verifies Twilio signatures by default.

Attach the Channel to the weather Agent and publish the Agent.

## 2. Configure the callback

Copy the callback shown by GroundForge after publishing:

```text theme={null}
https://platform.groundforge.ai/v1/agents/{agent_id}/channels/{channel_id}/callback
```

Paste it into Twilio’s inbound-message webhook field. When status callbacks are enabled, GroundForge also shows the separate status URL.

> **Screenshot placeholder**\
> Add `/images/guides/twilio-callback.png` showing the GroundForge callback and matching Twilio webhook field.

## 3. Preview the delivery test

```bash theme={null}
export TEST_WHATSAPP_TO="whatsapp:+<country-code><recipient-number>"

gforge channels test <channel-id> \
  --to "$TEST_WHATSAPP_TO" \
  --body "What is the weather in Ottawa?" \
  --dry-run \
  -o yaml
```

Check the Channel ID, recipient, and body.

## 4. Send the test

Run the same command without `--dry-run`:

```bash theme={null}
gforge channels test <channel-id> \
  --to "$TEST_WHATSAPP_TO" \
  --body "What is the weather in Ottawa?"
```

For the Twilio sandbox, the recipient must have joined the sandbox. Store the sandbox sender in the Channel; pass the recipient only in the test command. Sender and recipient must be different.

## 5. Follow the request

Open **Traces** and confirm Channel input, `get_weather`, the Gateway decision, and Channel output.


## Related topics

- [Channels](/concepts/channels.md)
- [LangChain Agent Example](/examples/langchain-agent.md)
- [External Agents](/platform/external-agents.md)
- [Supported Features](/features.md)
