{
 "id": "10.13",
 "title": "Growth metrics",
 "department": "Marketing and growth",
 "department_slug": "marketing-and-growth",
 "direction": null,
 "branded": false,
 "status": "needs-you",
 "owner": "Param",
 "last_verified": "Mon Oct 26",
 "holds": "Visits, reads, sign ups, activation, cost per brand",
 "urls": {
  "html": "https://handbook.joinsquareup.com/marketing-and-growth/growth-metrics",
  "markdown": "https://handbook.joinsquareup.com/marketing-and-growth/growth-metrics.md",
  "json": "https://handbook.joinsquareup.com/marketing-and-growth/growth-metrics.json"
 },
 "other_directions": [],
 "tldr": {
  "headline": "Almost nothing is counted yet, so pick three numbers and start",
  "points": [
   {
    "icon": "warn",
    "text": "Our own pages have no analytics, and read asks by DM have no shared list."
   },
   {
    "icon": "chart",
    "text": "Today we can count who started reads, briefs sent to our team and digests."
   },
   {
    "icon": "flag",
    "text": "Proposed north star: stores where anyone hands off a pick in a week."
   },
   {
    "icon": "lock",
    "text": "These numbers stay inside the team; test brands and staff are never counted."
   },
   {
    "icon": "clock",
    "text": "No targets until four weeks of counts exist."
   }
  ],
  "stat": {
   "value": "5",
   "label": "design partners, the only count"
  },
  "decide": "Which three numbers do we count first?",
  "mood": "waiting"
 },
 "sources": [
  "brand-directions/book/content/j.js j-1 what-we-count, onboarding-funnel, events",
  "brew origin/main a559de6: public/index.html:1-2; build.js:222-226, 236, 1009; brief-status.js:1-6; digest.js:10-12, 192; treg.js:119",
  "handbook content/product/product-metrics.md, content/ai-and-models/cost-per-brand.md",
  "memory: brew-access-rules, brew-prod-backend, brew-live-stores"
 ],
 "open_questions": [
  "**Which three do we count first?** Proposal: read asks, reads started and weekly hand off stores.",
  "**Do we add analytics to the landing and the ask page?** Proposal: yes, one GA4 property with four events: ask, sign in, read started, first hand off; no ad pixel until paid is decided.",
  "**Do team hand offs count?** Proposal: yes; log a quiet event when Share with my team copies a brief, so both hand offs count the same.",
  "**Who counts on Friday?** Proposal: Param, until a dashboard exists.",
  "**When do targets come?** Proposal: after four weeks of counts, Param sets one target for weekly hand off stores only."
 ],
 "parts": {
  "Answer": "The numbers that say whether Brew is growing, from a visit to a brand handing off work every week and what each brand costs; almost none are counted today, no targets exist, and Param must pick the few we count first.",
  "Today": "### What can be counted now\n\n| Record | What it holds | Source |\n|---|---|---|\n| Who started each read | `private/created.json`: the email and the time, per brand | [src: brew/build.js:236] |\n| Visitors log since 23 Oct | Every signed in email that opens a brand, with its access kind; nothing earlier | [src: memory brew-access-rules] |\n| Sessions and an access log table on production | Sign ins on feed.joinsquareup.com | [src: memory brew-prod-backend] |\n| Briefs sent to our team | Each status step with its time and who moved it | [src: brew/brief-status.js:1-6] |\n| Briefs shared with the brand's own team | Copied, never sent, so no record that counts them | [src: brew/brief-status.js:6] |\n| Monday digest | When it went and to how many | [src: brew/digest.js:192] |\n| Plays ready emails | One sent key per email and kind | [src: brew/build.js:1009] |\n| Spend per brand and month | Outside data and model spend files | [src: brew/treg.js:119] [src: handbook content/ai-and-models/cost-per-brand.md] |\n\n### What cannot be counted now\n\n| Gap | Source |\n|---|---|\n| Visits to the landing, the demo or the docs: no analytics on our own pages | [src: brew/public/index.html:1-2] [src: git grep gtag googletagmanager fbq origin/main] |\n| Hearts, makes and hand offs as events in one log: no usage analytics | [src: handbook content/product/product-metrics.md] |\n| Read asks that come by DM or email: no shared list | [src: no source found in memory or brew origin/main] |\n| Any target for any metric | [src: brand-directions/book/content/j.js j-1 what-we-count] |\n\nThe only firm count today is five design partners on production [src: memory brew-live-stores].",
  "Tomorrow": "Proposed for Param, from the old book's funnel and the product metrics.\n\n| Metric | Version | Tag | Definition |\n|---|---|---|---|\n| Visits | v1 | New | People who open the landing or the ask page, per week |\n| Read asks | v1 | New | Store links sent to us, from any channel, per week |\n| Sign ins | v1 | New | Work emails accepted; refusals counted apart |\n| Reads started | v1 | New | New brands with a starter, per week |\n| Reads finished | v1 | New | Reads that end with every step done |\n| Activation | v1 | New | A new brand that hearts one, makes one and hands off one in its first week |\n| Weekly hand off stores | v1 | New | Stores where anyone hands off a pick in a Monday to Sunday week; the north star in [product metrics](/product/product-metrics) |\n| Second Monday | v1 | New | Share of new brands that open Today again the next Monday |\n| Cost per brand | v1 | New | Model and data dollars per brand per month, from [cost per brand](/ai-and-models/cost-per-brand) |\n| Cost per new brand | v1 | New | Campaign spend plus read cost, divided by activated brands |\n| Approved posts | v2 | New | Share of hand offs that become a scheduled post |\n| Measured share | v3 | New | Share of shipped picks with a result |\n| Paying brands | v1 | New, once pricing is set | Brands on a paid plan |\n\nRules: these numbers stay inside the team; progress shown to a founder is about what they did, never their sales [src: brand-directions/book/content/j.js j-1 what-we-count].",
  "How we do it": "Proposed, until Param decides:\n\n1. Count every Friday, by hand until analytics exist, and write the week's row below.\n2. Sign ins: open the visitors log as staff at `GET /api/admin/visitors` on feed.joinsquareup.com, and count new official emails this week [src: memory brew-access-rules].\n3. Reads started: count brands whose `private/created.json` is dated this week. Production stores these as rows in Cloud SQL, so ask an engineer for a read only query; never write to production to count.\n4. Briefs sent to our team: read each brand's brief statuses from the ops view.\n5. Never count test brands, Cozy Snugglet and Zenant, or our own staff emails.\n\n| Week | Visits | Read asks | Reads started | First hand offs | Weekly hand off stores | Notes |\n|---|---|---|---|---|---|---|\n| | | | | | | First row once Param picks the metrics |",
  "Numbers": "This document owns every metric in Tomorrow. All are Proposed. None has a target, and none should get one until four weeks of counts exist.",
  "Open": "1. **Which three do we count first?** Proposal: read asks, reads started and weekly hand off stores.\n2. **Do we add analytics to the landing and the ask page?** Proposal: yes, one GA4 property with four events: ask, sign in, read started, first hand off; no ad pixel until paid is decided.\n3. **Do team hand offs count?** Proposal: yes; log a quiet event when Share with my team copies a brief, so both hand offs count the same.\n4. **Who counts on Friday?** Proposal: Param, until a dashboard exists.\n5. **When do targets come?** Proposal: after four weeks of counts, Param sets one target for weekly hand off stores only."
 }
}