RudderStack is an open-source customer data platform (CDP) that enables businesses to collect, unify, and route customer data to various destinations. It provides a centralized platform for managing customer data pipelines, allowing organizations to easily collect data from various sources such as websites, mobile apps, servers, and cloud services.
The Singular SDK offers many features that are not available through the standard "Device-Mode" or "Cloud-Mode" integration options.
Integrating through a hybrid methodology is recommended when using Rudderstack with Singular to take advantage of all the Singular features and functionality.
The Hybrid approach consists of:
- Implementing the Singular SDK independently of Rudderstack, allowing for the Singular SDK to handle Session tracking, addition support for SDK Frameworks (React Native, Unity, etc.), SkAdNetwork, deep link and deferred deep links, and advanced features.
- Enabling the "Cloud-Mode" option in Rudderstack for a Singular Destination. This allows for all Rudderstack mobile track events to be sent to the Singular's Destination.
The instructions below illustrate how to configure a Singular Hybrid implementation with Rudderstack.
Guide for | Engineering Teams |
Prerequisites | This article assumes you already have the Rudderstack Mobile SDK integrated in your app. |
To use this integration, you must be using Rudderstack's Mobile SDKs.
The Singular SDK will provide support for:
- Install Attribution
- SkAdNetwork Support
- Google Install Referrer Support
- META Install Referrer Support
- Apple Search Ads Attribution
- Custom In-App Event Tracking
- Revenue tracking
- Custom User ID
- Global Properties Support
- Privacy options
The Rudderstack "Cloud-Mode" integration will provide support for:
- Custom In-App Event Tracking
- Revenue tracking
- Custom User ID
Hybrid Configuration
- Integrate the Singular SDK
Implement the Singular SDK independently from Rudderstack. See the SDK Options and Frameworks HERE.
- Enable the Rudderstack - Singular Destination (Cloud-Mode)
Follow the Guide HERE.
Recommended Additional Setup
When using a Hybrid Methodology, it is recommended to pass the Rudderstack AnonymousId and the Rudderstack User ID to Singular's SDK.
Take special note and care to implement these optional features from the SDK documentation. Steps may vary slightly depending on the framework you are using.
Implement Global Properties
Pass the Rudderstack AnonymousId into a Singular Global Property. This will associate the Rudderstack AnonymousId to device-level data from the SDK.
The Global Property should be configured when initializing the Singular SDK with the key: rudderstack_anonymous_id and the value of the Rudderstack anonymousId retrieved from the Rudderstack SDK. The Rudderstack AnonymousID can be sourced from the Rudderstack SDK using this method [iOS][Android].
[RSClient getInstance].anonymousId;
Example Singular SDK Config
- (SingularConfig *)getConfig {
// Get the 3rd-party identifiers to set in Global Properties:
// If 3rd-party SDKs are providing any identifiers to Singular, the
// respective SDK must be initialized before Singular.
NSString* thirdPartyKey = @"rudderstack_anonymous_id";
NSString* thirdPartyValue = [RSClient getInstance].anonymousId;
// Singular Config Options
SingularConfig* config = [[SingularConfig alloc]
initWithApiKey:APIKEY andSecret:SECRET];
...
// Using Singular Global Properties feature to capture 3rd-party identifiers
[config setGlobalProperty:thirdPartyKey
withValue:thirdPartyValue overrideExisting:YES];
...
return config;}
// (Optional) Get 3rd-party identifiers to set in Global Properties:
// If 3rd-party SDKs are providing any identifiers to Singular, the
// respective SDK must be initialized before Singular.
String thirdPartyKey = new String("rudderstack_anonymous_id");
String thirdPartyValue = new String(RudderClient.getInstance()?.anonymousId);
// Singular Config Options
SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
.withGlobalProperty(thirdPartyKey, thirdPartyValue, true);
Implement Custom User ID
Pass the Rudderstack UserId into the Singular Custom User ID method. This will associate the Rudderstack UserId to device-level data from the SDK. Providing this value to Singular in the Singular Config object at the time of the Singular SDK Initialization will also allow Singular to send the UserId on the Install postback to Rudderstack. Read More for the SDK Framework documentation you are using for the Singular integration. Example of [iOS][Android]
Additionally, the UserID will be associated with any in-app event triggered natively from the Singular SDK.
For the "Cloud-Mode" events received, Singular has mapped the Custom User ID to the Rudderstack User ID value.