Skip to main content

Singular

Singular is one of the leading Mobile Measurement Partner (MMP) platforms, that collects and presents data from marketing campaigns. This helps companies track their campaign performance.

Adapty provides a complete set of data that lets you track subscription events from stores in one place. With Adapty, you can easily see how your subscribers are behaving, learn what they like, and use that information to communicate with them in a way that's targeted and effective. Therefore, this integration allows you to track subscription events in Singular and analyze precisely how much revenue your campaigns generate.

Adapty can send all subscription events which are configured in your integration to Singular. As a result, you'll be able to track these events within the Singular dashboard. This integration is beneficial for evaluating the effectiveness of your advertising campaigns.

How to set up Singular integration

To set up the integration with Singular, go to Integrations > Singular in your Adapty Dashboard, turn on a toggle, and fill out the fields.

For this integration to work, the Singular SDK Key is required. It can be found in Singular dashboard: Developer tools -> SDK Keys -> SDK Key (not SDK Secret):

Below the credentials, there are three groups of events you can send to Singular from Adapty. Check the full list of the events offered by Adapty here.

We recommend using the default event names provided by Adapty. But you can change the event names based on your needs.

Adapty will send subscription events to Singular using a server-to-server integration, allowing you to view all subscription events in your Singular dashboard and link them to your acquisition campaigns.

warning

Profiles created prior to configuring the integrations will not be able to deliver their events to Singular.

No need for SDK configuration

There is no need to configure the SDK from your side at the moment — as Adapty already collects the data required by Singular and this integration is server-to-server. In case it ever changes, we'll let you know.

Singular event structure

Adapty sends events to Singular via a GET request using query parameters. Each event is structured like this:

{
"n": "subscription_renewed",
"a": "singular_sdk_key_123",
"p": "iOS",
"i": "com.example.app",
"ip": "192.168.100.1",
"idfa": "00000000-0000-0000-0000-000000000000",
"idfv": "00000000-0000-0000-0000-000000000000",
"ve": "17.0.1",
"att_authorization_status": 3,
"custom_user_id": "user_12345",
"utime": 1709294400,
"amt": 9.99,
"cur": "USD",
"purchase_product_id": "yearly.premium.6999",
"purchase_transaction_id": "GPA.3383...",
"e": "{\"is_revenue_event\":true,\"amt\":9.99,\"cur\":\"USD\",\"purchase_product_id\":\"yearly.premium.6999\",\"purchase_transaction_id\":\"GPA.3383...\"}"
}

Where:

ParameterTypeDescription
nStringThe event name (mapped from Adapty event).
aStringYour Singular SDK Key.
pStringPlatform ("iOS" or "Android").
iStringStore App ID (Bundle ID).
ipStringUser's IP address.
idfaStringiOS only. ID for Advertisers (uppercase).
idfvStringiOS only. ID for Vendors (uppercase).
aifaStringAndroid only. Google Advertising ID (lowercase).
andiStringAndroid only. Android ID (lowercase).
asidStringAndroid only. App Set ID (lowercase).
veStringOS version.
att_authorization_statusIntegeriOS only. ATT status (e.g., 3 for authorized).
custom_user_idStringThe user's Customer User ID.
utimeLongUNIX timestamp of the event in seconds.
amtFloatRevenue amount.
curStringCurrency code (e.g., "USD").
purchase_product_idStringThe Product ID from the store.
purchase_transaction_idStringOriginal transaction ID.
eStringJSON string containing event details (see below).

The e parameter (custom event data) is a JSON-encoded string containing:

ParameterTypeDescription
is_revenue_eventBooleantrue if the event contains revenue.
amtFloatRevenue amount.
curStringCurrency code.
purchase_product_idStringThe Product ID from the store.
purchase_transaction_idStringOriginal transaction ID.