Skip to Content
📚 Documentation is in active development — pages marked TODO will fill out over the next few weeks.
InboxSending replies

Sending replies

The composer sits at the bottom of every open conversation.

Reply options

  • Type text — plain text. Cmd/Ctrl+Enter to send. Supports {{contact.first_name}} variable substitution.
  • Saved replies — pre-canned text from /dashboard/saved-replies. Pick from the dropdown, edit if needed, send.
  • Send template — pick from approved Meta templates. Fill body / header / URL button variables. Required outside the 24-hour service window.
  • Media attachment — image, video, audio, document. Up to Meta’s per-type size cap.
  • Location — share a pin (latitude + longitude) or request the customer’s.
  • Interactive — reply buttons, list pickers — usually built via the Flow Builder rather than ad-hoc here.
  • Start a flow — from the composer toolbar; triggers any published flow on this conversation.

The 24-hour customer service window

Meta policy: outbound free-form messages are only allowed within 24 hours of the customer’s last inbound. Outside that window, only approved template messages can be sent.

The composer enforces this:

  • Inside the window — text composer enabled
  • Outside the window — text composer disabled, “Send template” badged as required

The countdown resets every time the customer sends anything (text, button tap, sticker, …).

Sending a template that isn’t approved by Meta returns a Meta-side error. The inbox surfaces the error text in red on the failed message bubble. Re-submit the template via the dashboard /dashboard/templates page if needed.

Variable substitution

Every text reply is substituted server-side:

  • {{contact.[field]}} — per-contact attribute (reserved or custom)
  • {{account.[field]}} — linked account attribute
  • {{agency.[field]}} — workspace-wide attribute
  • {{contact.first_name | "friend"}} — fallback when missing

See Variables for the full reference.

Last updated on