8 KiB
Send V2 Metrics Definitions
Key Value Prop
Quickly and privately transfer large files from any device to any device.
Key Business Question to Answer
Is the value proposition of a large encrypted file transfer service enough to drive Firefox Account relationships for non-Firefox users.
Hypotheses to Test
Primary - In support of Relationships KPI
We believe that a privacy-respecting file transfer service can drive Firefox Accounts beyond the Firefox Browser.
We will know this to be true when we see 250k Firefox Account creations from non-Firefox contexts w/in six months of launch.
Secondary - In support of Revenue KPI
We believe that a privacy respecting service accessible beyond the reach of Firefox will provide a valuable platform to research, communicate with, and market to conscious choosers we have traditionally found hard to reach.
We will know this to be true when we can conduct six research tasks (surveys, A/B tests, fake doors, etc) in support of premium services KPIs in the first six months after launch.
Overview of Key Measures
- Number of people using the service to send and receive files
- Why: measure of service size. Important for understanding addressable market size
- Percent of users who have or create an FxAccount via Send
- Why: representation of % of any service users who might be amenable to an upsell
- % of downloaders who convert into uploaders
- Why: represents a measure of our key growth-loop potential
- Count of uploads and size
- Why: Represents cost of service on a running basis
Key Funnels
- App Open or Visit
--- DESIRED OUTCOME --->
Successful Upload - Download UI Visit
--- DESIRED OUTCOME --->
Successful Download - FxA UI Engagement
--- DESIRED OUTCOME --->
Authenticate - STRETCH App Open or Visit
--- DESIRED OUTCOME --->
Successful Download
Complete Schema
Please see, See Amplitude HTTP API(https://amplitude.zendesk.com/hc/en-us/articles/204771828) for HTTP API reference.
Event Structure
app_version
string ∙ app versionAndroid 1.5
orWeb 1.2.5
country
string ∙ Can be captured using FxA Geo Librarydevice_id
string ∙ required, should be a unique hashevent_properties
dictionary ∙ see list belowevent_type
string ∙ see list belowinsert_id
string ∙ unique event id used by amplitude to dedupe eventslanguage
string ∙ App languageos_name
string ∙Mac OS X
,iOS
,Windows
, etc.os_version
string ∙10.01
,400
, etcregion
string ∙ Can be captured using FxA Geo Librarysession_id
long ∙ start time in ms since epoch (this should only be changed at the start of a session, but sent with each ping), set to -1 if event is out of session, such as expirationtime
long ∙ The timestamp of the event in milliseconds since epochuser_id
string ∙ required unless device ID is present, should be a double hash of FxA emailuser_properties
dictionary ∙ see list below. All user properties can be passed with all events. Amplitude will automatically drop user properties that do not change
User Properties
Has account
boolean ∙ whether the user is account activeFirst action
string ∙ did this userupload
ordownload
firstTotal uploads
num ∙ running sum of bundles uploadedTotal upload size
float ∙ running sum of total MB uploadedTotal downloads
num ∙ running count of bundles downloadedTotal download size
float ∙ running sum of total MB downloadedTotal clients
num ∙ running tally of total clients sharing a UIDCurrent uploads
int ∙ count of current unexpired filesUser agent Browser
string ∙ browser or if appApp
derived from UA stringUser Agent version
string ∙ browser version or if appApp Version
derived from UA stringUTM campaign
string ∙ referrerUTM content
string ∙ referrerUTM medium
string ∙ referrerUTM source
string ∙ referrerUTM term
string ∙ referrerExperiments
array of strings ∙ set of experiments the user is in
Event Properties
Bundle id
string ∙ Guid for bundleBundle creation timestamp
long ∙ The timestamp of bundle creation in milliseconds since epochNumber of files
int ∙ Number of files in bundleSize of files
float ∙ Size of files in MBTransfer rate
float ∙ rate of transfter in bytes per secondTotal downloads
int ∙ number of downloads setTotal duration
string ∙ Time for bundle expiry, one of5 minutes
one hour
etcPassword added
boolean ∙ Did the user add a password to the bundleRemaining downloads
int ∙ number of remaining downloads for a fileRemaining time
long ∙ time until a bundle expiresReason transfer stopped
string ∙ One ofcompleted
,errored
orcanceled
FxA prompt trigger
string ∙ One oftime options
,count options
,bundle size
,shoulder button
Location of URL copy
string ∙ Where did the user copy the share urlsuccess-screen
orupload-list
Site exit path
string ∙ Name of external link followed ...download-firefox
,twitter
,github
,cookies
,terms
,privacy
,about
,legal
,mozilla
Expiry reason
string ∙ one oftime limit hit
,download limit hit
,user deleted
Error code
String ∙ Error code if added
Event Types
The following list is of required event_type
definitions. If adding new event types please use the syntax Group - verb subject modifier
Event | Event Properties | Description |
---|---|---|
{ Uploader, Downloader, Unsupported } - visit |
none |
When a user visits the site, or opens the app, grouped by interface at open. Note, a number of API properties and User Properties should be set with this event |
{ Uploader, Downloader, Unsupported } - exit |
none |
When a user exits the site via click event on a link that directs to another domain |
Uploader - start bundle upload |
1, 2, 3, 4, 6, 7, 8, 16 (if applicable) |
When a user begins to upload a bundle for the site |
Uploader - stop bundle upload |
1, 2, 3, 4, 5, 6, 7, 8, 11, 16 (if applicable) |
When a user stops an upload or an upload stops for any reason |
Uploader - delete bundle |
1, 2, 3, 4, 6, 7, 8, 9, 10 |
When a user deletes their bundle |
Uploader - copy bundle url |
1, 13 |
When a user copies the url of a bundle they create |
Uploader - dismiss copy bundle dialog |
1 |
When a user dismisses the bundle copy dialog |
{ Uploader, Downloader } - start bundle download |
1, 2, 3, 4, 6, 7, 8, 9, 10, 16 (if applicable) |
When a user begins to download a bundle. Remaining downloads should be decremented after event. |
{ Uploader, Downloader } - stop bundle download |
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16 (if applicable) |
When a a download ends for any reason |
Downloader - click try send cta |
1 |
When a downloader clicks the prompt to try Firefox Send |
Downloader - unlock bundle success |
1 |
When a downloader successfully unlocks a file |
Downloader - unlock bundle failure |
1 |
When a downloader fails to unlock a file (only send once per session) |
Uploader - trigger signup cta |
12 |
When an uploader triggers the CTA via change to expiry options |
Signup - interact with email |
12 |
when a user inputs anything into the email submission form |
Signup - cancel signup |
12 |
When a user opts out of signing up |
Signup - submit signup |
12 |
When a user submits a sign up to fxa and we begin OAuth dance |
Server - expire bundle |
1, 2, 3, 4, 6, 7, 8, 9, 10, 15 |
when the server expires a bundle for any reason |
Error |
16 |
Fallback event for any errors that occur. Use the error code event property to specify an error type |