Events and property groups
No partner dash-side events needed for now
1 - Reusable property groups
The goal is to set up a group of properties that can be reused across events. This way:
property values can be kept constant across events in (SQL or Mixpanel) queries, which is useful to calculate conversion rates
easier and less prone to error when creating new events to just list groups of properties instead of individual properties
any change (e.g. new property) to a property group has to be made from just one place in the code and will modify all events in the scope
Mandatory properties
Automatically sent by Mixpanel: things like session_id
, timestamp
, device
, browser
, platform
, country
, region
... we don’t have to worry about those
user_id
(always string). In case of subscriber,f'{org_id}#{user_id}'
user_type
: takes one of three values, eitherpartner
,subscriber
, orfriend
,friend_of_friend
version
: Vitalii to share system but right now will be 1.0testing
: boolean, true if link generated from Sandbox
Partner group
org_id
org_name
Subscriber-side
Subscriber
partner_user_id
: 1:1 correspondence, partner knows who it is
Content group
content_type
audio, video, textcontent_id
(always string):f'{org_id}#{content_id}'
content_name
e.g. 'Lost Season 1 Episode 1'
Share link group
share_link_url
: "https://partner-company.lp.envoy.is/hash12 ", // from backend responseshare_link_hash
: "hash12" // from backend response
Friend-side
Friend
subscriber_user_id
(internal to Envoy, right now we use Mixpanel to generate)
subscriber_partner_user_id
: (partner provided)
Single Offer
offer_title
offer_type
offer_external_link
offer_external_link_utm
offer_id
:
//price stuff like frequency, currency, price to be added later
Multiple Offers
Same props with '_list', e.g. offer_title_list
, offer_type_list
, offer_external_link_list
, offer_id_list
2 - Events
Visual flow here: https://miro.com/app/board/uXjVOW_-LT8=/?moveToWidget=3458764526345077822&cot=14
Rules
Every property value in lowercase
present tense for verbs
each event starts with :
load
,view
,request
,generate
,click
Right now (23/05):
user_id
is missing from the 2 Back End-triggered events (as is Mixpanel id, unknown if partner off Toolkit). Workaround: if not on the toolkit, will create a synthetic user_id (other method than Mixpanel).
For request_load_web_landing
, this synthetic user_id
is temporary as will be reconciled in Mixpanel via aliases.
2.1. Subscriber
Event name | Sent from | Always sent | Also in Db | Property groups | Additional properties | Implemented? |
---|---|---|---|---|---|---|
| Front (Partner app) | Only with toolkit |
| Partner, content, Subscriber |
| Component not live yet |
| Front (Partner app) | Only with toolkit |
| Partner, content, Subscriber |
| Assessing feasibility |
| Front (Partner app) | Only with toolkit |
| Partner, content, Subscriber |
| Component not live yet |
| Back (no system properties) | Yes | Yes | Partner, content, Friend, share link |
| Live |
| Front (Partner app) | Only with toolkit |
| Partner, content, share link, Subscriber |
| Component not live yet |
| Front (Partner app) | Only with toolkit |
| Partner, content, Subscriber |
| Component not live yet |
| Front (Partner app) | Only with toolkit |
| Partner, content, share link, Subscriber |
| Component not live yet |
2.2. Friend (web landing)
Event name | Description | Sent from | Always sent | Also in Db | Property groups | Additional properties | Implemented? |
---|---|---|---|---|---|---|---|
| Request is received from the backend | Back (no system properties) | Yes | Yes | Partner, Content, Share link, Friend |
| Live |
| Page is loaded: user sees logo (end of sprint 12 scope) | Front (Browser) | Yes |
| Partner, Content, Share link, Friend |
| Live |
| Content is loaded: player is initialised | Front (Browser) | Yes |
| Partner, content, Share link, Multiple offers, Friend |
| Live |
|
| Front (Browser) | Yes |
| Partner, content, Share link, Multiple offers, Friend |
| Live |
|
| Front (Browser) | Yes |
| Partner, content, Share link, Multiple offers, Friend |
| Live |
|
| Front (Browser) | Yes |
| Partner, content, Share link, Multiple offers, Friend |
| Live |
| Only for audio and video (not HTML) | Front (Browser) | Yes |
| Partner, content, Share link, Multiple offers, Friend |
| Live |
| not live in prod now | Front (Browser) | Yes |
| Partner, content, Share link, Multiple offers, Friend | [let’s maybe catch the new share link info here as well?] | Live |
| Only if on mobile user clicks to view all the offers - ES to create ticket | Front (Browser) | Yes |
| Partner, content, Share link, Multiple offers, Friend |
| Live |
|
| Front (Browser) | Yes |
| Partner, content, Share link, Single offer, Friend |
for new type of ticktock content reason: pause_modal |
displayType: standalone_button|
DisplayMoment: active_state | | Live |
3. User-implemented events (Pixel)
Event name | Description | Sent from | Always sent | Also in DB | Property groups | Additional properties | Implemented? |
---|---|---|---|---|---|---|---|
| Pixel feature ! | Partner App | Partner-triggered |
| Partner |
| not for now |
| user_id, content_id, extra.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. Error events
Event name | Description | Sent from | Always sent | Also in DB | Additional properties | Implemented? |
---|---|---|---|---|---|---|
| Whenever custom error page is seen by a user | Front (browser) | yes |
|
| yes |
| On error occurred when player failed to play or load | Front(browser) | yes |
|
| yes |
| Whenever player is not supported by user’s browser | Front(browser) | yes |
| error_code org_id org_name user_id user_type content_id content_name content_type share_link_hash share_link_url subscriber_user_id subscriber_partner_user_id version testing offer_title_list offer_type_list offer_external_link_list offer_id_list | yes |
error_player_container
error_player_content_not_supported
property is error_code
5. Envoy main page
Event name | Description | Send from | Always sent | Also in DB | Property groups | Additional properties | Implemented | Visual
| Event type |
---|---|---|---|---|---|---|---|---|---|
| Whenever landing page is seen by a user | Front(browser) | yes |
|
|
| yes |
| passive (view event) |
| User clicks on one of the 'get started' buttons | Front(browser) | yes |
|
|
| yes |
| active (click event) |
| Triggered both when |
| yes |
|
|
| yes |
| active (click event) |
| User sees pricing page after clicking get started |
| yes |
|
|
| yes |
| passive (click event) |
| User clicks on the Start Free Trial button on pricing page |
| yes |
|
| source property: if utm_code passes value, like envoy.is/pricing?source=from_somewhwre | yes |
| active (click event) |
6. Dashboard panel
Event name | Description | Send from | Always sent | Also in DB | Property groups | Additional properties | Implemented | Visual | Event type |
---|---|---|---|---|---|---|---|---|---|
At each step of the signup flow, if click is successful
| Here let’s please give each screens explicit screen names. | Front(browser) | yes |
|
|
| yes | For screen 1 : | all active (click events) |
|
|
|
|
|
|
|
|
|
|