(webextension-telemetry)= # WebExtension API for Telemetry (deprecated) :::{important} Legacy Telemetry collection APIs are now deprecated. Please use Glean instead. ::: Use the `browser.telemetry` API to send telemetry data to the Mozilla Telemetry service. Restricted to Mozilla privileged webextensions. ## Types ### `ScalarType` Type of scalar: 'count' for numeric values, 'string' for string values, 'boolean' for boolean values. Maps to `nsITelemetry.SCALAR_TYPE_*`. ### `ScalarData` Represents registration data for a Telemetry scalar. Properties: - `kind` - See [ScalarType]. - `keyed` - *(optional, boolean)* True if this is a keyed scalar. Defaults to `false`. - `record_on_release` - *(optional, boolean)* True if this data should be recorded on release. Defaults to `false`. - `expired` - *(optional, boolean)* True if this scalar entry is expired. Operations on an expired scalar don't error (operations on an undefined scalar do), but the operations are no-ops. No data will be recorded. Defaults to `false`. ### `EventData` Represents registration data for a Telemetry event. Properties: - `methods` - *(array)* List of methods for this event entry. - `objects` - *(array)* List of objects for this event entry. - `extra_keys` - *(array)* List of allowed extra keys for this event entry. - `record_on_release` - *(optional, boolean)* True if this data should be recorded on release. Defaults to `false`. - `expired` - *(optional, boolean)* True if this event entry is expired. Recording an expired event doesn't error (operations on undefined events do). No data will be recorded. Defaults to `false`. ## Functions ### `submitPing` ```js browser.telemetry.submitPing(type, message, options); ``` Submits a custom ping to the Telemetry backend. See {ref}`submitting-customping`. - `type` - *(string)* The type of the ping. - `message` - *(object)* The data payload for the ping. - `options` - *(optional, object)* Options object. - `addClientId` - *(optional, boolean)* True if the ping should contain the client id and profile group id. Defaults to `false`. - `addEnvironment` - *(optional, boolean)* True if the ping should contain the environment data. Defaults to `false`. - `overrideEnvironment` - *(optional, object)* Set to override the environment data. Default: not set. - `usePingSender` - *(optional, boolean)* If true, send the ping using the PingSender. Defaults to `false`. ### `canUpload` ```js browser.telemetry.canUpload(); ``` Checks if Telemetry upload is enabled. ### `scalarAdd` ```js browser.telemetry.scalarAdd(name, value); ``` As of Firefox 134, this method is a no-op. See Bug 1930196. Instead, use {doc}`Glean APIs <../../../glean/user/glean_for_legacy_scalars>` to record scalars. ### `scalarSet` ```js browser.telemetry.scalarSet(name, value); ``` As of Firefox 134, this method is a no-op. See Bug 1930196. Instead, use {doc}`Glean APIs <../../../glean/user/glean_for_legacy_scalars>` to record scalars. ### `scalarSetMaximum` ```js browser.telemetry.scalarSetMaximum(name, value); ``` As of Firefox 134, this method is a no-op. See Bug 1930196. Instead, use {doc}`Glean APIs <../../../glean/user/glean_for_legacy_scalars>` to record scalars. ### `recordEvent` As of Firefox 132, this method is a no-op. See Bug 1894533. Instead, use {doc}`Glean APIs <../../../glean/user/glean_for_legacy_events>` to record events. ### `registerScalars` ```js browser.telemetry.registerScalars(category, data); ``` As of Firefox 134, this method is a no-op. See Bug 1930196. Instead, use {doc}`Glean APIs <../../../glean/user/glean_for_legacy_scalars>` to record scalars. ### `registerEvents` As of Firefox 132, this method is a no-op. See Bug 1894533. Instead, use {doc}`Glean event definitions <../../../glean/user/glean_for_legacy_events>` for your extension's events. ### `setEventRecordingEnabled` As of Firefox 133, this method is a no-op. Event recording is enabled by default unconditionally. See Bug 1920562. Instead, use {doc}`Glean event definitions <../../../glean/user/glean_for_legacy_events>` for your extension's events.