Portal Community

Send a Confirmation Text

The simplest possible use — send a plain-text confirmation after an order or booking completes.

{
  "resource": "message",
  "operation": "send-text",
  "phoneNumberId": "1055...",
  "to": "+14155551234",
  "text": "Your order #4821 has shipped and will arrive within 3 business days."
}

Send an Image with a Caption

Send a receipt or product photo referencing a publicly hosted image, no prior upload needed.

{
  "resource": "message",
  "operation": "send-image",
  "phoneNumberId": "1055...",
  "to": "+14155551234",
  "mediaUrl": "https://cdn.example.com/receipts/4821.png",
  "caption": "Receipt for order #4821"
}

Upload Then Send (Reusable Media)

When the same asset (e.g. a logo or catalog image) is sent repeatedly, upload it once and reuse the mediaId — cheaper than re-hosting a public URL per send.

  1. media/upload with fileBase64, fileName, mimeType → returns mediaId
  2. message/send-image with that mediaId for each recipient

Send an Approved Marketing Template

Templates are required for messages sent outside the 24-hour customer service window.

{
  "resource": "message",
  "operation": "send-template",
  "phoneNumberId": "1055...",
  "to": "+14155551234",
  "templateName": "order_shipped",
  "languageCode": "en_US",
  "componentsJson": "[{\"type\":\"body\",\"parameters\":[{\"type\":\"text\",\"text\":\"4821\"}]}]"
}

Interactive Quick-Reply Buttons

Ask a yes/no/maybe question with tappable buttons instead of parsing free-text replies.

{
  "resource": "message",
  "operation": "send-interactive-buttons",
  "phoneNumberId": "1055...",
  "to": "+14155551234",
  "bodyText": "Would you like to confirm your appointment for 3pm tomorrow?",
  "buttonsJson": "[{\"id\":\"confirm\",\"title\":\"Confirm\"},{\"id\":\"reschedule\",\"title\":\"Reschedule\"}]"
}

Build a Catalog and Send a Product Card

A minimal commerce workflow: create a catalog, add a product, then send it as a product card.

  1. commerce/create-catalogbusinessAccountId, name → returns catalogId
  2. commerce/add-productcatalogId, name, price, currency, imageUrl
  3. commerce/send-single-productto, catalogId, productRetailerId, bodyText

Broadcast to a Group

Create a group once, then send updates to it as things change.

  1. group/createsubject, participantPhoneNumbers → returns groupId
  2. group/send-messagegroupId, text (repeat as needed)
Human-in-the-loop pattern (planned): message/send-and-wait is designed for workflows that pause for a reply — e.g. "Reply YES to confirm" — before continuing. It's routed today but not yet backed by an implementation; see Roadmap. Until it ships, build the equivalent with send-interactive-buttons plus a separate inbound-message trigger.