Preferences and Defines¶
Telemetry behaviour is controlled through the mozconfig defines and preferences listed here.
mozconfig Defines¶
MOZ_TELEMETRY_REPORTING
When Defined (which it is for official builds):
If
RELEASE_OR_BETA
is not defined, definesMOZ_TELEMETRY_ON_BY_DEFAULT
When Not Defined:
If
datareporting.healthreport.uploadEnabled
is locked, we print a message in the Privacy settings that you cannot turn on data submission and disabled the checkbox so you don’t try.Android: hides the data submission UI to prevent users from thinking they can turn it on
Disables Telemetry from being sent (due to
Telemetry::IsOfficialTelemetry
)
MOZ_TELEMETRY_ON_BY_DEFAULT
When Defined:
Android: enables
toolkit.telemetry.enabled
MOZ_SERVICES_HEALTHREPORT
When Defined (which it is on most platforms):
Sets
datareporting.healthreport.{infoURL|uploadEnabled}
inmodules/libpref/init/all.js
.
MOZ_DATA_REPORTING
When Defined (which it is when
MOZ_TELEMETRY_REPORTING
,MOZ_SERVICES_HEALTHREPORT
, orMOZ_CRASHREPORTER
is defined (so, on most platforms, but not typically on developer builds)):
Enables
app.shield.optoutstudies.enabled
When Not Defined:
Disables
app.shield.optoutstudies.enabled
Removes parts of the Data Collection Preferences UI in
privacy.xhtml
MOZILLA_OFFICIAL
When Not Defined (defined on our own external builds and builds from several Linux distros, but not typically on defeloper builds):
Disables Telemetry from being sent (due to
Telemetry::IsOfficialTelemetry
)
MOZ_UPDATE_CHANNEL
When not
release
orbeta
:
If
MOZ_TELEMETRY_REPORTING
is also defined, definesMOZ_TELEMETRY_ON_BY_DEFAULT
When
beta
:
If
toolkit.telemetry.enabled
is otherwise unset at startup,toolkit.telemetry.enabled
is defaulted totrue
(this is irrespective ofMOZ_TELEMETRY_REPORTING
)When
nightly
oraurora
orbeta
ordefault
:
Desktop: Locks
toolkit.telemetry.enabled
totrue
. All other values forMOZ_UPDATE_CHANNEL
on Desktop lockstoolkit.telemetry.enabled
tofalse
.Desktop: Defaults
Telemetry::CanRecordExtended
(and, thusTelemetry::CanRecordReleaseData
) totrue
. All other values ofMOZ_UPDATE_CHANNEL
on Desktop defaults these tofalse
.
DEBUG
When Defined:
Disables Telemetry from being sent (due to
Telemetry::IsOfficialTelemetry
)
In Short:
For builds downloaded from mozilla.com
MOZ_TELEMETRY_REPORTING
is defined,MOZ_TELEMETRY_ON_BY_DEFAULT
is on if you downloaded Nightly or Developer Edition,MOZ_SERVICES_HEALTHREPORT
is defined,MOZ_DATA_REPORTING
is defined,MOZILLA_OFFICIAL
is defined,MOZ_UPDATE_CHANNEL
is set to the channel you downloaded, andDEBUG
is false. This means Telemetry is, by default, collecting some amount of information and is sending it to Mozilla.For builds you make yourself with a blank mozconfig,
MOZ_UPDATE_CHANNEL
is set todefault
and everything else is undefined. This means Telemetry is, by default, collecting an extended amount of information but isn’t sending it anywhere.
Preferences¶
toolkit.telemetry.unified
This controls whether unified behavior is enabled. If true:
Telemetry is always enabled and recording base data.
Telemetry will send additional
main
pings.It defaults to
true
, but isfalse
on Android (Fennec) builds.
toolkit.telemetry.enabled
If
unified
is off, this controls whether the Telemetry module is enabled. It can be set or unset via the Preferences dialog in Firefox for Android (Fennec). Ifunified
is on, this is locked totrue
ifMOZ_UPDATE_CHANNEL
isnightly
oraurora
orbeta
ordefault
(which is the default value ofMOZ_UPDATE_CHANNEL
for developer builds). Otherwise it is locked tofalse
. This controls a diminishing number of things and is intended to be deprecated, and then removed.
datareporting.healthreport.uploadEnabled
If
unified
is true, this controls whether we send Telemetry data. Ifunified
is false, we don’t use this value.
toolkit.telemetry.archive.enabled
Allow pings to be archived locally. This can only be enabled if
unified
is on.
toolkit.telemetry.server
The server Telemetry pings are sent to. Change requires restart.
toolkit.telemetry.log.level
This sets the Telemetry logging verbosity per
Log.sys.mjs
. The available levels, in descending order of verbosity, areTrace
,Debug
,Config
,Info
,Warn
,Error
andFatal
with the default beingWarn
.By default logging goes only the console service.
toolkit.telemetry.log.dump
Sets whether to dump Telemetry log messages to
stdout
too.
toolkit.telemetry.shutdownPingSender.enabled
Allow the
shutdown
ping to be sent when the browser shuts down, from the second browsing session on, instead of the next restart, using the ping sender.
toolkit.telemetry.shutdownPingSender.enabledFirstSession
Allow the
shutdown
ping to be sent using the ping sender from the first browsing session.
toolkit.telemetry.firstShutdownPing.enabled
Allow a duplicate of the
main
shutdown ping from the first browsing session to be sent as a separatefirst-shutdown
ping.
toolkit.telemetry.newProfilePing.enabled
Enable the “new-profile” ping on new profiles.
toolkit.telemetry.newProfilePing.delay
Controls the delay after which the “new-profile” ping is sent on new profiles.
toolkit.telemetry.updatePing.enabled
Enable the “update” ping on browser updates.
toolkit.telemetry.eventping.minimumFrequency
The minimum frequency at which an “event” ping will be sent. Default is 60 (minutes).
toolkit.telemetry.eventping.maximumFrequency
The maximum frequency at which an “event” ping will be sent. Default is 10 (minutes).
toolkit.telemetry.overrideUpdateChannel
Override the
channel
value that is reported via Telemetry. This is useful for distinguishing different types of builds that otherwise still report as the same update channel.
toolkit.telemetry.ipcBatchTimeout
How long, in milliseconds, we batch accumulations from child processes before sending them to the parent process. Default is 2000 (milliseconds).
Data-choices notification¶
toolkit.telemetry.reportingpolicy.firstRun
This preference is not present until the first run. After, its value is set to false. This is used to show the infobar with a more aggressive timeout if it wasn’t shown yet.
datareporting.policy.firstRunURL
If set, a browser tab will be opened on first run instead of the infobar.
datareporting.policy.dataSubmissionEnabled
This is the data submission master kill switch. If disabled, no policy is shown or upload takes place, ever.
datareporting.policy.dataSubmissionPolicyNotifiedTime
Records the date user was shown the policy. This preference is also used on Android.
datareporting.policy.dataSubmissionPolicyAcceptedVersion
Records the version of the policy notified to the user. This preference is also used on Android.
datareporting.policy.dataSubmissionPolicyBypassNotification
Used in tests, it allows to skip the notification check.
datareporting.policy.currentPolicyVersion
Stores the current policy version, overrides the default value defined in TelemetryReportingPolicy.sys.mjs.
datareporting.policy.minimumPolicyVersion
The minimum policy version that is accepted for the current policy. This can be set per channel.
datareporting.policy.minimumPolicyVersion.channel-NAME
This is the only channel-specific version that we currently use for the minimum policy version.
Testing¶
The following prefs are for testing purpose only.
toolkit.telemetry.initDelay
Delay before initializing telemetry (seconds).
toolkit.telemetry.minSubsessionLength
Minimum length of a telemetry subsession and throttling time for common environment changes (seconds).
toolkit.telemetry.collectInterval
Minimum interval between data collection (seconds).
toolkit.telemetry.scheduler.tickInterval
Interval between scheduler ticks (seconds).
toolkit.telemetry.scheduler.idleTickInterval
Interval between scheduler ticks when the user is idle (seconds).
toolkit.telemetry.idleTimeout
Timeout until we decide whether a user is idle or not (seconds).
toolkit.telemetry.modulesPing.interval
Interval between “modules” ping transmissions.
toolkit.telemetry.send.overrideOfficialCheck
If true, allows sending pings on unofficial builds. Requires a restart.
toolkit.telemetry.testing.overridePreRelease
If true, allows recording opt-in Telemetry on the Release channel. Requires a restart.
toolkit.telemetry.untrustedModulesPing.frequency
Interval, in seconds, between “untrustedModules” ping transmissions.
toolkit.telemetry.healthping.enabled
If false, sending health pings is disabled. Defaults to true.
toolkit.telemetry.testing.disableFuzzingDelay
If true, ping sending is not delayed when sending between 0am and 1am local time.
toolkit.telemetry.testing.overrideProductsCheck
If true, allow all probes to be recorded no matter what the current product is.