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
  • updated attributions
  • ad spend (Business Pro and higher pricing plans)
  • ad revenue (with ad revenue package)
  • uninstalls, reinstalls, and reattribution reinstalls (with uninstall and reinstall tracking)

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.

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.
 
User-added image User-added image User-added image User-added image User-added image User-added image User-added image

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

2a. Select All Settings

2b. Select Raw Data Export

2c. Select Real-Time Callbacks

3. Select ADD GLOBAL CALLBACK

4. Enter your callback URL (see callback URL templates and recommended placeholders)

5. Select UPDATE



Note: Multi-Touch activities are only available in single event callbacks (not global).

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.

 
User-added image User-added image User-added image User-added image User-added image User-added image User-added image

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

2a. Select All Settings

2b. Select Raw Data Export

2c. Select 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



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.
User-added image User-added image User-added image User-added image User-added image User-added image User-added image User-added image User-added image User-added image

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

2a. Select All Settings

2b. Select Raw Data Export

2c. Select Real-Time Callbacks

3a. Find the event you want to receive callbacks for

3b. 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. Repeat for all callback URLs.

7. Select UPDATE

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?

A callback string is a URL that includes your:
  • Server endpoint (domain and path)
  • Appended parameters (keys)
  • Adjust placeholders (values)
Adjust placeholders are macros that let Adjust dynamically add user or engagement data to your callback string. For example, Adjust's network placeholder lets you receive network information with your callbacks.

You can add as many parameters and placeholders to your callback string as you like—just separate each key-value pairing with an ampersand (&). ​We recommend editing your callback URL in a text editor (e.g., TextEdit, Sublime) and pasting the final string into the Adjust dashboard.

Example callback string: 
https://mydatawarehouse.com/adjust/info?client_name={app_name}&iOS_device={idfa}&source={network}&campaign={campaign_name}

What is an updated attribution or reattribution callback?

Sometimes Adjust gets new attribution data after we've already attributed a user. (It's rare, but can happen with self-attributing networks who claim their own installs.) When this happens, we update that user's attribution information in your dashboard. We can also send another callback with the updated attribution or reattribution data.

To receive updated attribution information, add these Adjust placeholders to your callback string:
  • {outdated_tracker}: tracker token of the user’s initial attribution
  • {outdated_tracker_name}: tracker name of the user’s initial attribution
  • {attribution_updated_at}: timestamp of the revised attribution
  • {activity_kind}install_update or reattribution_update

Note: Updated attribution and reattribution information is available as of March 2017.

What happens if an Adjust callback fails?

If your server endpoint is unavailable or returns a 500 response, we'll try to resend the callback up to six times over the next 24 hours. If we receive a 400 response, we'll let you know immediately without retrying the callback.

To protect data security, our callback server records the HTTP response of your endpoint and doesn't follow any redirects. If your server goes down and you need historical user data, we always do our best to recall this data retroactively.

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

Adjust sends an install callback after a user's first session. If an install is rejected by our Fraud Prevention Suite, we send a rejected install callback instead.

On this topic

On this topic