Iterable Email Service Provider (ESP) Attribution Integration

Singular's integration with Iterable lets you measure app installs and re-engagements with Iterable 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 Iterable. When emails that include Singular Links are served to your users, Iterable 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 a Custom Tracking Domain (CTD)

This domain must be an HTTPS-enabled domain, rather than Iterable's default link tracking domain. There are a few reasons for this, as listed by Iterable: help center article:

  • Apple requires that iOS apps pull apple-app-site-association files from an HTTPS-enabled endpoint, without redirects. Since Iterable hosts this file for your app (as configured by your site's DNS), you'll need to enable HTTPS.
  • Android requires that assetlinks.json files be served with HTTPS. Since Iterable hosts this file for your app, as configured by your site's DNS, you'll need to enable HTTPS.
  • Iterable hosts each tracking domain's aggregate apple-app-site-association file at https://<YOUR_TRACKING_DOMAIN>/apple-app-site-association, and assetlinks.json file at https://<YOUR_TRACKING_DOMAIN>/.well-known/assetlinks.json.

    It is not possible for Iterable's default tracking domain ( to host these files for all the various Iterable projects that use it as a tracking domain.


Configure Destination Domains and Paths in Iterable

Configure destination domains and paths for your custom tracking domain. This includes uploading an apple-app-site-association file to Iterable, to enable iOS deep linking. See Iterable's instructions for creating a destination domain and path.

When uploading the iOS apple-app-site-association file for your Iterable destination domain, copy and paste the contents of the apple-app-site-association file hosted on your Singular Link domain. E.g. "https://<yoursubdomain>".

No assetlink.json file is needed for your Android path.


Update Singular SDK Implementation

Register the Iterable custom tracking domain as an ESP domain, prior to initializing the Singular SDK. This allows the Singular SDK to recognize the custom tracking 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 Singular Link for your email, using the same Singular Link subdomain (e.g... "https://<yoursubdomain>") used in previous steps.

  • 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.

Place the Singular Link in your email. When users click on this link, Iterable will wrap this link with your CTD. 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 CTD is registered in the Singular SDK.

Notes and Tips:

  • Attributions for Iterable emails work just like any other attributions based on Singular Links. For more information, se 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 Iterable. 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.