Skip to content

Install Tracking in Firefox Focus with the Adjust SDK

Justin D'Arcangelo edited this page Jun 9, 2017 · 1 revision

If there is anything in this document that is not clear, is incorrect, or that requires more detail, please file a request through a Github or Bugzilla. Also feel free to submit corrections or additional information.

NOTE: As of v3.3, the Adjust SDK is completely excluded from Firefox Klar. Prior to v3.3, it was used in both Firefox Focus and Firefox Klar for install tracking. Also, prior to v3.3, the Adjust SDK was used in both Firefox Focus and Firefox Klar for event tracking. It is no longer used for event tracking in either product.

Firefox Focus (but not Firefox Klar) tracks certain types of installs using a third-party install tracking framework called Adjust. The intention is to determine the origin of Firefox Focus installs by answering the question, “Did this user on this device install Firefox Focus in response to a specific advertising campaign performed by Mozilla?”

The framework consists of a software development kit (SDK) linked into Firefox Focus and a data-collecting Internet service backend run by the German company adjust GmbH. The Adjust SDK is open source and MIT licensed. It is hosted at Firefox Focus pulls in an unmodified copy of the SDK via Carthage. The Cartfile contains the version of the framework that is being used. The SDK is documented at

Adjust Integration

The Adjust framework is abstracted via the AdjustIntegration class. All interaction with Adjust happens via this class.

Adjust Messages

The Adjust SDK collects and sends one type of message to the Adjust backend:

  • At the start of a new application session, a Session Message is sent with basic system info and how often the app has been used since the last time.

The message is documented below in more detail of what is sent in each HTTP request. All messages are posted to a secure endpoint at They are all application/x-www-form-urlencoded HTTP POST requests.

Session Message


bundle_id:               org.mozilla.ios.Focus
tracking_enabled:        0
language:                en
country:                 CA
app_version:             0
device_name:             iPad6,3
cpu_type:                CPU_SUBTYPE_ARM64_V8
app_version_short:       2.0
needs_response_details:  0
ios_uuid:                7B7B1164-A403-4E6E-A303-38571958EB33
attribution_deeplink:    1
session_count:           1
os_name:                 ios
event_buffering_enabled: 0
persistent_ios_uuid:     F9E80AC5-C2E7-4330-B706-25E67D61D37C
idfv:                    8D452BFB-0692-4E8C-9DE0-7578486A872E
hardware_name:           J127AP
app_token:               xxxxxxxxxxxx
os_version:              10.1
environment:             production
created_at:              2016-11-10T20:34:39.720Z-0500
device_type:             iPad
idfa:                    00000000-0000-0000-0000-000000000000
sent_at:                 2016-11-10T20:34:39.787Z-0500

These parameters (including ones not exposed to Mozilla) are documented at


If the application was successfully attributed to a specific campaign, details for that campaign are sent back as a JSON response:

{ "app_token": "xxxxxxxxxxxx",
  "adid": "00000000000000000000",
  "attribution" { "tracker_token": "xxxxxx",
                  "tracker_name": "Network::CAMPAIGN::ADGROUP::CREATIVE",
                  "network": "Network",
                  "creative":"CREATIVE" } }

The application has no use for this information and ignores it.

You can’t perform that action at this time.