Events, properties and users
The language of product data: what an event records and how event and user properties differ.
Lesson 1 of 32~21 min of learningIncludes ~11 min for questions and tasks
Contents1 of 42 steps
Maya
You
app_opened. So each row is one thing a person did?Alex Tutor
user_id), what (event) and when (event_time, in UTC). The other columns are details.Alex Tutor
Dataset · 13 rows
Thirteen rows from Halves's event log, 1–4 June
A few rows picked from last week's export, in time order. Times are UTC.
- Columns
- event_time
- When it happened, in UTC
- user_id
- Who: the Halves account
- event
- What happened
- platform
- Where the event was logged: ios, android or server
- entry_method
- expense_added only: manual, receipt_scan or recurring
- amount_usd
- Amount in US dollars, for expenses and settle-ups
- settlement_id
- settle_up_recorded only: which settlement the row belongs to
Data
| event_time | user_id | event | platform | entry_method | amount_usd | settlement_id |
|---|---|---|---|---|---|---|
| 2026-06-01T06:00:00Z | u001 | expense_added | server | recurring | 420 | |
| 2026-06-01T06:41:00Z | u008 | app_opened | ios | |||
| 2026-06-01T06:44:00Z | u007 | app_opened | ios | |||
| 2026-06-01T06:46:00Z | u007 | expense_added | ios | receipt_scan | 116 | |
| 2026-06-01T16:36:00Z | u020 | app_opened | android |
Show 8 more rows
| 2026-06-01T16:38:00Z | u020 | expense_added | android | manual | 35 | |
| 2026-06-04T12:22:00Z | u013 | app_opened | ios | |||
| 2026-06-04T12:27:00Z | u013 | settle_up_recorded | ios | 185 | s004 | |
| 2026-06-04T18:10:00Z | u020 | app_opened | android | |||
| 2026-06-04T18:12:00Z | u020 | expense_added | android | manual | 91 | |
| 2026-06-04T18:15:00Z | u020 | settle_up_recorded | android | 67 | s008 | |
| 2026-06-04T21:21:00Z | u014 | app_opened | ios | |||
| 2026-06-04T21:22:00Z | u014 | settle_up_recorded | ios | 185 | s004 |
You
entry_method and amount_usd are the details?Alex Tutor
Alex Tutor
Question 1
Read row 10 of the excerpt: 2026-06-04T18:12:00Z, u020, expense_added, android, manual, 91. What does it record?
You
signup_date, acquisition_channel, timezone. Event properties as well?Alex Tutor
Alex Tutor
Dataset · 6 rows
The same six people in the users file
One row per person. These values don't change from event to event.
- Columns
- user_id
- The Halves account
- signup_date
- Date the account was created
- platform
- The user's phone platform: ios or android
- acquisition_channel
- How the user came to Halves
- timezone
- The user's home time zone
- is_internal
- true for a team account, false for a customer
Data
| user_id | signup_date | platform | acquisition_channel | timezone | is_internal |
|---|---|---|---|---|---|
| u001 | 2026-04-23 | ios | invite | Europe/Kyiv | false |
| u007 | 2026-05-08 | ios | referral_link | Asia/Bangkok | false |
| u008 | 2026-05-08 | ios | app_store_search | Asia/Bangkok | false |
| u013 | 2026-05-11 | ios | paid_social | Europe/Lisbon | false |
| u014 | 2026-05-30 | ios | referral_link | Europe/Kyiv | false |
Show 1 more row
| u020 | 2026-05-06 | android | referral_link | Europe/Kyiv | false |
Theo
Alex Tutor
expense_added events, look up each user_id in the users file and group by acquisition_channel. Event properties say what happened; user properties split it by who.Alex Tutor
Question 2
Which of these columns are user properties rather than event properties?
You
user_is_premium?Alex Tutor
expense_added, group_created, one name on every platform. If Android logs addExpense instead, every report shows two halves of one number.You
Alex Tutor
Alex Tutor
Question 3
Which of these should Halves log as events?
You
server.Alex Tutor
entry_method = recurring. Plus subscribers can make a bill repeat, like rent, and the server adds it on schedule. u001 may have been asleep.Maya
Alex Tutor
Alex Tutor
Question 4
True or false: a row with event = expense_added, platform = server and entry_method = recurring shows that the user opened Halves and added an expense.
You
s004 shows up twice, from u013 and u014, both for $185. Did they pay each other?Alex Tutor
settlement_id, two rows.You
Alex Tutor
Alex Tutor
Question 5
The excerpt has three settle_up_recorded rows. How many settle-ups (payments) do they describe?
Maya
You
expense_added with entry_method = receipt_scan, plus something about the split?Alex Tutor
dinner_scanned, and add properties for Maya's next questions: how many people, split how, in what kind of group.Alex Tutor
Question 6Short answer · AI-checked task
Someone in a trip group scans a $120 dinner receipt in Halves and splits it equally between 4 people. Name the event that should record this and list its properties. For each property, say whether it's an event property or a user property, and why.
Write your answer and get a score with feedback from our AI reviewer.
Log in to get AI feedbackAlex Tutor
Alex Tutor
That’s the lesson. You answered every task — nicely done.