Potty Tracker
One-tap logging for wet, dry, BMs, and accidents. 30-day heatmap shows where the misses cluster.
When to use this
Use Potty Tracker when you are in the middle of toilet training and need real data instead of memory. The pattern of accidents is usually NOT random; it is tied to a time of day, a stage of the meal, a transition, a Wednesday at school. The heatmap makes the cluster visible. Then you adjust the schedule, not your guess of what is wrong.
How it works
Five tap types
Wet, Dry, BM, Accident, Smear. One tap per event. The chip page is laid out so you can tap from across the bathroom. For BMs, an optional second tap on the Bristol Stool Scale (1-7) is offered if you want it.
Five-second undo
After every tap, an Undo banner appears for 5 seconds. Mis-tap on Smear when you meant Accident? Hit Undo. After 5 seconds the log is committed and undo disappears.
30-day heatmap
Every log fills a cell. Tap a day for the count. Same heatmap component as Behaviors, so if you cross-reference behaviors and potty events, the visual matches.
Ask Beacon what cluster it sees
Discuss with Beacon attaches the last 30 days of logs. Ask 'when do accidents cluster?' or 'is school worse than home?' and Beacon answers using your specific days.
What Beacon stores when you use it
potty_logs: Each tap creates one row. Bristol is only stored for BM rows (null otherwise). RLS-locked to you.
| Column | Type | Example |
|---|---|---|
| id | UUID | 7b1c... Auto-generated. |
| user_id | UUID | your-user-id RLS-locked to you. |
| type | enum | accident wet | dry | bm | accident | smear |
| bristol | smallint (nullable) | 4 1-7 Bristol scale, only for type=bm. Null for the other types. |
| logged_at | timestamp | 2026-05-16T13:42:00Z When you tapped. Drives the heatmap bucket assignment. |
A real example
Maya tracks Avery (age 4) for 7 days. Wet dominates mornings; accidents cluster Wednesday afternoons.
| Day | Wet | Dry | BM | Accident | Smear |
|---|---|---|---|---|---|
| Mon | 3 | 1 | 1 | 0 | 0 |
| Tue | 2 | 2 | 1 | 0 | 0 |
| Wed | 2 | 1 | 0 | 2 | 0 |
| Thu | 3 | 1 | 1 | 0 | 0 |
| Fri | 2 | 2 | 1 | 1 | 0 |
| Sat | 2 | 3 | 1 | 0 | 0 |
| Sun | 2 | 2 | 1 | 0 | 0 |
What Beacon auto-knows
- Every tap from the last 30 days.
- Counts per type by day, by day-of-week, by time-of-day bucket.
- Bristol scale distribution for BMs (if you've been logging it).
- Clusters: 'Accidents peak Wednesday 14:00-16:00.'
What Discuss with Beacon adds
- When you Discuss from the Potty page, the last 30 days attach to chat.
- Beacon can correlate against your Schedule + Behaviors data: 'Wednesday afternoons your kid is in OT, the schedule shows snack at 15:00, and accidents cluster 14:00-16:00. Try a bathroom prompt at 14:30.'
- Or draft a teacher email: 'Accidents at school cluster 13:30-14:30. Could you prompt a bathroom break right after lunch?'
Try these with Beacon
โWhen do accidents cluster?โ
Reads the 30-day log. 'Accidents peak Wednesday 14:00-16:00 (5 of 7 weeks). Tuesday and Thursday afternoons also elevated but smaller. Mornings clean across all days.'
โIs the Bristol pattern OK or should I flag to the pediatrician?โ
Reads BM rows + bristol. '14 of 18 BMs in the last 30 days were Bristol 1-2 (hard pellets / lumpy log). That's consistent with constipation. Worth flagging if you haven't already.'
โAvery has been DRY for 4 days. Is that the streak or am I imagining it?โ
Counts consecutive days without an Accident or Smear log. 'Confirmed. Today is day 4 of zero-accident days. The previous longest streak was 2 days. Worth a win log.'
โWrite a school email about the accident pattern.โ
Drafts a polite teacher email with the specific cluster + a 1-sentence suggested schedule tweak. You edit + copy.