You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document provides the exact Snowplow event specifications for P2P seller funnel KPIs on both Android and iOS platforms. Both platforms use shared KMM analytics code, ensuring consistent event tracking.
Critical Note: Page Type Schema Limitation
Due to Snowplow schema limitations (iglu:com.thredup/page_entity/jsonschema/1-2-4), most P2P page types are mapped to peer-to-peer-dashboard:
Logical Page Type
Actual Snowplow Value
peer-to-peer-create-listing
peer-to-peer-create-listing ✅
peer-to-peer-dashboard
peer-to-peer-dashboard ✅
peer-to-peer-listings
peer-to-peer-dashboard⚠️
peer-to-peer-sale-details
peer-to-peer-dashboard⚠️
peer-to-peer-bags
peer-to-peer-dashboard⚠️
peer-to-peer-landing
peer-to-peer-dashboard⚠️
peer-to-peer-disputes
peer-to-peer-dashboard⚠️
peer-to-peer-stats
peer-to-peer-dashboard⚠️
Recommendation: Always filter by category in addition to page_type for accurate results.
Critical Note: Page Visit Tracking Gap
P2P screens do NOT track automatic screen view events. The KMM P2P module only tracks interaction events (clicks, submits, etc.), not page views.
P2P KMM screens are hosted in SharedFragment with pageType = OTHER
No trackScreenView() methods exist in P2P analytics classes
Impact: "Page Visits" KPIs require proxy queries using interaction events.
KPI Event Specifications
1. List p2p Item Page Visits
Field
Value
Status
⚠️ NOT DIRECTLY TRACKED
Proxy Query
Any interaction in create listing flow
-- Proxy: Count sessions with any create listing interactionSELECTCOUNT(DISTINCT session_id)
WHERE category IN (
'peer-to-peer-photo-guide',
'peer-to-peer-camera',
'peer-to-peer-photos-review',
'peer-to-peer-condition',
'peer-to-peer-attributes',
'peer-to-peer-pricing',
'peer-to-peer-listing-review'
)
2. Photo Added
Field
Value
action
click
category
peer-to-peer-camera
label
use-photo
page_type
peer-to-peer-create-listing
Notes:
use-photo is the final confirmation when a photo is saved to the listing
Covers both camera-taken and gallery-selected photos (both go through review)
For gallery multi-select that bypasses review, also count select-from-gallery
Related Events (photo capture flow):
Event
label
Description
Camera shutter (guided)
photo-taken
Shutter pressed in guided camera flow
Camera shutter (single)
single-photo-taken
Shutter pressed in single photo mode
Gallery picker opened
select-from-gallery
User opens gallery picker
Photo confirmed
use-photo
User confirms photo → saved to listing
-- Recommended query for Photo AddedWHERE category ='peer-to-peer-camera'AND label ='use-photo'
3. Photo Review Completed
Field
Value
action
click
category
peer-to-peer-photos-review
label
continue
page_type
peer-to-peer-create-listing
WHERE category ='peer-to-peer-photos-review'AND label ='continue'
4. Condition Completed
Field
Value
action
click
category
peer-to-peer-condition
label
continue
page_type
peer-to-peer-create-listing
WHERE category ='peer-to-peer-condition'AND label ='continue'
5. Add Details Completed
Field
Value
action
click
category
peer-to-peer-attributes
label
proceed-next
page_type
peer-to-peer-create-listing
WHERE category ='peer-to-peer-attributes'AND label ='proceed-next'
6. Pricing Completed
Field
Value
action
click
category
peer-to-peer-pricing
label
next
page_type
peer-to-peer-create-listing
WHERE category ='peer-to-peer-pricing'AND label ='next'
7. Draft Saved
Field
Value
action
click
category
Multiple (see below)
label
save-draft
page_type
peer-to-peer-create-listing
Save points exist at multiple steps:
Category
Screen
peer-to-peer-condition
Condition step
peer-to-peer-attributes
Details/Attributes step
peer-to-peer-pricing
Pricing step
peer-to-peer-listing-review
Final review step
-- All draft savesWHERE label ='save-draft'AND category IN (
'peer-to-peer-condition',
'peer-to-peer-attributes',
'peer-to-peer-pricing',
'peer-to-peer-listing-review'
)
8. Item Published
Items can be published from two different places:
8a. First-time Publish (Create Listing Flow)
Field
Value
action
submit
category
peer-to-peer-listing-review
label
publish
page_type
peer-to-peer-create-listing
8b. Re-publish (Listing Details Page)
Field
Value
action
submit
category
peer-to-peer-listing-details
label
publish-listing
page_type
peer-to-peer-dashboard⚠️
-- All published items (both new and re-published)WHERE action ='submit'AND (
(category ='peer-to-peer-listing-review'AND label ='publish')
OR
(category ='peer-to-peer-listing-details'AND label ='publish-listing')
)
-- NEW listing publish only (for publish rate calculation)WHERE action ='submit'AND category ='peer-to-peer-listing-review'AND label ='publish'
9. Item Publish Rate
Metric
Formula
Item Publish Rate
(Item Published events) / (List p2p Item Page Visits)
Note: Since page visits aren't directly tracked, use proxy queries or calculate at user/session level.
10. Item Edits
Items can be edited from two places:
Source
category
label
property
Listings List
peer-to-peer-listings
edit-item
item_id={uuid}
Listing Details
peer-to-peer-listing-details
edit-listing
-
-- All item edit clicksWHERE (category ='peer-to-peer-listings'AND label ='edit-item')
OR (category ='peer-to-peer-listing-details'AND label ='edit-listing')
11. Price Adjustments
Price can be edited from four different places:
Source
category
label
Context
Listings List
peer-to-peer-listings
edit-price
Quick edit from list (includes item_id property)
Listing Details
peer-to-peer-listing-details
edit-price
Edit from item detail page
Create Listing (Pricing)
peer-to-peer-pricing
edit-price
During initial listing creation
Create Listing (Review)
peer-to-peer-listing-review
edit-price
Editing price before first publish
-- Price adjustments on existing items only (drafts + published)WHERE label ='edit-price'AND category IN ('peer-to-peer-listings', 'peer-to-peer-listing-details')
-- All price edit clicks including during creationWHERE label ='edit-price'AND category LIKE'peer-to-peer%'
Note: The actual price change is tracked via:
label = 'save-price'
category = 'peer-to-peer-pricing'
property = 'price_cents' with the new price value
12. p2p Dashboard Page Visits
Field
Value
Status
⚠️ NOT DIRECTLY TRACKED
Proxy Query
Any interaction on dashboard
-- Proxy: Count sessions with any dashboard interactionSELECTCOUNT(DISTINCT session_id)
WHERE category ='peer-to-peer-dashboard'