“default-browser” ping

This opt-out ping is sent from the Default Browser Agent, which is a Windows-only program that registers itself during Firefox installation with the Windows scheduled tasks system so that it runs automatically every 24 hours, whether Firefox is running or not. The scheduled task gathers the data for this ping and then sends it by handing it off to Ping Sender.

Even though this ping is generated by a binary separate from Firefox itself, opting out of telemetry does disable it; the pref value is copied to the registry so that the default browser agent can read it without needing to work with profiles. Relevant policies are consulted as well. The agent also has its own pref, default-agent.enabled, which if set to false disables all agent functionality, including generating this ping.

Each installation of Firefox has its own copy of the agent and its own scheduled task, so one ping will be sent every day for each installation on a given machine. This is needed because the default browser setting is per-user, and different installations may have been created by different users. If multiple operating system-level users are all using one copy of Firefox, only one scheduled task will have been created and only one ping will be sent, even though the users might have different default browser settings.

The namespace this ping is in is called default-browser-agent.

For more information about the default browser agent itself, see its documentation.

Structure

Since this ping is sent from an external binary, it’s structured as its own ping document type and not in the standard Firefox telemetry format. It’s also missing lots of data that would normally be present; for instance, there is no clientId, because the agent does not load any profile and so has no way to find any, and no environment block because the agent doesn’t contain the telemetry library code to build it.

Here’s the format of the ping data, with example values for each property:

{
  build_channel: <string>, // ex. "nightly", or "beta", or "release"
  version: <string>, // ex. "72.0.2"
  os_version: <string>, // ex. 10.0.18363.592
  os_locale: <string>, // ex. en-US
  default_browser: <string>, // ex. "firefox"
  previous_default_browser: <string> // ex. "edge"
}

build_channel

The Firefox channel.

version

The Firefox version.

os_version

The Windows version number. Below Windows 10, this is in the format [major].[minor].[build]; for Windows 10, the format is 10.0.[build].[UBR].

os_locale

The locale that the user has selected for the operating system (NOT for Firefox).

default_browser

Which browser is currently set as the system default web browser. This is simply a string with the name of the browser; the possible values include “firefox”, “chrome”, “edge”, “edge-chrome”, “ie”, “opera”, and “brave”.

previous_default_browser

Which browser was set as the system default before it was changed to the current setting. The possible values are the same as for default_browser.

The OS does not keep track of previous default settings, so the agent records this information itself. That means that it will be inaccurate until the first time the default is changed after the agent task begins running. Before then, the value of previous_default_browser will be the same as default_browser.