Skip to content
Get Help

Braze | Amazon SES Configuration

Overview ​

Connect Braze with Amazon Simple Email Service (Amazon SES) to Branch so your email links deep link users into your app with full tracking and attribution.

Every tracked link opens your app

Amazon SES rewrites every tracked link in your email to your click tracking domain (CTD), including footer links such as unsubscribe, privacy policy, and terms of service. When you add the CTD to your app's Associated Domains, iOS opens your app for every one of those links before the request reaches Branch. Android App Links work the same way once Branch hosts your assetlinks.json file. Branch can't send a link to the browser on its own, because the operating system never sends the click to Branch.

Before you send to customers, handle every link that has no screen in your app. Either add the $web_only=true flag and make sure your app handles it, or exclude the link from click tracking. Otherwise, those links fail for every user who has your app installed. See Route web-only links.

How it works ​

  1. A user selects a link in an email from their mobile mail client, such as Gmail or Apple Mail.
  2. If the user has the app installed, the operating system opens the app. Branch routes the user to the matching in-app content, such as a product detail page or category shopping page.
  3. If the user doesn't have the app installed, Branch routes the user to the web URL in their default mobile browser.
  4. If you flag a link as web-only, your app opens the web URL in the browser. Your app must include the web-only handler for this to work.

Before you begin ​

Note

Branch Email requires the following roles to enable:

  • Developers
  • CRM/Email Team
  • Braze Account Manager / Support Team
  • AWS SES Account Manager / Support Team

To enable Braze + Amazon SES, you first need to:

  1. Have admin access to Branch.

  2. Have Branch's Engagement product enabled for your Branch account.

  3. Implement the Branch SDK into your mobile app (iOS | Android).

  4. Review the Email Overview and Basic Email Integration Guide to understand the feature and our integrations.

  5. Obtain or set up your Amazon SES click tracking domain (CTD). Contact your Amazon SES account manager for assistance.

Enable Braze + Amazon SES ​

Complete the following steps to connect and configure the Braze + Amazon SES integration in Branch.

Connect Braze + Amazon SES in Branch ​

In Branch, navigate to Email > Manager, find Braze Amazon SES under More Integrations, and select Enable.

Input click tracking domain ​

Click tracking domains (CTDs) let you track engagement on email opens and link selections.

The Braze + Amazon SES integration requires you provide the following:

  • Click Tracking Domain: The domain you use with Braze + Amazon SES for links in emails.
  • Amazon SES Domain: The domain Amazon SES uses to collect data.

For additional help, see Amazon's documentation on custom open and click domains.

Caution

  • Remove https:// when adding your click tracking domain.
  • Never add the same CTD to both your Live and Test Branch environments.
  • You can enable the integration with multiple CTDs, if needed, but you can't add the same CTD to multiple Branch instances or ESP integrations.

Configure your app ​

Update your iOS app configuration to support deep linking from your Braze + Amazon SES email links.

Add your Braze + Amazon SES CTD to your associated domains ​

For your iOS app, add the CTD to the Associated Domains. Find additional details in the iOS basic integration guide.

Once the CTD is an associated domain, iOS opens your app for every link on that domain, not only the links you intend to deep link. Important: before you ship your app, complete the steps to Handle web-only links in your app.

Return YES to continueUserActivity ​

Add the CTD to your iOS app's Info.plist file. Find additional details in the iOS advanced features guide.

When a user who has your app installed selects a web-only link, the operating system opens your app. The Branch SDK then returns the link data to your deep link handler. The Branch SDK doesn't open the URL for you: it doesn't show any UI, open a WebView, or launch a browser. Your app must check for the $web_only parameter and open the original URL itself, either in the system browser or in an in-app browser such as SFSafariViewController on iOS or Chrome Custom Tabs on Android. Without this handler, unsubscribe, privacy policy, and other web-only links open your app and go nowhere.

Point DNS CNAME to Branch ​

Follow your web hosting provider's instructions to configure your DNS CNAME.

Here are a few common providers' instructions for reference:

Update the DNS CNAME and point it to thirdparty.bnc.lt. Once you add the CNAME record, allow up to an hour for Branch to generate SSL and AASA files for your click tracking domain.

Note: Important CNAME info

  • Branch must be enabled and reflect the CTD before you add the CNAME.
  • If the CTD already has SSL setup, confirm your security credentials allow a third party to submit a CSR on behalf of the domain. If not, contact Branch Support to coordinate providing an SSL certificate manually.
  • Once you add the CNAME, Branch auto-generates an SSL certificate and AASA file for your click tracking domain. It may take up to an hour to resolve SSL errors. During this time, link redirects on the click tracking domain redirect to the Default URL you provided in General Configuration.
  • If you are making this change to a live domain with active email traffic, schedule the CNAME change during off-hours with low traffic.

Before you send a campaign, decide what each link in the email does and flag it accordingly. You don't need to tag every link. Tracked links open your app by default, so only links that must open a web page need a flag. Every link falls into one of three groups:

Link typeExamplesWhat to do
Opens a screen in your appProduct page, category page, account pageNo flag required to open the app. Add $deep_link=true as a query parameter so Branch converts the link to a Branch Link with deep link data and attribution.
Opens a web page, with click trackingPromotion landing page, blog postAdd $web_only=true as a query parameter. Requires the web-only handler in your app.
Opens a web page, no click trackingUnsubscribe, privacy policy, terms of service, links whose URL Braze generatesAdd the ses:no-track attribute to the anchor tag so Amazon SES leaves the link alone.

Add deep linking flag ​

For the email links that you want to deep link to content, add $deep_link=true to the URL as a query parameter:

html
<a href="https://www.example.com/products/123?$deep_link=true">Link to your app!</a>

This converts your links to Branch Links that open the app on iOS and Android, with full tracking and attribution.

All tracked email links open the app on devices that have it installed. To route a link to the web instead, add $web_only=true to the URL as a query parameter:

html
<a href="https://www.example.com/promo?$web_only=true">Read more on our site</a>

When a user selects this link, your app opens, reads the $web_only flag, and opens the web URL in the browser. The handler in Handle web-only links in your app does this for you. Braze and Amazon SES still record the click, and Branch still attributes it.

Amazon SES doesn't rewrite a link that carries the ses:no-track attribute, and it removes the attribute before the email reaches the recipient. The href stays on your own domain, so the link opens in the browser on every device and never touches your CTD or your app. Braze, Amazon SES, and Branch don't record engagement on it.

html
<a ses:no-track href="https://www.example.com/privacy">Privacy policy</a>
<a ses:no-track href="{{${set_user_to_unsubscribed_url}}}">Unsubscribe</a>

Use this attribute for footer links that must work on every device and don't need click tracking. Also use it for links whose URL Braze generates with Liquid, where you can't reliably append a query parameter. For details, see Amazon's email sending metrics FAQs.

Tag email campaigns for analytics ​

To view email campaign performance in Branch, tag your email links with the ~campaign tag. If your team uses UTM tags, Branch also ingests utm_campaign. This helps remove duplicate counts and surface downstream events. You can add the campaign tag in any comparisons and filters across dashboard views.