scheduled taskschannelsdata tablescontacts
Message a whole data table, and let customers opt out of marketing on WhatsApp
Send one message per row of a filtered data table, and honour STOP and START on your WhatsApp numbers.
New
- Audience Message — a new scheduled task action that messages everyone in a data table who matches your filters, one message per row, on WhatsApp or Telegram. No agent runs, so it says exactly what you wrote. See audience messages.
- Filters that follow the calendar — compare a column against
{{today}},{{today+7d}}or{{today:MM-DD}}and a recurring audience finds a different set of people each run. That is how a due-date reminder or a birthday greeting is built. See choosing who receives it. - A template parameter can read a column — bind it to
first_nameoramount_dueand every recipient gets their own value. See writing the message. - Check who matches — preview an audience before you save it. It reports how many people will be messaged, shows a sample with addresses partly hidden, and counts the rows it will skip for having no address. See checking who matches.
- STOP and START on WhatsApp — a customer can reply STOP to stop receiving marketing templates and START to resume, and gets a confirmation either way. Utility templates such as payment reminders are unaffected. See opting out of marketing messages.
- A reply continues the conversation — if a recipient replies to an audience message, the agent picks up the thread the message opened, with the campaign for context, instead of starting cold.
- A demo link carries your Sandbox theme — the mode, accent colour, font and corner radius you set in the Sandbox are saved with the demo, so a prospect sees the widget styled the way you styled it. See how the demo looks.
Improved
- Pickers list what you can add as soon as you open them, rather than waiting for you to type. This applies wherever you choose a contact or a data table — scheduled tasks, channel allow and deny lists, and the new audience editor.
- Entries say which column they match on — a row now reads "Phone Number: +65•••4567", and a whole-table entry names every identity column it covers, so a table with more than one is no longer ambiguous. See who you can add.
- The channel picker on a scheduled task now offers a contact's WhatsApp or Telegram identity even when they have never messaged, and selects one for you when there is no history.
Fixed
- A recurring WhatsApp template task sent on its first run and never again. Affected tasks now send on every occurrence — worth checking any that looked dormant before you leave them enabled.
- A scheduled task saved for a contact with no reachable channel was accepted and then failed quietly at run time. Saving or re-enabling one is now refused, with the reason. See managing tasks.
- Asking an agent for records in a date range — "orders due this week" — returned an error instead of results.
- One unreachable Telegram recipient could use up the retry budget meant for the rest.
- The dashboard chat composer stopped accepting messages when the conversation had been ended in another tab or had expired. It now starts a fresh one and sends.
- An agent allowed to add or edit data table fields could change the structure of any table in the workspace, including tables it had no access to. It is now limited to tables it has update permission on.
- Importing many records at once skipped validation that a single record write already had. A bad row is now reported instead of being written and only failing later. See when a write is rejected.
Changed
- Contact and data table pickers now show only tables the agent may read. If a table has disappeared from one, grant that agent read access on the table's Permissions tab and it returns. See permissions.
- An agent that adds or edits fields on a data table now needs update permission on that table, not only the tools. Grant it in the same place.
- Widget SDK 0.8 is out. Existing embeds keep working — copy a fresh snippet from the agent's Channels → Widget settings next time you touch the page. See the widget SDK.