Twilio WhatsApp ContentSid template sending as plain text from n8n (no buttons)

Hi everyone :waving_hand:

I’m using n8n Cloud with the Twilio WhatsApp API, and I’m struggling to get an interactive WhatsApp template (with quick reply buttons) to send correctly from an n8n workflow.


Setup

  • Platform: n8n Cloud

  • Node: HTTP Request → Twilio Messages API

  • Channel: WhatsApp Business (Production)

  • Template: Approved WhatsApp template with 3 quick reply buttons

  • From Twilio Console (“Try WhatsApp”):

    • The template sends perfectly as an interactive message with buttons.

    • So the template itself is valid and approved.


What I’m doing in n8n

I’m calling the Twilio Messages API like this (simplified):

POST https://api.twilio.com/2010-04-01/Accounts/<ACCOUNT_SID>/Messages.json

Parameters:

  • To: whatsapp:+<recipient_number>

  • From: whatsapp:+<sender_number>

  • ContentSid: <my_template_content_sid>

  • I’ve also tried adding ContentVariables: {}


Actual behavior

Instead of sending the interactive template with buttons, Twilio:

  • Returns a message SID starting with MM... (looks like a regular message)

  • Returns a JSON response that includes a body field with the text of the template, for example:

{
  "sid": "MMxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "body": "Template text here...",
  "status": "queued"
}

  • On the phone, the user receives only plain text, no buttons.

  • There is no error about the ContentSid being invalid – Twilio accepts the request.

From Twilio’s docs and examples, I expected that when using ContentSid:

  • The response wouldn’t include a free-text body

  • The SID wouldn’t look like a standard MM message

  • The user should see the interactive buttons

  • If ContentSid was wrong/misconfigured, I’d get an error rather than a silent fallback to plain text


What I’ve tried

  • Sending only To, From, ContentSid (no Body) :white_check_mark:

  • Adding ContentVariables: {} :white_check_mark:

  • Verifying the template is approved and interactive in Twilio Console :white_check_mark:

  • Testing from Twilio Console (works exactly as expected) :white_check_mark:

  • Changing parameter order :white_check_mark:

Occasionally I also see:

  • 63002: Channel could not find the From address

  • 12300 webhook errors (Content-Type issues)

…but these feel like separate side issues; the main problem is the loss of interactivity/buttons when called from n8n.


What I’m hoping to learn

  1. Has anyone here successfully sent interactive WhatsApp templates with quick reply buttons from n8n using ContentSid?

  2. Is there anything about the n8n HTTP Request node (form vs JSON, extra fields, encoding, etc.) that might cause Twilio to ignore ContentSid and treat the message as a normal text message?

  3. Do I need to explicitly ensure that no Body field at all is sent from n8n?

  4. If you have a working n8n node configuration for Twilio WhatsApp interactive templates (with ContentSid), could you share a screenshot or example payload (with secrets redacted)?

Happy to share my current HTTP Request node configuration (with sensitive info removed) if that helps debug.

Thanks in advance for any pointers :folded_hands: