This is a task to implement event logging that will allow high level aggregate funnel analysis for users eligible for quick surveys and shown quick surveys, and will allow finer grained access for users taking an intentional action to engage with quick survyes.
**Staging it**
[ ] Confirmed on localhost mobile
[ ] Confirmed on localhost desktop
[ ] Confirmed on beta labs mobile
[ ] Confirmed on beta labs desktop
[ ] Confirmed on stable channel mobile
[ ] Confirmed on stable channel desktop
Current schema: https://meta.wikimedia.org/wiki/Schema:QuickSurveysResponses
It's unclear if Yes / No Thanks taps for external surveys are actually being logged right now. That needs to be verified and should be implemented if it isn't being logged.
It's unclear if the `presentation` value is being correctly logged right now as well. That also needs to be verified and should be implemented if it isn't being logged. If it makes it easier for the instrumentation, concatenation of the form factor, a hyphen, and the skin is sufficient for the `presentation` field (as opposed to concatenating form factor, a hyphen, and one of "stable|beta|alpha|prototype"). As I understand it, for example 'minerva' and 'minerva-beta' are distinct things, so it will be obvious when it's stable versus beta on the mobile web.
For existing QuickSurveysResponses schema, add the following, and ensure that the button tap action is captured not only for on-wiki surveys but also when the user is navigating to an external survey:
namespaceId (int)
surveySessionToken (mediawiki.user.sessionid plus fixed suffix, in other words survives pages and in the rarest cases, tabs)
surveyInstanceToken (one time token per page with survey)
Define a new schema QuickSurveyInitiation and fire events for `eligible` and `impression`:
beaconCapable (sent for `eligible` event to kick off funnel)
surveySessionToken (mediawiki.user.sessionid plus fixed suffix, in other words survives pages and in the rarest cases, tabs)
surveyInstanceToken (one time token per page with survey)
surveyCodeName
eventName
eligible (at the time eligibility is determined, sent if and only if user was eligible)
impression (sent once, as is custom - when .5 of element shown)