Braze customers can send SMS from SmarterSends through either Braze native SMS or Braze - Webhook. Connect the workspace using Braze Integration first, then choose the delivery method under Integrations → SMS/MMS.
An Admin manages integration settings. Template authors need Manage Templates; campaign creators need Create SMS. Send SMS allows sending without the normal approval requirement, subject to other applicable restrictions.
Choose the delivery method
| SMS Provider | How delivery works |
|---|---|
| Braze | SmarterSends supplies a native SMS message to Braze, using a Braze SMS Subscription Group, SMS variation and the workspace's App ID. |
| Braze - Webhook | SmarterSends supplies a webhook message to Braze. Braze calls your configured HTTPS destination for each recipient, and that destination handles SMS/MMS delivery. |
The webhook option is available when the Email provider is Braze. Choosing it does not provision an SMS service at the destination.
For native SMS, prepare an SMS-enabled Braze account, its sending numbers and SMS Subscription Group ID. For webhook delivery, prepare the destination endpoint, authentication if required, JSON payload requirements, group location values and a Webhook message variation in the Braze API Campaign.
Configure shared SMS settings
- Open Integrations and select the SMS/MMS card.
- Under SMS Provider, choose Braze or Braze - Webhook.
- Complete the shared settings and the provider-specific fields below.
| Setting | How to use it |
|---|---|
| MMS Enabled | Enable when the selected delivery service supports MMS. Add an image to the campaign when needed. |
| Stop Language | Text used when building the SMS template body. Leave blank if your delivery service supplies the appropriate footer. Check the final message to avoid duplicate text. |
| Include From Name in Message | Includes the template's From Name in the message body when the template content is built. This is not a sending-number selector. |
| Maximum Message Length | Enter an integer from 160 to 800. This sets the template text-entry limit; it does not guarantee the length or number of SMS segments after personalization and added content. |
After changing From Name or Stop Language settings, review and save affected templates and test the final campaign content.
If Test API Access appears, select it to validate the settings and reveal Save. In this SMS settings form, that button checks the entered configuration; it does not make an end-to-end Braze or destination test request. Select Save and confirm SMS Settings Updated. The card's Connected status indicates saved configuration.
Configure native Braze SMS
With SMS Provider = Braze, complete:
| Setting | What to enter or enable |
|---|---|
| SMS Subscription Group ID | The identifier of the Braze SMS Subscription Group used for these sends. |
| SMS Message Variation ID | The SMS variation from the API Campaign configured in the Email integration. |
| Link Tracking Enabled | Enables Braze link shortening and campaign-level click tracking. |
| User Click Tracking Enabled | Enables user-level click tracking and also enables link shortening for the outgoing request. |
A group's Braze SMS Message Variation ID takes precedence over the integration default. Keep the Email integration's App ID, Campaign ID and default Message ID configured as well.
Manage native sending numbers and their subscription group in Braze. The native SMS settings in SmarterSends do not have a sender-number field. The From Name in a template is message text, not a replacement for the sending number.
Native SMS sends include the subscription group and tracking choices. If MMS is enabled and the campaign has an image, SmarterSends supplies the image URL to Braze. See Braze's SMS message reference for those channel fields.
Configure Braze - Webhook
With SMS Provider = Braze - Webhook, complete the following settings:
| Setting | What to enter |
|---|---|
| Webhook URL | The HTTPS endpoint Braze should call. The integration sends a POST request with a JSON body. |
| Authentication Header Name | Optional destination header, such as Authorization. Use letters, numbers and hyphens. |
| Authentication Header Value | The full value required by the destination. Supply both name and value when first configuring authentication. |
| Location UID Group Content Area | Select a group content area that supplies each group's location identifier. |
| Default Location UID | Required fallback when the group has no value for the selected content area. |
| Default Webhook Message Variation ID | The Webhook variation in the configured Braze API Campaign. A group's Braze Webhook Message Variation ID takes precedence. |
| Webhook JSON Body Template | A valid JSON object matching the destination's payload requirements. Use supported tokens for campaign and group values. |
SmarterSends adds Content-Type: application/json and Accept: application/json. Do not use either name for the authentication header.
The authentication value is stored encrypted. Leave its value field blank to retain the saved value. To remove it, use Remove Authentication Header, then save.
The webhook uses its own variation ID. Native SMS subscription-group and link-tracking fields are not included in the webhook message. Configure sending numbers, tracking, opt-out processing and delivery behavior in the destination service as required by your setup.
Build the JSON body
Use these tokens inside JSON string values:
| Token | Value |
|---|---|
%%location_uid%% |
The selected group content area's value, or Default Location UID. |
%%sender_name%% |
The campaign's From Name. |
%%message_body%% |
The prepared campaign message body. |
%%media_url%% |
The campaign image URL when MMS is enabled; otherwise an empty string. |
%%message_type%% |
marketing or transactional, based on the campaign classification. |
Braze Liquid is preserved for Braze to resolve. The supplied default JSON body includes a recipient phone-number expression, {{${phone_number}}}. Keep a suitable recipient identifier in the payload so the destination knows whom to message.
Adapt the JSON to the destination's requirements. The default body does not include the media or message-type tokens; add them to the appropriate fields if your destination needs them. Enabling MMS alone does not add a media field to that JSON.
See Braze's webhook message reference for the webhook channel.
Configure the Marketing Consent Filter
For production Marketing webhook campaigns, you can require a Braze custom attribute to match a rule:
- Enable Marketing Consent Filter → Require marketing consent.
- Enter the case-sensitive Consent Attribute Name.
- Choose Consent Attribute Type and Consent Comparison.
- Enter Consent Value when the comparison requires one.
- Save the settings.
For example, an attribute named SMS_consent, type Boolean, comparison equals, and value True requires that attribute to match. Confirm the attribute and its values exist in the Braze workspace; this setting does not create or populate them.
Supported types are String, Array, Number, Boolean and Time. Available comparisons depend on the type. Multi-value comparisons use comma-separated values. Absolute Time values need an ISO-8601 timestamp with a timezone; relative comparisons use a nonnegative number of days.
The filter is added as an AND condition alongside the campaign's existing targeting. It applies to Marketing webhook campaigns using segments, imported lists or connected audiences.
This optional filter is off by default. It does not apply to native SMS, Transactional webhook campaigns, or test sends. It does not enroll anyone in a native Braze SMS Subscription Group. Test it separately with a controlled production Marketing campaign containing only approved test contacts.
Create an SMS template
- Open Templates and create an SMS template.
- Set its name and default From Name. Use Lock From Name if campaign editors must not change it.
- Enter the message text and add content areas for fields campaign creators may edit.
- Review the preview, including any From Name prefix and Stop Language, then save.
- Create a campaign from the template and check the rendered content.
Use the content area's actual numeric ID in its placeholder. For example, %%contentarea12%% inserts content area 12. To omit a block when that content area is empty, use:
{%conditional-12-begin%}
%%contentarea12%%
{%conditional-12-end%}
Template editing and campaign creation require separate permissions. See Permission Descriptions.
Test a message
For both Braze delivery methods, the test-recipient field takes the email address of a Braze test profile, not the phone number.
- Prepare an approved test profile in Braze with the email address, its external ID and a valid phone number. For native SMS, confirm the profile is eligible for the selected SMS Subscription Group.
- Open the SMS campaign and review its final content and any image.
- Enter that profile's email in Test Account and use the test-send action.
- Check the actual phone and the Braze result. For webhook delivery, also inspect the destination's request and delivery result.
SmarterSends looks up the email and uses the returned profile's external ID, falling back to the email when no external ID is returned. Use an unambiguous test email belonging to the intended profile. An unknown email does not establish a phone number or a usable SMS recipient.
Tests target that profile directly, request all subscription states and override Braze messaging limits in the test request. They bypass the optional webhook Marketing Consent Filter and production audience selection. A successful test is therefore not proof that the production audience or consent configuration is correct.
Marketing and Transactional SMS
When Allow Transactional Campaigns? is enabled in the Braze Email integration, users with Use Transactional can select Campaign Classification for eligible SMS campaigns.
Follow the transactional-campaign instructions in Braze Integration. Classification affects recipient selection, applicable Send Limits and the webhook Marketing Consent Filter. It does not replace the destination's own recipient and delivery rules.
Understand status and reporting
For native Braze SMS, SmarterSends retrieves supported statistics from Braze. Availability depends on what Braze reports and the tracking settings.
For Braze - Webhook, SmarterSends does not retrieve native SMS delivery or engagement statistics. A successfully scheduled webhook campaign can become Sent after its scheduled time passes. That status does not confirm the webhook was delivered successfully or that a recipient received an SMS.
Recipient data export is unavailable for webhook SMS campaigns in SmarterSends. Check Braze's webhook results and the destination service for delivery outcomes. A missing statistic in SmarterSends should not be interpreted as zero deliveries, clicks or failures.
Troubleshooting
- Save fails: Complete the required fields. The webhook body must be a JSON object, not an array, and its URL must use HTTPS.
- Test reports success but no SMS arrives: Check the Braze profile's email, external ID and phone number, native subscription-group eligibility, or the webhook destination's delivery result.
- Wrong group variation or location: Check the group override and the integration fallback.
- Webhook authentication fails: Check the header name, complete value and destination requirements. Save the replacement value when rotating credentials.
- Marketing consent is not filtering a test: Test sends bypass that filter. Verify its behavior in a controlled production Marketing campaign.
-
MMS image is absent in webhook delivery: Include
%%media_url%%in a destination-supported JSON field and enable MMS.
Comments
0 comments
Article is closed for comments.