Skip to main content

Adjust FAQ (self-help)

Last updated 10/07/2026

1. Push API​

1.1 SDK initialization order (must read)​

warning

The ThinkingData & Adjust SDKs must be initialized and their APIs called strictly in the following order

  • Initialize the ThinkingData client SDK
  • Call the automatic or manual integration API to set distinct_id in third-party events (for the code, see the official documentation; it isn't repeated here)
  • Initialize the Adjust SDK

1.2 AE configuration - empty endpoint URL under the data source​

  • In the AE backend, go to Project Settings — Implementation — TE Receiver Host URL and add the server address that uses port 8991. You can confirm the address with your company's operations team. The Adjust platform endpoint URL is then synced automatically.

1.3 Adjust callback plan statuses​

1.3.1 Status 1: Error​

1.3.2 Causes of the Error status​

  • No data is sent back within 2 hours after the Adjust callback plan is created or updated.
  • Data was received within the last 72 hours, but some of it failed to convert, or no new events have been sent back for more than 72 hours.

1.3.3 Analyzing why conversion failed​

  • To find out why data failed to convert, click the Details icon in the upper-right corner of the plan and view the reasons for the failed conversions in the data details

  • Scenario: Failed to transform, reason: Neither #account_id nor #distinct_id can be associated

1.3.4 Status 2: Connected​

  • If the platform connection status is Connected, data has been received from the platform and ingested. You can click Detailed data on the integration page or on each platform's configuration page to view the latest 1000 records received:

1.3.5 Status 3: Waiting for integration​

  • No events have been sent back to AE since the configuration was completed. Check whether the callback URL is configured correctly in the Adjust dashboard

1.4 What is the te_ads_object property? Can other fields be stored in it?​

  • te_ads_object is a standardized object field. It stores fields that have different names but the same meaning on different third-party platforms in one object, to make later analysis easier.
  • Yes. You can configure this in the User Properties Configuration module: set the source data name to the field name before conversion, and set Target Property to the field name to ingest
    • For example, map the raw data field idfa sent back by Adjust to the te_ads_object object.

1.5 Ingestion rules for the special impression, click, and cost events​

  • Because the callback data for impression, click, and Ad spend doesn't support custom parameters, it can't include a custom user ID. To connect this kind of data, the AE system automatically attaches it to a "virtual user". Because the volume of user-level impression and click data is very large, we recommend that you pull aggregated data for these events through the Adjust Report Service API.

    Data typeDescriptionEvent name in AEVirtual user of the event
    impressionImpressionsadjust_impressionwithout_id
    clickClicksadjust_clickwithout_id
    ad_revenueRevenueadjust_ad_revenuewithout_id

1.6 Does the Adjust callback plan support sending back cost/spend data?​

  • Not supported: because of Adjust limitations, sending back cost data isn't supported at the moment. We recommend that you pull cost data through the Adjust Report Service API

1.7 Why doesn't the number of install events sent back by Adjust match the number of ta_app_install events collected by the AE SDK?​

  • Small difference in data volume:

    • This is usually because install events are collected under different rules. ta_app_install is triggered every time the app is newly installed or uninstalled and reinstalled. The install event of the Adjust SDK has an attribution window, and uninstalling and reinstalling within the window doesn't report the install event again. For details about Adjust attribution windows, see: Attribution windows | Adjust Help Center
  • Large difference in data volume:

    • Check whether the sampling period of the comparison is too short and whether the time zones being compared match.
    • Check whether some app versions or channel packages don't integrate the AE SDK or the Adjust SDK.
    • Check whether the third-party callback plan is in the Error status, see Troubleshooting the Adjust Error status, and troubleshoot as described there

1.8 Why can't I find the data even though all events were converted successfully?​

  • Check whether Strict Verification mode is enabled for the project (Project data processing rules). If it is, we recommend that you turn it off first and turn it back on after a batch of data has been sent back.
    • To check whether Strict Verification mode is enabled: click the settings button in the upper-right corner, click Project Settings, and then check Data Processing Rules.

1.9 Attribution channel media_source shows unattributed or restricted​

2. Report Service API​

2.1 How do I check whether a data pull succeeded or failed?​

  • After the configuration succeeds, click Single pull task in the upper-right corner of the plan. You're notified of the pull result through Notifications.
  • Example of a successful pull
  • Example of a failed pull

2.2 Report Service API data doesn't match the data in the Adjust dashboard?​

  • Check whether the difference is caused by different dimensions or parameter settings

    • Whether the time zone matches that of the Adjust dashboard data
    • Whether all attribution settings are the defaults
  • Keep the channel type filter consistent with the pulled data (currently, Report Service API pulls the network data type by default)

  • Adjust API data is subject to delays and updates, so check whether the data for the previous few days is accurate. If only the data for a few dates is inaccurate, try pulling it again

2.3 Can Report Service API pull same-day data? How should I set the pull frequency?​

  • Pulling same-day data is supported

  • Adjust has a dynamic correction mechanism: whenever earlier data is received, the values for the day are corrected dynamically, so there's no fixed period after which the data becomes stable. To make sure the corrected data is pulled, we extend the pull time range accordingly.

    • If you need near-real-time data: we recommend pulling the last 3-7 days of data every hour
    • If you don't need real-time data: we recommend pulling the last 3-7 days of data at 12:00 every day
  • The image below shows how to switch the pull time dimension

2.4 How do I configure multiple App IDs in the same plan?​

  • Separate multiple App IDs with English commas (,), as shown below

2.5 Does pulling data for the same time range repeatedly create duplicate data?​

  • Pulling data for the same time range multiple times doesn't create duplicates. The data for that time range is entirely overwritten by the new data

2.6 How do I change the names of pulled events?​

  • Change the value of event_name

2.7 What attribution_types does Report Service API pull by default?​

  • The default is all, which pulls all attribution types.

2.8 Common pull errors and solutions​

  • Create event and props failed!
    • This error usually occurs when you pull data for the first time or add fields to pull in a plan. Server overload may cause the creation of new fields to fail. Wait about 10 minutes and try pulling the data again. If the problem persists, report it to the ThinkingAI customer success manager (CSM) or ThinkingAI technical contact in your support group.
  • The job conflicts with the scheduled
    • This error occurs because a new pull task started in the same pull plan before the previous pull task finished. You can usually ignore it, or pull again after about 10 minutes
  • Get thirdparty data failed! The possible error is: {"error_code":"request_error","error_desc":"User doesn't have enough permissions loc=roas","source":"API","show_error":true}
    • None of the revenue-related metrics are supported and must be removed. This is related to account permissions. Other dimensions need to be tested

Adjust uninstall events fail to convert​

  • Reason: uninstall events can't carry custom parameters
  • Solution: if you need attribution data, configure callback URLs for the install event and other in-app events

Adjust request error: start_date​

  • Reason: start_date: should not be in the future
  • Solution: the scheduled pull time must be earlier than the server time

Adjust ad-level data doesn't match​

  • Reason: some data is classified as Unattributed or assigned to the campaign_name field
  • Solution: check the data distribution and confirm the attribution logic

Adjust attribution data doesn't match the AE backend​

  • Reason: the callback data is organic, but the AD backend shows GG
  • Solution: confirm the data source with Adjust

Adjust FB channel data doesn't match​

Adjust SKAN configuration​

  • Enter a callback URL for each event type. Only the corresponding events are then sent back to AE
  • essential and advanced are placeholders appended to the callback URL, and they must be configured in the callback URL
  • Append the placeholder created_at_milli={sk_ts} to the callback URL

Missing user properties in Adjust callbacks​

Issue: User property callbacks are configured for Adjust callback events, but the corresponding fields are missing from the user properties in the AE platform.

Cause analysis:

  • The placeholders in the Adjust callback URL are incomplete
  • Some properties need to be passed from the Adjust SDK side
  • Custom macros aren't configured in the Adjust dashboard

Solution:

  1. Check whether the Adjust callback URL contains all the required placeholders
  2. Configure the required custom macros in the Adjust dashboard
  3. Verify that the user property fields in the callback data have values

withoutID in callbacks​

Issue: All Adjust callback data shows the "withoutID" status.

Cause analysis: The install events sent back by Adjust can't be matched to an existing user (#distinct_id or #device_id) in the AE platform, so they're marked "withoutID".

Solution:

  • Make sure the #device_id reported by the client SDK matches the {adid} sent back by Adjust
  • Check whether the SDK is initialized before the Adjust SDK
  • Verify that the Adjust callback URL contains device identifier parameters

Adjust data shows without ID after conversion​

  • Reason: a Unity SDK version issue. Update to 3.4.0, which supports Adjust 5.0 and later

Configuration notes​

How to filter channels​

Filter channels:

"extra_params": {"allPurpose": "{\\"partner_name__in\\":\\"xxx\\"}"}

How to use filters​

To use a filter, use the field to filter on directly as the key:

"extra_params": {"attribution_source": "xxx"}

How to specify the ad revenue platform​

Specify the ad revenue platform:

"extra_params": {"ad_revenue_sources": "applovin_max_sdk"}

Error notes​

start_date error​

  • Error message: {"error_code":"request_error","error_desc":"KPI Service: start_date: should not be in the future (400)"}
  • Solution: the scheduled pull time must be earlier than the server time.

Pull error​

  • Error message:
Get thirdparty data failed! The possible error is: {"error_code":"request_error","error_desc":"Invalid app tokens. No apps matching the given app filters combination loc=app_tokens"
  • Solution: app_token is invalid. Check which API token the app_token belongs to.
    Verify with curl: remove app_token__in from the request parameters, add app_token to dimensions, and check which app_token values the returned data contains
    //Add adjust_account_id to the request parameters to return data for the apps under your personal account. Configuration:
    "extra_params": { "adjust_account_id": 12345 }
Was this page helpful?
On this page