The pulse of the shop, on the dashboard, in real time.
Every meaningful event in your shop — new booking, payment received, photo uploaded by a tech, customer reply, review landed — flows into a live activity feed on the dashboard. Pulse dot in the corner shows it's actively refreshing every 30 seconds. Web push subscribes operators to high-value events (big quote sent, payment failure, no-show, urgent inbox message) so they get notified even when the tab is closed.
Launching soon — get early access.
- 💳Payment · $1,840 from Sarah Chen · invoice #2841now
- 📅Marcus Webb booked Tue 10am — Full PPF1m ago
- ⭐Mike got a 5★ Google review from K. Yamamoto3m ago
- 📸QC photos uploaded for invoice #2847 (3 shots)8m ago
- 💬Kim replied to playbook nudge: 'yes pls send PPF quote'12m ago
- ↩️Refund issued · $89 to invoice #283921m ago
Auto-refresh every 30s · click any event to jump to the source · web push opt-in for high-value events
Features, zoomed in
The parts that actually move the needle.
Three capabilities built specifically for the day-to-day of a working shop.
Deep dive · 01
Every meaningful event flows into one feed
Bookings, payments, photo uploads, customer messages, reviews collected, refunds issued — every meaningful action in /app emits into the unified activity router and lands in the dashboard feed. Each event is tinted by kind so you can scan the last two hours of shop activity in 5 seconds. Click any event to jump straight to the source: booking → calendar, payment → invoice, message → inbox.
- Bookings / payments / photos / messages / reviews / refunds
- Per-kind color tinting for fast scanning
- Click-through to the event source
- 30-day retention on the feed
- HQ tier: cross-shop activity for chains
Filtered to payments
- 💳Payment · $1,840 from Sarah Chen · invoice #2841now
- 💳Payment · $389 from Marcus Webb · invoice #28392h ago
- 💳Payment · $1,299 from K. Yamamoto · invoice #28385h ago
Click any chip to narrow · click any row to jump to the source
Deep dive · 02
Auto-refresh every 30s with a pulse-dot indicator
The dashboard's activity panel polls the feed every 30 seconds. New events fade in at the top; a pulse-dot indicator in the corner shows the feed is alive (so you know if the connection has dropped). Filter chips at the top scope the feed to one event kind — 'just photos' if you're checking on tech work, 'just payments' if you're reconciling the day.
- 30-second silent re-fetch
- Pulse-dot indicator confirms the feed is live
- Filter chips by event kind
- HQ tier adds per-shop filtering across the chain
- No manual reload required
Last refresh
4 seconds ago
Next refresh in
26s
Recent events
- 📅Marcus Webb booked Tue 10am — Full PPF1m ago
- ⭐Mike got a 5★ Google review from K. Yamamoto3m ago
- 📸QC photos uploaded for invoice #2847 (3 shots)8m ago
30s polling · new events slide in with a 3s highlight fade · no page reload
Deep dive · 03
Web push for high-value events — survives tab close
Per-user push preferences at /app/settings/notifications decide which event kinds fire push notifications (big quote sent, payment failure, no-show, urgent inbox message). Built on the standard Push API so it works on desktop and mobile browsers. Fires within ~2 seconds of the event — even when the SalesThumb tab is closed.
- Opt-in per user
- Opt-in per event kind (payments, quotes, no-shows, etc)
- Native browser Push API — cross-platform
- Quiet-hours configurable
- Survives tab close (and laptop sleep, on most OSes)
- Fires within ~2 seconds of the event
Web push · per-operator preferences
Push me when…
- 🔔Payment over $1k
- 🔔No-show within 30 min
- 🔔1★ or 2★ review
- 🔔Urgent inbox message
- New booking
- Photo upload
- Routine payment
What lands
SalesThumb
now
Payment · $1,840 from Sarah Chen
Invoice #2841 paid. Tap to view receipt.
✓ Survives tab close + sleep
Fires through browser web-push API · re-delivered on wake
Granular opt-in · per-operator · click-through goes straight to the event source
What's included
The full capability list.
Everything that ships on day one. No feature-gating surprises inside a single plan.
- Live event feed on the dashboard (auto-refresh 30s)
- Per-event tinting by kind (payment / booking / photo / review / reply)
- Pulse dot indicator in the corner — shows the feed is live
- Web push opt-in per user — survives tab close
- Per-user push preferences (which event kinds, which times)
- Click-through to the event source (booking → calendar, payment → invoice)
- Filterable by event kind / time range / shop (HQ tier)
- 30-day retention; older events drop off the feed
See every angle
A tour of the screens
Every meaningful view, the path through it, and the moments that matter — so you know exactly what you're buying.
Web push notification
High-value events fire native browser push even when the tab is closed.
Per-user opt-in by event kind.
Web push · per-operator preferences
Push me when…
- 🔔Payment over $1k
- 🔔No-show within 30 min
- 🔔1★ or 2★ review
- 🔔Urgent inbox message
- New booking
- Photo upload
- Routine payment
What lands
SalesThumb
now
Payment · $1,840 from Sarah Chen
Invoice #2841 paid. Tap to view receipt.
✓ Survives tab close + sleep
Fires through browser web-push API · re-delivered on wake
Granular opt-in · per-operator · click-through goes straight to the event source
How it works
Set it up once. Run it forever.
- 1
1. Events emit from every source
Every meaningful action in /app — booking created, payment recorded, photo uploaded, message received, review collected, refund issued — emits into the unified activity feed via the activity router.
- 2
2. Dashboard polls every 30s
The dashboard's activity panel polls the feed every 30 seconds. New events fade in at the top; pulse-dot indicator shows the feed is alive.
- 3
3. Web push for high-value events
Per-user push preferences (configured at /app/settings/notifications) decide which event kinds fire push notifications. Push survives tab close — operators get notified even when not actively using the app.
How a shop actually uses this
Mike's at lunch when his phone vibrates: web-push notification — 'Sarah Chen just paid invoice #2841 · $1,840.' He doesn't need to open the app to know the day's biggest invoice closed. When he gets back to the shop, the dashboard activity feed shows the last 2 hours: 4 photo uploads, 1 booking, the payment, 3 customer replies. He scans it in 10 seconds and knows what happened while he was out.
Questions
Good to know.
- Does this drain battery on mobile?
- 30-second polling on a single dashboard tab is negligible. Web push uses the standard Push API which OS-level handles efficiently. Mobile installer app uses native push (not web push) for even better battery profile.
- Can I filter the feed?
- Yes — filter chips at the top of the activity panel let you scope to one event kind (e.g. 'just photos' or 'just payments'). HQ tier adds per-shop filtering across the chain.
- What's the retention?
- 30 days on the dashboard feed. Audit log keeps a longer history (tied to your audit log retention policy — 90 days default, configurable).
Explore more
Pairs well with
Two-way SMS
Every customer conversation in one inbox. Auto-reminders run 24/7, but when they reply, a human sees it. MMS, templates, merge fields.
Automations
Build rules like 'when a quote is approved, send a deposit SMS and add a calendar hold.' Everything that happens repeatedly should be automated — and nothing should slip through.
Reports
Revenue, installer leaderboard, job margin, booking conversion, SMS-to-customer response. Not a thousand charts — the 10 you'll check every Monday.
Mobile Apps
The installer app shows today's schedule, captures photos, clocks in/out, and updates job status. The customer app shows appointments, warranties, and photo galleries — branded as your shop in the App Store.
Get live activity feed first at launch.
Launching soon — join the waitlist for early access. At launch: 30-day free trial with full access to every feature on this page, no credit card.
Launching soon — get early access.