English

Real-time callbacks

With Adjust's real-time callbacks, you can send advertising IDs, attribution details, and app data directly to your servers—seconds after Adjust tracks the event.

Adjust supports callbacks for:

  • impressions
  • clicks
  • installs
  • sessions
  • app events
  • reattributions
  • uninstalls
  • reinstalls
  • reattribution reinstalls
  • SKAdNetwork installs
  • SKAdNetwork events
  • updated attributions
  • ad spend (Business Pro or higher)
  • erased users (GDPR)
  • SAN clicks
  • SAN impressions
  • ad revenue (with Ad Revenue package)
  • subscriptions
  • ATT status updates (iOS)
  • rejected installs
  • rejected reattributions
Note:
The Uninstall and Reinstall Tracking package is required to send uninstall, reinstall, and reattibution reinstall callbacks. The Fraud package is required to send rejected install and rejected reattributions.

We can send callbacks on a per-event level. Use our basic setup instructions to set up callbacks for individual events or to receive the same data points for every Adjust-tracked event. When you're finished, move on to the advanced setup instructions to receive custom data and filter callbacks. Use this link to share the video below. 

 

Before you begin

Here's what you need to know before getting started.

Requirements

  • Your own business intelligence solution or data warehouse to receive GET syntax requests. (Confirm that your server can receive all of your parameters and store all incoming data—the number of users in your app affect how fast your servers need to be. If you track one-time events, like registrations, you'll receive one callback for each converting user. Callbacks for conversion events usually don't have a major impact on server bandwidth.)

Helpful information

  • To make sure you only receive data from Adjust, whitelist our server IPs.
  • Some partners only share campaign information over HTTPS. We recommend using https:// for all callback URLs.
  • For instructions on how to build a callback URL, see our callback best practices.
  • We can forward callbacks up to 1MB.

Basic setup

Set up a global callback

A global callback is a master callback for every Adjust-tracked activity (e.g., clicks, installs, sessions, and more). This is the fastest, easiest way to get the same data points for every single event Adjust tracks.

To set up a global callback, follow these steps.

  1. Find your app and select your app options caret (^).
  2. Select All Settings > Raw Data Export > Real-Time Callbacks.
  3. Select ADD GLOBAL CALLBACK.
  4. Enter your callback URL (see callback URL templates and recommended placeholders). 
  5. Select UPDATE.

Well done! Now you'll receive raw user data for every event Adjust tracks.

1. Find your app and select your app options caret (^)

1/7
Note:
Global callbacks do not include the following activities:
  • Ad revenue
  • SAN clicks
  • SAN impressions
  • SKAdNetwork installs
  • SKAdNetwork events
You need to set up single event callbacks for these activities.

Set up a single event callback

A single event callback is a callback for one specific activity (e.g., clicks). This is a great option if you only need data for certain events or when you don't have the data capacity for global callbacks. 

To set up a single event callback, follow these steps.

  1. Find your app and select your app options caret (^).
  2. Select All Settings > Raw Data Export > Real-Time Callbacks.
  3. Find the event you want to receive callbacks for and select Edit (pencil icon).
  4. Enter your callback URL (see callback URL templates and recommended placeholders).
  5. Select UPDATE.

Finished! Now you'll receive raw user data for this event.

1. Find your app and select your app options caret (^)

1/7
Note:
If you set up both global and single event callbacks, you'll get two callbacks for that event: one to each endpoint.

Set up multiple callbacks for the same event

Adjust can send a single event callback to as many endpoints as you want—just separate each URL with a single space.

To set up multiple callbacks for the same event, follow these steps.

  1. Find your app and select your app options caret (^).
  2. Select All SettingsRaw Data Export > Real-Time Callbacks.
  3. Find the event you want to receive callbacks for and select Edit (pencil icon).
  4. Enter your callback URL (see callback URL templates and recommended placeholders). 
  5. Use the spacebar on your keyboard to create a space.
  6. Enter your second callback URL.
  7. Repeat for all callback URLs.
  8. Select UPDATE.

All done! Now you'll receive the same single event callback to all of your endpoints.

1. Find your app and select your app options caret (^)

1/10

Advanced setup

Receive custom data in your callbacks

Custom install, session, and reattribution data

Session callback parameters let you receive custom user information—like usernames, product IDs, and transaction numbers—with your install, session, and reattribution callbacks. Because Adjust tracks all app events during sessions, this custom data will also appear in your event callbacks. 

To get started, add session callback parameters to the Adjust SDK using our developer guides.

Note:
If you use the same parameter name (key name) for events and sessions, the event value takes priority over the session value. For example, if the event value is "foo=25" and the session value is "foo=10", your event callback will include "foo=25".

Custom event data

Event callback parameters let you receive custom event data from Adjust. To get started, follow the instructions for your event tracking setup.

With the Adjust SDK

Add event callback parameters to the Adjust SDK using our developer guides. Adjust automatically writes these custom values onto your callback URL when we track the event, so you don't need to include event callback parameters in your callback URL in your dashboard.

Server-to-server (S2S)

Pass your callback parameters as a JSON object (properly escaped) through the callback_params parameter. Here’s an example JSON object with two custom parameters ({"f0o":"bar","bar":"baz"}) appended:

https://s2s.adjust.com/event?s2s=1&event_token=f0ob4r&app_token=4w565xzmb54d&idfa=8A3CB124-5A79-4334-8802-F75FEC099C58&callback_params=%7B%22f0o%22%3A%22bar%22%2C%20%22bar%22%3A%22baz%22%7D

The JSON object should only contain strings and should not be nested. If the parameters are formatted incorrectly, then you’ll receive an error from Adjust.

Filter your callbacks

Only want to receive callbacks in specific situations? Use conditional callbacks to filter callbacks based on device type, Adjust SDK environment setting, and more.

First, define your condition(s) using a prefix:

  • equal (only send callbacks with these values)
  • notequal (don't send callbacks with this value)
  • contained (only send callbacks with one or more of these values)
  • notcontained (don't send callbacks with these values)

Next, structure your conditions using the following format: prefix,{placeholder}*,value,callback URL. You can set any number of placeholders as conditions.

*See the full list of Adjust placeholders

Helpful information

  • Only use notequal for one value. To exclude multiple values, use notcontained.
  • Use + instead of spaces for values containing multiple words (e.g., my campaign becomes my+campaign).
  • Use contained to include events related to multiple trackers (or notcontained to exclude activity from multiple sources).
Example ConditionResult
​equal,{environment},sandbox,http://test.your-server.com?source={tracker_name}
Send activity tracked in the sandbox environment to a test server
equal,{environment}{device_type},sandboxtablet,http://test.your-server.com?source={tracker_name}
Send activity tracked on tablets in the sandbox environment to a test server
contained,{event},abc123;xyz456,http://production.your-server.com?source={tracker_name}
Send events tracked with tokens abc123 or xyz456 to a production server
notcontained,{network_name},Organic;Facebook+Installs,http://production.your-server.com?source={tracker_name}
Send events tracked without the network name Facebook Installs or Organic to a production server

Callback FAQs

What is a callback string?

What is an updated attribution or reattribution callback?

What happens if an Adjust callback fails?

What's the difference between an install callback and a rejected install callback?