Rudderstack - Singular Hybrid Integration (Singular SDK + Rudderstack Cloud-Mode)

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:

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

What's Supported

The Singular SDK will provide support for:

  1. Install Attribution
  2. SkAdNetwork Support
  3. Google Install Referrer Support
  4. META Install Referrer Support
  5. Apple Search Ads Attribution
  6. Custom In-App Event Tracking
  7. Revenue tracking
  8. Custom User ID
  9. Global Properties Support
  10. Privacy options

The Rudderstack "Cloud-Mode" integration will provide support for:

  1. Custom In-App Event Tracking
  2. Revenue tracking
  3. Custom User ID

Hybrid Configuration

  1. Integrate the Singular SDK

    Implement the Singular SDK independently from Rudderstack. See the SDK Options and Frameworks HERE.

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

iOS(Obj-C) Android(Java)

- (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;}

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.