Salesforce Marketing Cloud Email Service Provider (ESP) Attribution Integration

Singular's integration with Salesforce Marketing Cloud (SFMC) lets you measure app installs and re-engagements with SFMC emails that wrap your deep-link-enabled Singular Links.

While link wrapping usually breaks the deep link experience, this integration allows you to serve deep links as well as measure attributions to both installs and app opens from emails driving users into your mobile app.

The integration is based on a deep-link-enabled click tracking domain (CTD) configured in SFMC. When emails that include Singular Links are served to your users, SFMC automatically wraps any Singular Link used in your email. Users who don't have the app installed will be redirected to the fallback configured in your Singular Links. Users who install the app are measured as an app install attributed to the Singular Link.

Returning users will be deep-linked into the app, where deep link handling is handled through your Singular SDK implementation. These users are measured as Re-Engagements to the Singular Link.



  • Singular Links for iOS and Android
  • Singular SDKs
    • iOS SDK 11.0.0+
    • Android SDK 11.0.0+


Setup Instructions


Set Up Custom Tracking Domain in SFMC

In order for universal links to work from the ESP link click, first you must configure a custom tracking domain to use in SFMC. Refer to the following SFMC guides:


Set Up SSL Click Recording

You must include SSL certificate in your Salesforce Marketing Cloud account: SSL Certificates for Account Branding guide.


Deep Link Configuration in SFMC

In the side menu of your Email Studio Admin Panel, configure a new deep link or modify existing ones by clicking Send Management > Deep Linking. To create a new one: 

  1. Click create to add new configurations 
  2. Enter your AppID - this value is a concatenation of your Apple developer Team ID and Bundle ID from your Apple developer account
    • e.g. ""
  3. Save
  4. SFMC will create an AASA file for your CTD. Verify the AASA file by replacing <yourCTD> with your custom tracking domain in the url below
    • https://<yourCTD>/apple-app-site-association

Update Singular SDK Implementation

Register the custom tracking domain as an ESP domain, prior to initializing the Singular SDK. This allows the Singular SDK to recognize the branded link domain opening the app, allowing the Singular SDK to handle the deep link and attribution the re-engagement.


SingularConfig* config = [[SingularConfig alloc] initWithApiKey:apiKey andSecret:secretKey];
config.espDomains = @[@""];


SingularConfig config = new SingularConfig(apiKey, secretKey)

Set Up Email

Create a deep link enabled Singular Link for your SFMC email

  • Verify that it has the proper deep link destination(s) enabled and it is configured for ReEngagement Tracking.
  • Be sure to append any reporting parameter you'd like to use for reporting via link parameters.  See all supported granularity parameters.

Add Singular Link to Email and Test

Add your Singular Link to your email in Salesforce Email Studio.

Expected Behavior:

SFMC wraps the Singular link in the custom tracking domain, and users click the wrapped link in the email. In the case of a returning user clicking the link, the user will deep link into the app, and the Singular SDK will measure the app open engagement since the click tracking domain is registered in the Singular SDK. If the user doesn’t have the app installed, they will be redirected to the “if app not installed” fallback url configured on the Singular link.

Notes and Tips:

  • Attributions for SFMC emails work just like any other attributions based on Singular Links. For more information, see Singular Links and Tracking Link Parameters.
  • If your deep link is not working:
    • Ensure your custom tracking domain and destination paths are properly configured in SFMC. This includes uploading the proper Apple App Site Association file for your app.
    • Ensure that the Singular Link embedded in your emails is also configured with deep linking. You can tell if a Singular Link has deep linking enabled if it has a _dl= parameter in the URL.