Events and property groups

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, either partner, subscriber, or friend, friend_of_friend

  • version : Vitalii to share system but right now will be 1.0

  • testing: 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, text

  • content_id (always string): f'{org_id}#{content_id}'

  • content_name e.g. 'Lost Season 1 Episode 1'

Share link group

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?

Event name

Sent from

Always sent

Also in Db

Property groups

Additional properties

Implemented?

load_gift_button

Front (Partner app)

Only with toolkit

 

Partner, content, Subscriber

 

Component not live yet

view_gift_button

Front (Partner app)

Only with toolkit

 

Partner, content, Subscriber

 

Assessing feasibility

click_generate_share_link

Front (Partner app)

Only with toolkit

 

Partner, content, Subscriber

 

Component not live yet

generate_share_link

Back (no system properties)

Yes

Yes

Partner, content, Friend, share link

 

partner_extra_properties mapping

 

trigger_source: partner-api | simulator

Live

view_share_details_modal

Front (Partner app)

Only with toolkit

 

Partner, content, share link, Subscriber

number_credits_left

Component not live yet

view_exceeded_quota_error

Front (Partner app)

Only with toolkit

 

Partner, content, Subscriber

 

Component not live yet

click_choose_share_medium

Front (Partner app)

Only with toolkit

 

Partner, content, share link, Subscriber

share_medium

Component not live yet

2.2. Friend (web landing)

Event name

Description

Sent from

Always sent

Also in Db

Property groups

Additional properties

Implemented?

Event name

Description

Sent from

Always sent

Also in Db

Property groups

Additional properties

Implemented?

request_load_web_landing

Request is received from the backend

Back (no system properties)

Yes

Yes

Partner, Content, Share link, Friend

issuer_user_agent

Live

load_web_landing

Page is loaded: user sees logo (end of sprint 12 scope)

Front (Browser)

Yes

 

Partner, Content, Share link, Friend

link_trigger_source: partner-api | simulator | social-media

Live

view_web_landing

Content is loaded: player is initialised

Front (Browser)

Yes

 

Partner, content, Share link, Multiple offers, Friend

link_trigger_source: partner-api | simulator | social-media

Live

click_start_content

 

Front (Browser)

Yes

 

Partner, content, Share link, Multiple offers, Friend

autoplay

link_trigger_source: partner-api | simulator | social-media
elapsed_time, adjusted_media_length, total_media_length

Live

click_pause_content

 

Front (Browser)

Yes

 

Partner, content, Share link, Multiple offers, Friend

link_trigger_source: partner-api | simulator | social-media

elapsed_time, adjusted_media_length, total_media_length

Live

click_leaves_browser

 

Front (Browser)

Yes

 

Partner, content, Share link, Multiple offers, Friend

link_trigger_source: partner-api | simulator | social-media

Live

view_content_end

Only for audio and video (not HTML)

Front (Browser)

Yes

 

Partner, content, Share link, Multiple offers, Friend

link_trigger_source: partner-api | simulator | social-media

elapsed_time, adjusted_media_length, total_media_length

Live

click_reshare

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?]
link_trigger_source: partner-api | simulator | social-media

Live

view_offers

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

link_trigger_source: partner-api | simulator | social-media

elapsed_time, adjusted_media_length, total_media_length

reason:pause_modal | end_modal | user_expand_offers_list

Live

click_offer

 

Front (Browser)

Yes

 

Partner, content, Share link, Single offer, Friend

elapsed_time, adjusted_media_length, total_media_length

is_primary:boolean

cta_text

button_location : pause_modal | bottom_sheet | end_modal | regular_position

button_type: offer_text | cta_with_icon


for new type of ticktock content

reason:

pause_modal |
end_modal |
user_expand_offers_list

 

displayType:

standalone_button|
banner|
small_modal |
big_modal |
screenshot_modal

 

DisplayMoment:

active_state |
watch |
pause |
end |
middle_scroll |
bottom_scroll |

Live

 

 

 

3. User-implemented events (Pixel)

Event name

Description

Sent from

Always sent

Also in DB

Property groups

Additional properties

Implemented?

Event name

Description

Sent from

Always sent

Also in DB

Property groups

Additional properties

Implemented?

other_partner_event

Pixel feature !

Partner App

Partner-triggered

 

Partner

partner_event_name, partner_event_props

not for now

load_gift_button

user_id, content_id, extra..

 

 

 

 

source: envoy_pixel

 

click_generate_share_link

 

 

 

 

 

 

 

 

4. Error events

Event name

Description

Sent from

Always sent

Also in DB

Additional properties

Implemented?

Event name

Description

Sent from

Always sent

Also in DB

Additional properties

Implemented?

view_error_page

Whenever custom error page is seen by a user

Front (browser)

yes

 

  • reason (can be link_expired and link_broken)

  • share_link_hash

  • share_link_url

  • org_name

  • subscriber_partner_user_id

yes

error_player_container

On error occurred when player failed to play or load

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_supported

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

Event name

Description

Send from

Always sent

Also in DB

Property groups

Additional properties

Implemented

Visual

 

Event type

view_main_landing

Whenever landing page is seen by a user

Front(browser)

yes

 

 

source property: if utm_code passes value, like envoy.is?source=from_somewhwre

yes

 

passive (view event)

click_get_started

User clicks on one of the 'get started' buttons

Front(browser)

yes

 

 

location property: values set to top or body

yes

 

active (click event)

click_contact_us

Triggered both when Contact Us is clicked and when the message gets sent (step property varies)

 

yes

 

 

  • step property, set to value open (first screen) and sent (second screen)

  • source property set to either landing_page or pricing_page_biggest_plan based on the page modal is trigerred from

yes

 

active (click event)

view_pricing_page

User sees pricing page after clicking get started

 

yes

 

 

source property: if utm_code passes value, like envoy.is/pricing?source=from_somewhwre

yes

 

passive (click event)

click_start_trial

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

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

signup_step_completed

Here let’s please give each screens explicit screen names.

Front(browser)

yes

 

 

step property with explicit names: email_and_password then address for address info, slug for slug, credit_card_info for the last, etc. (i might have forgotten a screen)

yes

For screen 1 :

all active (click events)