The examples below use the default API address
https://api.voucherify.io.If your API endpoint is in a different region, remember to change it.Rate limiter
When configuring campaigns in Braze, limit the number of messages sent by Braze per minute. This secures both Braze and Voucherify APIs against hitting too much traffic from your campaign. Limit the sending rate accordingly to your API rate limits in Voucherify. Consider your other API call needs.Add caching to calls
Caching reduces the number of API calls triggered by Braze. Connected Content calls don’t cache by default and will make two API requests per each call. This can quickly drain your hourly and monthly limits. The caching mechanism limits that to one API call per one request. Add caching to calls as follows:- Provide a caching key
cache_id={{cache_id}}in the destination endpoint query parameter, so Braze can identify a unique call. First, define the variable and then append the unique query string to your endpoint. In the example, this will differentiate each publication by thesource_id. - Add a
:cache_max_ageattribute. You can customize the duration using seconds. It can be set between 5 minutes to 4 hours. Example::cache_max_age 3600will cache for 1 hour.
By default, the caching duration is 5 minutes.
Caching in publications
Braze caches the API calls based on the URL. The unique string used as a query parameter is ignored by Voucherify, but it distinguishes different API requests for Braze and allows to cache each unique attempt separately.Without that query parameter, every customer will receive the same value (for publications, the same coupon code) for the cache duration.
Retry attribute
Add a retry attribute in the Connected Content script, as Connected Content does not validate the Voucherify response. Braze will try to retry 5 times before aborting the message, while respecting the rate limiter. This method prevents cases like failed code publication when it takes a little longer to fetch data from Voucherify.Retry in publications
Unique publication per customer
Thesource_id parameter in the script body for publications ensures that each customer can receive only one unique code in a single Braze campaign. Even if Braze unintentionally multiplies the request, each user will receive the same unique code that was published to them in the first message.
Source ID in publications
{{source_id}} and its effect on publications with the following configurations.
| Configuration | Effect |
|---|---|
{{campaign.${dispatch_id}}} | Ensures that all customers within a single send-out will use the same publication. |
{{campaign.${api_id}}} | Ensures that all customers within a single campaign will use the same publication. |
{{${user_id}}} or {{${braze_id}}} | Ensures that every customer will use the same publication no matter which campaign is sent (you can use ${user_id} which is an external ID and ${braze_id} which is an internal ID). |
{{campaign.${dispatch_id}}} and {{campaign.${user_id}}} | Each customer within a single send-out will use the same unique publication. |
Publication with customer can join only once
If your Voucherify campaign is set to Customers can join campaign only once, remove publication source ID from the script body. Voucherify ensures that each Braze message to the same customer will deliver the same code that was published in the first message. Your Connected Content script should be as follows:Converting Connected Content scripts to Canvas
The examples above are prepared for Braze campaigns. However, you can use them in Braze Canvas as well. To use the script in Canvas, delete the line with{% assign braze_campaign_id = {{campaign.${api_id}}} %} and add {% assign braze_id = canvas.${id} %}.
Solving issues
If your Connnected Content script doesn’t show data from Voucherify API, go to Audit logs in Voucherify. Check if there are any errors and the request and response payloads.Next steps
- Connected Content script reference: API endpoints, script templates, and parameter configurations

