Iterable Email Service Provider (ESP) Attribution Integration

Integration Summary

Singular's integration with Iterable lets you measure app installs and re-engagements with Iterable emails that wrap your deep-link-enabled Singular Links.

Although link wrapping generally breaks the deep link experience, Singular's 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 are created with 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

1. Set Up a Custom Tracking Domain (CTD) to use with Iterable

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.

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

3. 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)

4. Set Up Email

Create a Singular Link for your email, using the same Singular Link subdomain (e.g..." "https://<yoursubdomain> "k") 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.
  • For iOS support, if the email campaign is Owned media, you must add the `_smtype=3` parameter to the tracking link before applying your email template (learn more).

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.


How does Singular report on attributions from Iterable emails?
Attributions for Iterable emails appear just like any other reporting using a custom Singular Link. For more information, read about Singular Links and Tracking Link Parameters that can be used to customize reporting.
Why is my deep link 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 a Singular Link has deep linking enabled if it has a _dl= parameter in the URL.
Was this article helpful?