Skip to main content
Version: 24.05

Adjust

Enterprise

This feature is part of Countly Enterprise. To get access, contact sales or compare versions. Existing customers can reach the support portal with questions.

Feature Metadata​

FieldValue
FeatureAdjust
TypeAttribution callback ingestion
Public endpoint count1
Primary endpoint/i/adjust
Last updated2026-02-15

Overview​

The Adjust feature ingests attribution callbacks and links them to Countly users using adjust_id.

Two attribution paths are supported:

  • Immediate attribution: if a matching user already exists, attribution data is applied right away.
  • Deferred attribution: if no user matches yet, payload is stored and later applied when the user appears with the same adjust_id.
PageDescription
Adjust - ReceiveReceive and process Adjust callback payloads

How It Works​

Callback Intake​

  1. Adjust sends callback data to /i/adjust with app_key.
  2. Countly resolves the app from app_key.
  3. If app is valid and active, payload continues to attribution logic.

Attribution Logic​

  • Match found (custom.adjust_id already exists on a user):
    • Attribution event is recorded as adjust_<event>.
    • User custom properties are updated (including first-touch values like first_<field> when missing).
  • No match found:
    • Payload is stored for later matching.

Deferred Attribution Trigger​

When a user profile is later updated with custom.adjust_id, pending Adjust records for that ID are attributed automatically.

Returned Data Fields (Receive Endpoint)​

The /i/adjust response can return different success shapes depending on attribution path:

FieldTypeDescription
resultStringOperation result (Success on successful processing)
statusStringAttribution state (for example: attributed)
Records insertedNumberNumber of records saved for deferred attribution
documentObjectStored callback payload (deferred path)
userObject or nullMatched user object when available

Configuration & Usage Notes​

  • The ingest endpoint uses app_key (not app_id) in request parameters.
  • adjust_id is strongly recommended for reliable matching.
  • App pauses block ingestion (App is currently not accepting data).
  • App lock check applies to populator requests.

Use Cases​

1. Install Attribution​

Capture install callback data and immediately attach campaign context when user already exists.

2. Deferred Attribution​

Accept callback data before user profile arrives, then attribute once user is identified by adjust_id.

3. Campaign Analysis Enrichment​

Attach campaign, tracker, network, and adgroup fields to user context and attribution events.

Troubleshooting​

Missing app_key​

  • Ensure callback includes app_key.

App does not exist​

  • Validate app_key is from the target app in Countly.

App is paused​

  • Resume app ingestion before retrying callbacks.

Data not attributed immediately​

  • Confirm adjust_id is present in callback and user profile.
  • Check whether payload is stored in deferred flow, then retry after user update.
Implementation details

Database Collections

CollectionPurpose
countly.appsResolves app by app_key and checks app state (exists/paused/locked)
countly.adjustStores unmatched callback payloads for deferred attribution
countly.app_users{appId}User matching and custom property updates via custom.adjust_id