Skip to main content

Singular integration plan

Last updated 10/03/2026
tip

Note that data generated by third-party data integration counts toward the cluster's data consumption

Summary​

Interface overview​

InterfaceTypeGranularityAttributionCostRevenueImpressionsClicksConversions
Internal BI PostbacksCallbackUser level✅✅✅

Singular provides a partner postback feature, which you can use to send back user-level data, including attribution data, ad revenue, and conversion data

Before you start connecting Singular data, make sure that you have read the AE system's user identification rules and understand how AE identifies a user through #distinct_id and #account_id

Integration process​

  1. Integrate the Singular client SDK and the AE client SDK, and set the AE user identification ID in the Singular SDK
  2. Log in to the AE backend, go to the Third-party Integration module, add a Singular postback plan, complete the related configuration, and get the callback URL
  3. Add an Internal BI postback in the Singular dashboard
  4. Check whether the AE system receives the data successfully, and build reports

1. Client SDK configuration​

To connect Singular callback data with user data in the AE project, report the account ID and distinct ID of the AE project in the Singular SDK.

We strongly recommend that you initialize the AE SDK first, and set the distinct ID of the AE SDK as Singular's custom user ID when you initialize the Singular SDK. The following is a code sample for Android:

// Initialize the AE SDK
TDConfig config = TDConfig.getInstance(this, APPID, TE_SERVER_URL);
TDAnalytics.init(config);

// Get the AE distinct ID, which corresponds to #distinct_id in AE
String te_distinct_id = TDAnalytics.getDistinctId();

// Pass the AE distinct ID in SingularConfig as the custom user ID, and initialize
SingularConfig config = new SingularConfig("SDK KEY","SDK SECRET")
.withCustomUserId(te_distinct_id);
Singular.init(context, config);

2. Plan configuration​

After completing the SDK configuration, log in to the AE backend and configure the Singular plan in the Third-party Integration module. The image below shows the configuration page of the Singular Internal BI Postbacks plan:

2.1 User identification fields​

Because Singular Internal BI Postbacks data is user-level data, you need to set user identification rules for it, that is, the AE system's user identification ID set in the Singular SDK. Based on this configuration, the AE system sets these fields as the user identification fields of the data when it converts the callback data.

If you configured the client SDK as described in the previous step of this document, use the following configuration:

  • Field associated with the account ID: none
  • Field associated with the distinct ID: user_id

2.2 Event Data Configuration​

After you turn on the Event Data Configuration switch, all data sent back by Singular is written to the event table. We recommend that you enable event data ingestion.

2.3 User Properties Configuration​

By default, the AE system does not write Singular data to user properties. To write some fields, such as user attribution fields, to the user table, first turn on the rule so that it runs, and then use the property mapping feature to add the fields to write to the user table. For the source property name, enter the field's ingested name:

We recommend that you set the user property ingestion rule as follows:

  • Turn off Include all events
  • Source event name: singular_install
  • Ingestion rule: user_setOnce
  • Configure the property fields as follows:
Source data nameTarget property nameDescription
networkte_ads_object.media_sourceMedia source
tracker_campaign_namete_ads_object.campaign_nameCampaign name
tracker_sub_campaign_namete_ads_object.ad_group_nameAd group name
tracker_creative_namete_ads_object.ad_nameAd name

2.4 Configuration​

In the Configuration module, you can control the detailed settings of data pulling, such as the event name after ingestion

The content of the configuration is a JSON, which you can customize as follows:

ModuleNameDescription
sink_eventevent_mappingEvent name after ingestion. Customizable. The key is the event name in the Singular callback data, and the value is the event name after ingestion. Events not listed here are ingested with the singular_ prefix added to their event names in the callback data

2.5 End Point​

End Point shows the URL where the AE system receives Singular callback data. Copy this URL directly, and enter it when you configure the Singular postback in the next step:

If no URL is displayed here, open Project Settings → Settings → Implementation from the menu in the upper-right corner and configure the URL for public network. This URL is the data reporting URL configured in the AE SDK. After configuring it, go back to End Point on the Singular configuration page and copy the endpoint URL.

Finally, remember to click the save button in the upper-right corner to save the Singular plan.

3. Configure callbacks and data ingestion​

3.1 Configure callbacks​

After creating the Singular plan, log in to the Singular dashboard and go to the Attribution > Partner Configuration page. In the field for adding a channel partner, search for Thinking Data and click it to start adding the postback configuration for the AE system.

Go to the Configuration page and first select the App and Site to send back data for

Next, enter the callback URL of the Singular integration plan in the AE system in Postback URL

Finally, Singular sends back install events (install) and re-engagement events (Re-Engagement) by default. If you also have in-app events to send back, switch to the In app Events Postback tab at the top and add the events to send back in the list below. For revenue events, select them in the Revenue Events Postbacks menu:

tip

Note: The SDK event list includes the following revenue event options:

  • __IAP__ refers to all in-app purchase events without custom names

  • Revenue events displayed directly by event name are in-app purchase events that have been renamed

  • __ADMON_USER_LEVEL_REVENUE__ refers to ad revenue events (if you have configured Ad Revenue Attribution)

  • __REVENUE__ includes:

    • All in-app purchase events (including __IAP__ and custom in-app purchase events)
    • Ad revenue events (if you have configured Ad Revenue Attribution)
    • It also combines all revenue data into a single event for the postback

When configuring postbacks, check whether in-app purchase events have already been reported through the AE SDK. If they have, we do not recommend sending back __IAP__ or other in-app purchase events from Singular, to avoid duplicate data

In addition, because __REVENUE__ combines all revenue events into one event, if your project records both in-app purchase events and ad revenue events, we recommend configuring each revenue event separately instead of configuring __REVENUE__, so that you can better distinguish in-app purchase data from ad monetization data

3.2 Event ingestion rules​

  • The user_id field in the data is used as the user's distinct ID

  • The event_utc_timestamp field in the data, that is, the time when the event occurred, is used as the #event_time of the data

  • The data event name is the event_name in the data with the singular_ prefix added. Unnamed revenue events are named as follows:

    • __IAP__:singular_iap
    • __ADMON_ USER_LEVEL_REVENUE__:singular_ad_revenue
    • __REVENUE__:singular_revenue
  • All other fields are ingested. The following are the fields sent back by Internal BI Postbacks:

FieldDescription
app_nameApp name
longnameBundle ID of the app
platformOperating system. Valid values: iOS or Android
event_nameEvent name
idfaIDFA on iOS
idfvIDFV on iOS
aifaAdvertising ID of the Android device
android_idAndroid ID. Reported only when AIFA is unavailable
singular_id(Deprecated) Reported only when the iOS device limits data tracking (LAT enabled); uses the Singular internal ID
event_utc_timestampUNIX timestamp when the event occurred
click_utc_timestampUNIX timestamp of the click
install_utc_timestampUNIX timestamp of the install
is_organic1 means the user is organic; 0 means the user is non-organic
is_viewthrough1 means the user is view-through attributed; 0 means otherwise
networkMedia source the user is attributed to
campaignCampaign name identified by Singular
campaign_groupCampaign group name identified by Singular (available for some platforms)
creativeCreative name or creative ID identified by Singular
siteSource site & Sub Site for click. Available if passed in click
user_idCustom user ID. Based on the configuration in 2.1, the value should equal the AE system's distinct ID
singular_click_idUnique click ID generated by Singular
is_reengagement1 means the user returned through a re-engagement ad; 0 means otherwise
click_ipIP address when the ad was clicked
os_versionOS version when the ad was clicked
app_versionApp version at install or when the event occurred
countryCountry (region) of the user at install
cityCity of the user at install
limit_ad_tracking1 means limit ad tracking is enabled; 0 means otherwise
device_modelDevice model
device_brandDevice brand
match_typeAttribution match type. Valid values: deterministic (device ID match, exact match), probabilistic (Android only, fuzzy match), or none (organic).
amountSent back only for revenue data. Revenue value in USD
currencySent back only for revenue data. ISO 4217 three-letter currency code of the revenue currency
is_first_event1 means the event (revenue or custom event) is the first event of the device; 0 means it is not the first event
tracker_campaign_nameCampaign name sent back by the network
tracker_campaign_idCampaign ID sent back by the network
tracker_sub_campaign_nameSub-campaign name sent back by the network
tracker_sub_campaign_idSub-campaign ID sent back by the network
tracker_creative_nameCreative name sent back by the network
tracker_creative_idCreative ID sent back by the network
tracker_publisher_idHashed app ID sent back by the network
tracker_publisher_sub_idPublisher SUB ID sent back by the network
tracker_publisher_site_nameApp name sent back by the network
tracker_publisher_site_idApp ID sent back by the network
tracker_publisher_sub_site_nameSub-publisher name sent back by the network
tracker_publisher_sub_site_idSub-publisher ID sent back by the network
tracker_nameTracked campaign name
network_tiktok_restrictedThis restricted field is present in view-through attributed user data from TikTok. See the appendix for details
campaign_tiktok_restrictedThis restricted field is present in view-through attributed user data from TikTok. See the appendix for details
fb_campaign_idFacebook campaign ID. Subject to Facebook's terms of service. See the appendix for details
fb_campaign_nameFacebook campaign name. Subject to Facebook's terms of service. See the appendix for details
fb_adset_idFacebook Ad Set (ad group) ID. Subject to Facebook's terms of service. See the appendix for details
fb_adset_nameFacebook Ad Set (ad group) name. Subject to Facebook's terms of service. See the appendix for details
fb_ad_idFacebook ad ID. Subject to Facebook's terms of service. See the appendix for details
fb_ad_nameFacebook ad name. Subject to Facebook's terms of service. See the appendix for details
twitter_campaign_nameTwitter campaign name. Subject to Twitter's terms of service. See the appendix for details
twitter_campaign_idTwitter campaign ID. Subject to Twitter's terms of service. See the appendix for details
twitter_line_idTwitter Line Item (ad group) ID. Subject to Twitter's terms of service. See the appendix for details
fraud_statusFraud detection result. Sent back only when fraud postbacks are enabled. Valid values: "valid"/"suspicious"/"rejected"
fraud_reasonName of the rule that identified the data as fraudulent. Sent back only when fraud postbacks are enabled

3.3 Standardized fields​

The AE system standardizes some fields in the Singular callback data:

FieldStandardized fieldDescription
app_namete_ads_object.app_nameApp name
longnamete_ads_object.app_idApp ID
platformte_ads_object.platformPlatform, such as Android or iOS
countryte_ads_object.countryCountry or region code
amountte_ads_object.revenueMonetization revenue
currencyte_ads_object.currencyRevenue currency
networkte_ads_object.media_sourceMedia source
tracker_campaign_namete_ads_object.campaign_nameCampaign name
tracker_campaign_idte_ads_object.campaign_idCampaign ID
tracker_sub_campaign_namete_ads_object.ad_group_nameAd group name, or the Unit name for monetization ads
tracker_sub_campaign_idte_ads_object.ad_group_idAd group ID, or the Unit ID for monetization ads
tracker_creative_namete_ads_object.ad_nameAd name
tracker_creative_idte_ads_object.ad_idAd ID

4. Appendix​

Some platforms restrict sending user-level data to other third-party platforms, including sending it to the AE system through Internal BI Postbacks. The following table shows the restriction rules of these platforms:

PlatformRestriction rule
FacebookFacebook user-level data is deleted 6 months after attribution, so 6 months after attribution, users attributed to Facebook are marked as "Organic" in Singular. In addition, the end-user agreement does not allow obtaining user-level data for Facebook view-through attribution, so the attribution information of users attributed to Facebook through view-through is marked as "Unattributed"
Google Ads (Adwords)Google Ads user-level data is deleted 6 months after attribution, so 6 months after attribution, users attributed to Google Ads are marked as "Organic" in Singular
SnapchatSnapchat's data sharing policy prohibits sharing any Snapchat data with third parties
TikTokTikTok user-level data is deleted 6 months after attribution, so 6 months after attribution, users attributed to TikTok are marked as "Organic" in Singular. In addition, the end-user agreement does not allow obtaining user-level data for TikTok view-through attribution, so from 2022-05-02 onward, the attribution information of users attributed to TikTok through view-through is marked as "TikTok Restricted"
Twitter

Make sure that your Twitter endpoint is eligible to receive Twitter's device-level attribution data

Twitter user-level data is deleted 6 months after attribution, so 6 months after attribution, users attributed to Twitter are marked as "Organic" in Singular. In addition, Twitter end users have the right to have their data deleted from third parties. Their data does not appear in user-level data but is still counted in aggregated data

Was this page helpful?