Design and launch contextually relevant digital marketing campaigns to reach every consumer. Oracle Responsys helps you manage, personalize, and orchestrate interactions across all channels to deliver timely, helpful messages in the moments that matter—all without code, complex technical training, or reliance on other experts.
DEVELOPER MAY BE REQUIRED
The following Universal Email prerequisite includes providing URI schemes and other components that may require a developer:
DEVELOPER REQUIRED
The following Universal Email prerequisites involve app code changes:
To enable the integration:
Branch automatically detects any global link settings you have already provided during the initial setup of your Branch account as outlined above.
If you have not set up your global link settings and redirect preferences, you will be prompted to do so at this time.
Click tracking domains allow you to track engagement on email opens and link clicks.
If you're unsure what your click tracking domain (CTD) is, take a look at one of your recently sent emails. If you hover over the link or right-click/copy the link address, you will see that the domain of the link in the email does not match the URL in your HTML. This domain is your click tracking domain used by your ESP to provide you click reporting.
The Oracle Responsys integration requires you provide the following:
Remove
http://
orhttps://
when adding your click tracking domain in the Branch dashboard
KEEP IN MIND
Before you click NEXT and proceed to the Validate & Test section, please complete the following section as it’s required for passing integration validation.
Please follow your web hosting provider’s instructions on how to configure your DNS CNAME. Here are a few common provider’s instructions for reference:
Important CNAME Info
Once the SSL certificates and AASA file (iOS only) have been generated, you can proceed to reviewing the validation tests, fix any issues and then test the integration.
Branch automatically validates the following:
Common Validation Issues
CNAME Does Not Point to Branch
Pointing your DNS CNAME to Branch is a vital step of the integration process. Unfortunately, it’s also the step that causes the most headaches.
Please make sure to do the following:
- Log into your DNS provider’s console and add the CNAME record as described here.
- Wait at least 60 minutes after you’ve added the CNAME record so that it has time to propagate and Branch can create the resulting SSL certificates and AASA files (for iOS apps only).
SSL Not Correctly Set Up
If you are having issues with the SSL certificate validating, the culprit is generally the fact that your click tracking domain already has SSL set up and there are restrictions that prevent a 3rd party from submitting a Certificate Signing Request on your behalf.
AASA File is Invalid
Luckily the easiest issue to fix as the main reason for this error is the fact that it depends on the SSL being set up correctly. By addressing the SSL error, the AASA file error should resolve itself simultaneously.
Once the validation process is complete, you can test the integration by generating a test link. The test link generated by Branch is unique in that it’s already converted to a Branch link for you and allows you to test without creating an email template in your ESP. In reality, this conversion happens behind the scenes once a user clicks on your normal email template link.
To generate a test link:
Once you’ve generated your test link, click the link on your mobile device; don’t forget to make sure your mobile device already has the app installed!
There are a few different ways you can create Branch links that are compatible with Universal Email + Responsys. You will need to replace the web URLs in your templates with these. To create Branch links, you can either:
Responsys uses the shortcode e_rs
for links in emails - please use this in place of e_xx
in the guide below.
1. Use the Branch Responsys SDK
In this step, we'll upload an SDK that makes it very easy to create deep links in your emails. Please remember that this will require an EMD (Email Message Designer) enabled account.
Watch how to do this instead
There is also a tutorial video that walks through these steps.
DOMAIN-HERE
with your Branch base domain:<#macro deeplink link_to_be_wrapped><#assign branch_base_url="https://DOMAIN-HERE/3p?%243p=e_rs"><#assign final_link=branch_base_url + "&%24original_url=" + link_to_be_wrapped?url("ISO-8859-1")><a href="${final_link}"><#nested></a></#macro> <#macro tracked_deeplink link_to_be_wrapped><#assign branch_base_url="https://DOMAIN-HERE/3p?%243p=e_rs"><#assign deeplink=branch_base_url + "&%24original_url=" + link_to_be_wrapped?url("ISO-8859-1")></#macro>
Log in to your Responsys account.
In the Responsys Dashboard, open your Content Library. You can also access it via the Shortcuts screen on the main page:
Once you are in the Content Manager, you’ll see a list of folders where content is stored. Under All Content, create a new folder named Branch_SDK
:
Select the Branch_SDK folder and then click Create Document:
In the Create Document window:
Enter branch-sdk
in the “Document Name” field.
In the Content Box, delete all the text.
Paste the snippet you copied in 1.
Click Save.
You have now successfully created the deep linking script. Your file structure should look as follows:
Configure your Responsys email templates
This code is referred to as the "Branch script" - this script will convert your web URLs to deep links.
The Responsys integration requires you to add email template code in two places.
Copy the following snippet, and using the “Source” view, paste the snippet directly under the <html>
tag for every template you plan to add deep linking to.
<#include "cms://contentlibrary/Branch_SDK/branch-sdk.htm">
Configuring the Responsys Link Table
For the Branch SDK to generate Branch links in the email or the 3P links while redirections, the Link Tracking table for the email template should contain the following two LINK NAME with the ${deeplink}
as the LINK URL.
For creating tracked links, ensure that ‘Track Link’ is set to ON. Tracked links will be generated under the Responsys Click Tracking Domain and will then redirect to a Branch 3p link (the link added as the base URL in the Branch_SDK.htm file.
Create deep links
Wherever you are using <a>
tags in your email templates, replace those with <@deeplink>
tags, or add <@tracked_deeplink />
for web URLs that you would like to deep link.
Here's how it looks with Link Tracking disabled.
Before:
<a href="https://branch.io">Example link</a>
After:
<@deeplink "https://branch.io">Example link</@deeplink>
{% endexample %}
With link tracking enabled, you can still use Branch links in emails.
Before:
<a href="https://branch.io/product/1234">Example link</a>
After:
<@tracked_deeplink "https://branch.io/product/1234" /> <a href="${clickthrough('TEST_TRACKED_DEEPLINK' , 'deeplink=' + deeplink)}">Example link</a>
This latter example pulls from a Link Table.
2. Making regular Branch links compatible with email
Be sure to add "$3p":"e_xx"
to the deep link data of any links you use in email to ensure Universal Link and click tracking works as expected.
3. Create email links via API without changing your email templates
To create email links via API, please use the instructions on how to create links via API, but include the following key value pairs in your call:
"$3p":"e_xx"
This is required for Universal Link and click tracking functionality."$original_url":"{{your web url URI encoded}}"
For each piece of content, include a URI encoded version of your content's web URL. You can also add deep link data as query parameters on that web URL. This ensures accurate Content Analytics reporting."$original_url":"https%3A%2F%2Fshop.com%2Fshoes%2Fbrown-shoes%3Fmy_key%3Dmy_value%26campaign%3Dshoe_discounts"
4. Convert all web links in your email to deep links
We have provided a way of easily converting web links to Branch links. The example takes an html email (as a string) and applies the script to it.
Here is the script:
var crypto = require('crypto');
module.exports = function(original_url, branch_base_url) {
if (!original_url) { return new Error('Missing original_url'); }
if (typeof original_url != 'string') { return new Error('Invalid original_url'); }
if (!branch_base_url) { return new Error('Missing branch_base_url, should be similar to https://bnc.lt/abcd/3p?%243p=e_xx'); }
if (typeof branch_base_url != 'string') { return new Error('Invalid branch_base_url'); }
return branch_base_url + '&%24original_url=' + encodeURIComponent(original_url);
};
Here is how links look before and after (the latter being a Branch deep link).
Note that these are simplified examples, not actual demo links.
Handle links for web-only content
In some cases you may have content on web that isn’t in the app - for example, a temporary Mother’s Day promotion or an unsubscribe button. You can designate links to only open on web if you use the Responsys Link Table feature. There are three URL fields in the link table when creating a new link: LINK_URL
, IOS_LINK_URL
, and ANDROID_LINK_URL
. If you only enter the link in the LINK_URL
field, the path of the final click-wrapped url will begin with /pub/cc
. However, if you also input the same link in IOS_LINK_URL
, then the path of the final click-wrapped url will begin with pub/acc
. You should set up your AASA file to whitelist only the path /pub/acc*
in order to not launch the app from web-only links.
Styling
If you include style tags within your <a>
tags, you’ll need to separate those out into a separate div inside the <@deeplink>
tag. If you use tracked links with <a>
tags, those will work fine.
Style Tags within your anchor tags like so:
Before:
<a href="https://branch.io/" style="color:#000001; text-decoration:none;">Branch Website</a>
After:
<@deeplink "https://branch.io/"><div style="color:#000001; text-decoration:none;">Branch Website</div></@deeplink>
Launch failed error
You’ll see this error if you haven’t included the <#import >
snippet in your template.
Launch Failed: Launch failed: Template /contentlibrary/branch test campaign/My Default Template.htm caused an execution error: on line 183, column 92 in cms://contentlibrary/branch test campaign/Content.htm: deeplink is not a user-defined directive. It is a freemarker.template.SimpleScalar
Using dynamic data from profile extension tables
The <@deeplink >
and <@tracked_deeplink />
tags even work with dynamic links injected via RPL.
<@deeplink "${latestProduct.url}">${latestProduct.name}</@deeplink>