Front Desk · Widget · Channel Conversion

Week-by-week front desk health & booking channels

Calls in and out, client texts, follow-up work, widget demand, and confirmed bookings for the three Deka Lash studios in the saved snapshot. For operations and engineering readers: channel cohorts describe observed same-week conversion, not causal attribution.

Saved production snapshot, not a live dashboard. Documentation reviewed against Mononest develop on Sep 28, 2026. The measurement cutoff is shown below; the source-code review date is a separate boundary. Source contracts & verification scope.

Highlights from this snapshot

All-location summary for Oct 5–11, plus Oct 12–18 partial through Oct 16 at 12:09:09 PM EDT. These dated highlights stay all-location; charts and KPIs follow the filters above.

54 inbound calls in the latest complete week

Oct 5–11 recorded 54 inbound calls, including 1 classified SPAM, versus 74 inbound and 19 in that bucket in Sep 28–Oct 4. Greentree recorded 27 inbound calls, Wexford 13, and Washington 14. The one SPAM classification was at Greentree. This classification can include abandoned calls; it is not a verified robocall count.

230 visitors in the latest browser aggregate

The Oct 5 browser aggregate records 230 visitors across the three studios, including 149 at Washington and 2 tagged utm_medium=paid across all locations. Tags do not prove ad spend or that untagged traffic was organic. Oct 12 browser data is not yet aggregated.

24 confirmed bookings in the latest complete week

Oct 5–11 recorded 24 confirmed booking-tracker rows: 15 widget self-serve, 6 agent-direct, and 3 card-link bookings, versus 32 total in Sep 28–Oct 4. Location totals were 10 Greentree, 4 Wexford, and 10 Washington; enquiries totaled 78. Oct 12–18 has 22 confirmed bookings, 48 inbound calls, 45 outbound calls, and 52 enquiries through Oct 16 at 12:09:09 PM EDT; this partial week should not be compared with a full week.

Front desk health

Everything the AI front desk handled: phone traffic, two-way texting, and the follow-up engine chasing open conversations. The selected week is highlighted; hover any bar for detail.

Widget traffic

Browser analytics for the embedded booking widget — unique browsers on US traffic, measured client-side. Synced every Monday for the prior week, so the newest week can show “n/a” until the next sync. Backend booking numbers remain the source of truth.

Bookings

Booking-tracker rows marked CONFIRMED in the saved snapshot, split by how they happened — the client self-booking on the widget, the agent booking directly during a conversation, or a card-on-file link completing.

Channels & conversion

Every new client contact is assigned one channel by their first touch in the window: Widget (booking enquiry), Call lead (genuine inbound call), Inbound text (client texted first), or Win-back (we reached out first, no prior contact from them — ever). Spam callers are tracked but excluded from conversion.

First-touch cohort: leads, two-way engagement, and clients booked within the same week. Self-service bookings do not require a call or text.

How to read this report

Definitions & caveats

  • Weeks are Monday–Sunday, America/New_York. Oct 5–11 is the last complete week. The Oct 12 week is partial — data runs through Oct 16 at 12:09:09 PM EDT (16:09:09 UTC), and week-over-week deltas are suppressed until it closes.
  • A booking = a CONFIRMED front-desk booking-tracker row, grouped by record creation time. This is not appointment date, confirmation date, unique clients, or a fresh reconciliation of Mindbody appointments. Awaiting-payment card links are intents, not bookings, and are not counted. Owner-set enquiry labels are not used as proof of booking; confirmation comes from the booking records.
  • Conversion is a same-week cohort rate. Each client is assigned their first-touch channel within each week. A confirmed booking counts only if created after that touch and before the week ends (or the snapshot cutoff for the partial week). Engagement means an inbound call or text, so self-service bookings can exceed two-way engagements.
  • Win-back means outbound-first: we contacted a client with no earlier inbound call, text, or enquiry in recorded history. This classification alone does not prove a cold-outreach campaign. Follow-up to existing widget and call leads stays in their first-touch channel.
  • SPAM is a classifier bucket, not verified robocall waste. Current develop maps both “Spam Call” and “Abandoned Call” to SPAM before saving analysis. This report restricts that bucket to inbound calls and excludes it from conversion; outbound follow-up dials are separate. Historical values were not reclassified in this review.
  • Owner notification texts are excluded from message counts — only real client-facing traffic is shown. Every call row comes from the AI front desk (Retell); calls answered by studio staff directly do not pass through this system.
  • Follow-ups. Counts SMS follow-up records marked processed with no error, grouped by record-creation week. This does not prove provider acceptance or carrier delivery.
  • Widget traffic is measured in the browser (Mixpanel): visitors are unique browsers, not people; browser tracking can miss traffic and does not prove a provider booking. Weekly visitor counts must not be summed across weeks — a returning browser counts again each week.
  • Paid visitors means the saved page-view population tagged utm_medium=paid. A UTM label does not prove ad spend, incremental demand, or booking attribution; untagged traffic is not necessarily organic.
  • Snapshot pulled Oct 16, 2026 at 12:09:09 PM EDT (16:09:09 UTC) from production. Test enquiries and test call-analysis records are excluded. Browser aggregates lag operational data.

Source contracts & verification scope

Code reference: Mononest origin/develop at 940421f4327788402296f55a46bb5f372585bb30, reviewed September 28, 2026. This source-contract review is separate from measurement refreshes and is not deployed-version evidence. See the snapshot label for the data cutoff.

Implementation map and important differences from current dashboards
  • Report entry and consumer: docs-src/src/pages/deka-weekly.astro imports docs-src/src/data/deka-weekly.ts. Week and location selectors aggregate those arrays locally; no report API or refresh worker is invoked by this page. /deka/ remains a redirect to /deka-weekly/.
  • Booking persistence: libs/drizzle-orm/src/lib/schemas/l2-b/frontdesk-bookings.table.ts defines frontdeskBookingsInL2B with separate createdAt, confirmedAt, scheduledAt, status, and flow. The saved report counts CONFIRMED rows and excludes CARD_ON_FILE_ONLY; status is not proof of attendance, revenue, or current provider state.
  • Related aggregation, not an identical query: libs/win/src/lib/multilocation/call-outcomes.repository.ts, CallOutcomesRepository.getBuckets, also filters CONFIRMED rows and buckets creation time in each location’s timezone. Its conversation-prefix and seven-day prior-lead attribution differs from this report’s weekly first-touch cohorts. Do not expect the saved report and the current Home rollup to match without reconciling definitions.
  • Classification writer: libs/win/src/lib/frontdesk/agent/frontdesk-agent.constants.ts, mapDispositionToEnum, collapses Spam Call and Abandoned Call to SPAM. libs/win/src/lib/frontdesk/agent/services/frontdesk-analytics.service.ts, analyseCall, normalizes categories before persistence. Current analysis can store a skipped-analysis stub; a stored category is not proof of a full QA evaluation.
  • Asynchronous browser source: apps/workers/content-worker/src/app/victor/processors/mixpanel-data-pipeline/mixpanel-data-pipeline.processor.ts, getAthenaQueryWidgetEvents and fetchAndStoreWidgetEvents, count distinct browser IDs per location, week, and event before upserting weekly aggregates. The adjacent widget-event-registry.ts separates collection from display; scheduler-book-submit and scheduler-book-success are different events.
  • Tests inspected, not executed: libs/win/tests/lib/multilocation/call-outcomes.repository.spec.ts checks test-call/test-entity exclusions and empty-location behavior. Those tests do not validate this historical extract or establish current production totals. Recent source commits inspected include f80287f848 (test-entity exclusions) and ae33837239 (short-call/voicemail analysis skip).

Publication validation boundary

This publication reconciles nine aggregate slices and an independent production total/join audit, retrieved through typed Metabase tools at a frozen Oct 16, 2026 cutoff of 12:09:09 PM EDT (16:09:09 UTC). All three aggregate/audit query responses were successful and untruncated, covering 208 distinct call communications since Oct 5. Oct 5–11 remains the last complete week and Oct 12–18 is partial; all complete weeks retain their historical snapshots. The Oct 5 comparison matches the preserved snapshot; mutable enquiry and follow-up statuses are not reconstructed as of an earlier event-time cutoff.

Before refreshing the measurements

Re-query every location and dependent slice at one frozen cutoff. Use Monday-local half-open weeks, preserve the first-touch and same-week outcome boundary, reconcile booking flows and call categories to their parent totals, and keep missing browser data distinct from zero. Refresh highlights and cutoff labels with the arrays; a new source SHA alone must never make old measurements look current. Source inspection does not replace independent production reconciliation for each data refresh.

Related references: Front Desk journeys and booking widget contracts.