Skip to content

Add pixel events for Quick Setup onboarding screen#8672

Open
catalinradoiu wants to merge 4 commits into
feature/cradoiu/quick-setup-handle-default-browser-and-widgetfrom
feature/cradoiu/quick-setup-pixels
Open

Add pixel events for Quick Setup onboarding screen#8672
catalinradoiu wants to merge 4 commits into
feature/cradoiu/quick-setup-handle-default-browser-and-widgetfrom
feature/cradoiu/quick-setup-pixels

Conversation

@catalinradoiu
Copy link
Copy Markdown
Contributor

@catalinradoiu catalinradoiu commented May 22, 2026

Task/Issue URL: https://app.asana.com/1/137249556945/project/1211724162604201/task/1214680037502327

Description

Adds two pixel events for the Quick Setup onboarding screen, both using the shared pixel name m_onboarding_quick-setup and the new Onboarding Instrumentation Standard params (it, d, source, flow, pixelSource):

  • e=shown fires once when the Quick Setup dialog is displayed.
  • e=clicked fires once when the user taps the "Start browsing" CTA, with an additional value parameter encoding the user's selections: set_as_default:on|off widget:on|off address_bar:top|bottom|split input_type:search|search_and_duckai.

Both pixels are sent as Unique (one per user) with distinct tags so the shown and clicked variants don't suppress each other. The day-since-install param (d) is omitted when the user is more than 28 days post-install, per the standard.

Steps to test this PR

Quick Setup pixel events

  • Build internal and trigger the reinstall flow so the Quick Setup screen appears
  • Inspect pixel logs and confirm a single m_onboarding_quick-setup pixel fires with e=shown, it=reinstall, source=default, flow=default, pixelSource=phone (or tablet on tablets), and d set to the days-since-install value (0–28).
  • Toggle the set-as-default and add-widget switches, change the address bar position, and change the search-experience option, then tap "Start browsing".
  • Confirm a single m_onboarding_quick-setup pixel fires with e=clicked and the same standard params, plus a value string that reflects the final selections (e.g. set_as_default:on,widget:off,address_bar:bottom,input_type:search).
  • Re-enter the same flow on the same install and confirm neither pixel fires a second time (uniqueness check).

UI changes

Before After
No UI changes No UI changes

Note

Low Risk
Adds new onboarding telemetry for the Quick Setup screen, including new parameters and a composite value string; risk is low as it doesn’t change user-facing flow beyond extra pixel firing and a new DI dependency (DeviceInfo).

Overview
Adds a new m_onboarding_quick-setup pixel definition and AppPixelName.ONBOARDING_QUICK_SETUP, using the onboarding instrumentation standard params (it, optional d, source, flow, pixelSource) and an optional composite value for selections.

Updates BrandDesignUpdatePageViewModel to fire Unique Quick Setup pixels on screen shown and Start browsing clicked (with separate tags so they don’t suppress each other), including encoding default-browser/widget/address-bar/input-type choices, and wires the pixel into PixelParamRemovalInterceptor for ATB stripping. Adds targeted unit tests covering param formation (including omitting d after 28 days) and phone/tablet form factor.

Reviewed by Cursor Bugbot for commit dfb371d. Bugbot is set up for automated code reviews on this repo. Configure here.

Fires m_onboarding_quick-setup with e=shown when the Quick Setup dialog is
displayed and with e=clicked on the Start browsing CTA, following the new
Onboarding Instrumentation Standard params (it, d, source, flow, pixelSource).
The clicked event includes a composite value param capturing the user's
configuration (set_as_default, widget, address_bar, input_type).

Task/Issue URL: https://app.asana.com/1/137249556945/project/1211724162604201/task/1214680037502327
Copy link
Copy Markdown
Contributor Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

Adds a schema entry for the new Quick Setup onboarding pixel under
PixelDefinitions/pixels/definitions/onboarding.json5, declaring its
parameters (e, it, d, source, flow, pixelSource, value) and the form_factor
suffix used by other onboarding pixels.

Task/Issue URL: https://app.asana.com/1/137249556945/project/1211724162604201/task/1214680037502327
Switches the composite value parameter of m_onboarding_quick-setup
(e=clicked) from space- to comma-separated pairs for cleaner URL
encoding and easier reading in dashboards.

Task/Issue URL: https://app.asana.com/1/137249556945/project/1211724162604201/task/1214680037502327
@catalinradoiu catalinradoiu marked this pull request as ready for review May 22, 2026 16:11
@github-actions
Copy link
Copy Markdown
Contributor

Privacy Review task: https://app.asana.com/0/69071770703008/1215061445765251

Copy link
Copy Markdown
Contributor

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 694790e. Configure here.

Comment thread app/src/main/java/com/duckduckgo/app/pixels/AppPixelName.kt
Registers ONBOARDING_QUICK_SETUP in PixelParamRemovalInterceptor with
removeAtb() so the runtime-appended atb parameter does not violate the
pixel's declared param set during triage. Matches the existing pattern
for sibling onboarding pixels (PREONBOARDING_INTRO_REINSTALL_USER_SHOWN_UNIQUE,
PREONBOARDING_SKIP_ONBOARDING_SHOWN_UNIQUE, etc.).

Task/Issue URL: https://app.asana.com/1/137249556945/project/1211724162604201/task/1214680037502327
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant