Communications: merge variables with fallbacks, test send, reply-to, and stricter templates
- Merge variables are a closed set, with fallbacks.
{{name}},{{first_name}},{{email}}and{{identity_name}}, plus the links{{unsubscribe_url}}and{{consent_url}}. Write{{name|there}}to use a fallback when a contact has no name. Any other tag is refused when you schedule (400 UNKNOWN_MERGE_VARIABLE, with the tags invariables) instead of being sent as literal braces.POST /templates/validatereports it earlier, as a warning withblocksScheduling: true, and its preview now uses the same renderer as the sender. - Test send.
POST /campaigns/{id}/test-sendsends the campaign to the account owner's verified address only, marked[TEST], with no tracking and no effect on statistics or webhooks. Limited per campaign and per account (429 TEST_SEND_LIMIT). - Reply-To, and a better From name. Campaigns take an optional
reply_to. Whenfrom_nameis empty, recipients now see the workspace name instead of the internal campaign name. - Templates are validated on save.
PATCH /templates/{id}checks the merged result (422 TEMPLATE_INVALID), and a template'stypecannot change (400 TYPE_IMMUTABLE). Template responses includeupdated_at. Prose that merely mentionsonclickorjavascript:no longer raises a false warning. - Also documented:
POST /recipients/bulk-permanent-delete.
Documentation changed