Snapshots

No analytics today; here are the events to log ourselves

Waiting on you
  • The product has no usage analytics and no outside trackers.
  • One Postgres table called events, written by the server, never by a third party script.
  • The v1 events cover reads, hearts, makes, hand-offs and corrected facts.
  • Staff and demo acts are tagged apart, and a store's customers are never logged.
21Event names defined 26 Oct
Your call

Approve the v1 event list, and who builds it?

Data and analytics · 7.3

Tracking plan

Needs youLast checked Mon Oct 26Owner Param

Answer

The product has no usage analytics and no trackers; this plan names the events to log, their fields and where each fires, in our own Postgres table, so the numbers in metric definitions can be counted, and it waits on Param to approve the event list and who builds it.

Today

What the product already records

Record What it holds Where Source
Sign ins Email, start, expiry, browser, sign out time sessions brew/db/migrations/003_access.sql:2-10 brew/sessions.js:19-22
Brand opens Brand, email, first and last open, count, access kind access_log brew/db/migrations/003_access.sql:19-29 brew/server.js:657-666
Read progress A build's progress lines, kept 3 days build_events brew/db/migrations/002_jobs_counters_events.sql brew/server.js:724
Day counters AI calls by kind and brand, treg dollars, build dollars, per UTC day counters brew/db/migrations/002_jobs_counters_events.sql
Hearts, Not for me, saves, feed tuning Per member, per brand Member tuning state brew/member-tuning.js:1-8
Brief status Sent, received, in progress, needs info, delivered, with who and when The work item's history brew/brief-status.js:1-12
Fact edits Who changed which fact, when facts-edits.json brew/facts-desk.js:1-5
Jam messages and versions Who made each The team's jams brew/SCOPE.md:18

What does not exist

  • No product analytics: no GA4, Meta pixel or any third party script in the product's pages. handbook content/product/product-metrics.md
  • No one log of acts that the metrics can be counted from. brand-directions/book/content/j.js j-1 events
  • The reader detects a brand's own pixels and tags on its store; that is a read signal about the brand, not our tracking. brew/reader/stages/site.js:14-26
  • The company's other products use one Meta dataset and one GA4 property each through the Setup Analytics skill; nothing like that exists for this product's pages. memory squareup-tracking-structure

Tomorrow

The event table, proposed

One Postgres table, events, written by the server, never by a third party script.

Field Holds
at When, UTC
slug The brand
who The member's email, or staff, or guest, or demo
kind The event name below
card, play The card or Play, when there is one
area creative, performance, storefront, visibility, crm
week Monday of the brand's week
props A few fields per event, never a store customer's data

The events, proposed

Event Fires when Where in code Version Tag
read_started A read starts the build start v1 New
read_finished, read_failed A read ends or stops, with the step it stopped at the build end v1 New
feed_opened A member opens the feed feed open v1 New
heart, not_for_me, later On any card member tuning v1 New
make_opened A card opens the Studio the jam v1 New
version_made A new version is made the Studio v1 New
paid_make_confirmed A paid make is confirmed, with its price finals and makes v1 New
handed_off A brief is shared or sent, with who it is for Share the brief v1 New
brief_status A sent brief moves brief status v1 New
fact_corrected A to confirm fact is corrected the fact desk v1 New
email_sent, email_opened Team emails mail v1 New
post_scheduled, post_published A post the team approved v2 posting v2 New
launch_recorded, result_read A shipped Play and its reads v3 engine v3 New
rule_run, rule_undone An ad rule acts or is undone v4 rules v4 New

Rules

  • Demo visits and staff acts are tagged and counted apart. brand-directions/book/content/j.js j-1 onboarding-funnel
  • Never log what a store's customer does.
  • The privacy page says what we log; a new kind of event means a check against it.

How we do it

  1. Add an event by adding a row above first, then one events insert at the server point named.
  2. Never send an event to an outside service.
  3. Check events arrive after a deploy:
gcloud run jobs execute brew-ops --region=asia-south1 --wait

db/status.mjs prints table sizes; add events to its list when the table lands.

Numbers

Metric Definition Where measured Status
Events defined Rows in the events table above This page 21 names on 26 Oct
Events live Event kinds seen in events in the last 7 days events table 0, Proposed

Open

  1. Approve the event list? Proposal: yes, the v1 rows only, built as one change by engineering before the redesign.
  2. Our own table or an analytics vendor? Proposal: our own table in Postgres, so no new subprocessor and no cookie banner.
  3. Track the future public site? Proposal: the marketing site may use the Setup Analytics pattern; the product itself never does, and the privacy page says which is which.
Sources
  • brew/db/migrations/002_jobs_counters_events.sql
  • brew/db/migrations/003_access.sql:2-30
  • brew/sessions.js:19-22
  • brew/server.js:657-666, 724
  • brew/member-tuning.js:1-8
  • brew/brief-status.js:1-12
  • brew/facts-desk.js:1-5
  • brew/SCOPE.md:18
  • brew/reader/stages/site.js:14-26
  • brand-directions/book/content/j.js j-1 events, onboarding-funnel
  • memory squareup-tracking-structure, brew-access-rules
  • handbook content/product/product-metrics.md, content/security-privacy-and-legal/privacy-policy.md

Source file content/data-and-analytics/tracking-plan.md · For agents: Markdown · JSON