OpsBeacon User Guide
Everything your store team needs to run the TV Dashboard, leadership views, Ops Intelligence, pay sheet estimates, and marketing tools.
New here? Start with Getting started and Roles & access.
Getting started
Setting up your store takes just a few minutes.


Forgot your password?
On the sign-in page, click Forgot password? and enter your account email. You'll receive a reset link (valid for about one hour). Open the link, choose a new password, then return to /login to sign in.

The first person to register a store becomes the owner. Owners can invite team members, manage billing, and update store settings. You can also assign a manager role for day-to-day admin without full billing control. Everyone else joins as staff.
Roles & access
Three store roles control what each person can see and change.
Owner
- Full Admin access
- Billing & subscription
- FranPOS credentials
- Team invites & roles
- Ops Intelligence & Pay Sheets
- Executive Dashboard preset
Manager
- Most Admin cards (read/write)
- Store & Billing (view only)
- Ops Intelligence & Pay Sheets
- Custom slides & KPI targets
- Marketing tools (ALFIE hub, CRM, campaigns)
- Executive Dashboard (personalized)
Staff
- My Home (/me) - pay, rankings, reviews
- My Grooming Dashboard (linked groomers only)
- TV Dashboard & team slideshow (non-groomers)
- Personal slide preferences (gear menu)
- No Admin billing or team access
- No Ops Intelligence
Where each role lands after sign-in
- Owners & managers → Executive Dashboard
- Staff (linked groomers) → My Home with a My Dashboard button to My Grooming Dashboard
- Staff (other roles) → My Home or the store TV slideshow at /team

Linked groomers who open /team are redirected to My Grooming Dashboard - they never receive the full store TV dashboard.
Owners assign roles from Admin → Team Access. Only owners can change billing or invite new users.
TV Dashboard
A full-screen rotating slideshow designed to run on a TV in your store.
After signing in, your home page becomes the TV Dashboard. It cycles through slides showing your store's key data at a glance. Built-in slides include:

- Goals - daily and monthly targets vs. actuals
- Performance (KPIs) - revenue, average ticket, grooming counts, and more
- Pulse - traffic-light health orbs for revenue, appointments, and rebook rate
- 30-day Trends - revenue chart and day-of-week sparklines
- Appointments - today's schedule pulled from FranPOS
- Rankings - groomer performance leaderboard
- Google Reviews - Google 5-star review counts and team shout-outs
- Weather - current local conditions and a 7-day forecast based on your store's city/state
- Clock - full-screen digital clock with day and date, optional in the rotation
- Custom slides - any slides you build in the Custom Slide Builder will rotate in alongside the built-in ones
Per-slide zoom
Some slides look best at a different zoom level on your TV. Hover over a slide and the + / − zoom controls appear in the corner. Adjusting zoom only affects the current slide, and the setting is saved on that device - the next time you open the TV Dashboard on the same device, each slide remembers its own zoom level.
Customizing the slideshow
Click the gear icon in the top-right corner of the TV Dashboard to open slideshow settings. From there you can:
- Turn individual slides on or off for your personal view
- Reorder slides
Staff use the gear menu to personalize their own view. Owners control the master list of slides and the rotation speed from Admin → Dashboard / TV Slides (see below).
Executive Dashboard
A leadership-focused slideshow for owners and managers - manual navigation, no auto-rotate.
Open it from the Admin quick links or go to /dashboard/executive. It uses the same slide types as the TV Dashboard but is tuned for desk or back-office screens where you want to click through slides at your own pace.

Executive vs. staff TV preset
- Owners control the store-wide Executive slide list from Admin → Dashboard / TV Slides. Use the dashboard target dropdown at the top of that page to switch between Staff TV and Executive presets.
- Managers see the Executive Dashboard with their own saved slide on/off and ordering preferences (same gear-menu behavior as staff on the TV Dashboard).
- Staff use My Home, My Grooming Dashboard (linked groomers), or the store TV slideshow - not the Executive view.
Retail floor TVs
My Grooming Dashboard
A mobile-first, groomer-only view - your approved widgets and your data only.
Open it from the My Dashboard button on My Home or go directly to /groomer/dashboard. The page title is My Grooming Dashboard; the button label on small screens is shortened to My Dashboard.

Who can access it
- Your store login must be linked to a team member in Admin → Team Access
- That team member's Ops Intelligence role must be Groomer (configured under Ops Intelligence → Team members)
- Owners and managers are sent to the Executive Dashboard instead - this view is for floor groomers
What groomers see (and what they don't)
My Grooming Dashboard is locked down on the server. Groomers only receive widgets management has explicitly approved, and every widget only loads their own scoped data - never storewide reporting, other groomers' numbers, revenue leaderboards for the whole salon, or admin screens unless a widget was built and approved for groomer use.
Security
Groomer Progress report
The primary approved widget today is Groomer Progress - a monthly store-vs-you progress report (similar to a salon spreadsheet), including:
- Appointment Status, Customer Type, Financial Averages, Service Types, Dog Sizes, Coat Types, and Complex Size Breakdown - each section compares Salon vs You
- Rankings Highlights (MTD) - compares #1 (top groomer by MTD revenue, no name shown) vs You
- Add-ons & Upgrades Breakdown - salon vs you counts by category
- 12-Month Trends - salon vs you charts (load in the background after the main table appears)
Use ← Prev / Next → to change months. Financial commission uses FranPOS commission data when available; otherwise it estimates from MTD booked revenue and the groomer's configured commission rate in Team members.
Empty or locked states
- No dashboard slides have been approved for your view yet. - management has not enabled any widgets for groomers
- This dashboard is private and only shows information approved for your role. - you are not linked as a groomer, the feature is disabled, or your account is not eligible
Management: Groomer Mobile Dashboard settings
Owners and managers configure groomer access under Admin → Dashboard / TV Slides → Groomer Mobile Dashboard:
- Enable groomer mobile dashboard - master on/off for the store
- Approved widgets - checkboxes for each groomer-safe widget (only widgets that support self-scoped data appear)
- Preview by signing in as a linked groomer and opening My Grooming Dashboard
Groomer Progress can also be added to a custom TV slide for owners/managers in the Custom Slide Builder; on My Grooming Dashboard it always shows only the signed-in groomer's data.
Admin panel
Your control center for store data, team, and settings.
Open Admin from the navigation bar or go to /admin. Here's what you can do:

- Store & Billing - view your current subscription (read-only), open Manage subscription and billing to choose products and pay via Stripe, and update your FranPOS connection (location ID, API key). Owners also set store-wide operational settings here, including Grooming (table count, daily revenue goal per table, and store hours - see Grooming & store hours) and Google Reviews Leaderboard options (toggle the bonus column and set the bonus amount per 5-star review).
- Integrations - connect FranPOS (location ID and API token), Google Reviews (Place ID), and your POS vendor. Open Admin → Store & Billing → Integrations.

Connect FranPOS, Google Reviews, and test your POS connection on the Integrations tab. 
Configure TV slide rotation interval and Google Reviews bonus display options. - Dashboard / TV Access Link - generate or revoke a shareable link that auto-logs a TV into the dashboard (handy for store-floor TVs you don't want to sign in manually).
- Dashboard / TV Slides - a unified management page listing every slide that can appear on the TV (built-in and every custom slide you've built). Owners can:
- Toggle any slide on or off for the whole store
- Reorder slides with the up / down arrows
- Duplicate a custom slide to use it as a starting point for a new one
- Edit a custom slide (jumps straight into the Custom Slide Builder)
- Delete a custom slide
- Set the global slide rotation interval (seconds per slide)
- Groomer Mobile Dashboard - enable the groomer phone view, choose which self-scoped widgets groomers may see (see My Grooming Dashboard)
- Custom Slide Builder - click Create Custom Slide on the TV Slides page (or open the Custom Slide Builder accordion) to build your own slides by dropping widgets onto a canvas. See the Custom Slide Builder section below.
- Notices - post announcements that staff see on the TV dashboard. Display them by adding a Team Notices or Single Pinned Notice widget to a custom slide in the Custom Slide Builder. Great for daily reminders, shout-outs, or policy updates.
- Data Uploads - upload CSV or Excel files exported from FranPOS (Sales, Appointment, Monthly-Sales, and Metrics reports) to import KPI and appointment history. The onboarding YTD import uses this same pipeline.
- Sync from FranPOS - pull the latest data directly from the FranPOS API using your store's credentials. No file upload needed.
- KPI Targets - set monthly and per-day-of-week targets for revenue, grooming count, average ticket, and other metrics. These targets power the Goals slide, Pulse orbs, and the Today vs Target widget.
- Goals - define daily or monthly goals that show up on the Goals slide and that you can pin individually on custom slides via the Goal Progress widget.
- Employees - manage team member names so that Google Review mentions can be matched to the right person.
- Team Access - invite new staff members by email and assign roles (owner, manager, or staff). Only owners can add or remove team members.
- Ops Intelligence - ALFIE-powered operations tools for owners and managers: booking anomaly review, grooming capacity & labor estimates, store P&L tracking, daily Morning Briefing emails, and Pay Sheet drafts. See the Ops Intelligence section.
Ops Intelligence
ALFIE-powered back-office tools for spotting booking issues, understanding capacity, estimating groomer pay, and reviewing store-level profit & loss.
Open from Admin → Ops Intelligence or /admin/ops-intelligence. Available to owners and managers only.

Important
Getting started




Daily Workflow - Customer Follow-Up
The Daily Workflow tab surfaces rebooking opportunities, including lapsed and at-risk customers. Cards like "Contact lapsed customers" summarize how many clients need outreach, but the full list lives in Customer CRM.
- Click Open CRM on the Customer Follow-Up section or Open in CRM → on any follow-up card
- Regenerate today's workflow after updates if cards do not yet show CRM links
Anomalies tab - booking review
Scans upcoming appointments (default: 7 days ahead) and flags patterns that differ from a pet's history. Appointments are never blocked - this is a review queue only.
- Service deviation - pet usually gets Full Groom but is booked for Bath or Mini Groom
- Groomer change - assigned groomer differs from the pet's usual groomer
- Missing common add-on - historical add-ons (nail grind, teeth brushing, etc.) not reflected in the service text
- Size tier change - small/medium/large tier differs from visit history
- Unusual duration - service pattern suggests a very different appointment length
Use Run scan now for an immediate check, or rely on automatic scanning when enabled. Filter by status (Open / Reviewed / Dismissed), then Mark reviewed or Dismiss each item. Dismissed and reviewed items are not recreated on future scans.
Capacity tab - grooming capacity & labor
Shows how fully booked your grooming operation is over any date range (defaults to the last 7 days). Key metrics:
- Table capacity - grooming tables × store open hours
- Groomer scheduled - FranPOS scheduled hours for team members with the Groomer role
- Groomer booked - hours filled by appointments
- Capacity used - booked hours vs. available groomer capacity
When team pay rates are configured, the panel also shows estimated labor economics: groomer opportunity loss (unbooked schedule, understaffed tables), bather profit/loss, and retail front-of-house P/L. Bather bath revenue counts only bath line items attributed to active bathers in FranPOS (groomer-performed baths are excluded; no grooming-sales estimate). Retail FOH labor includes every active retail team member: hourly staff use scheduled or time-clock hours, and salaried staff use prorated salary for the period. If FranPOS shows employees not yet in your team roster, click + Add [name] to jump to Pay Sheets with that name pre-filled.

Morning Briefing tab - daily email
ALFIE compiles a daily owner/manager summary - yesterday's KPIs, open anomalies, capacity snapshot, goal progress, rankings highlights, and an optional plain-English narrative.

Past briefings appear in the history list - click any row to reopen its HTML snapshot.
Pay Sheets tab - pay period estimates
Pulls FranPOS revenue, tips, and your configured pay rates to produce an estimate-only pay sheet for any date range.
Choosing a payroll provider
Each store selects one payroll path on Admin → Ops Intelligence → Pay Sheets. OpsBeacon then shows integration settings, submit/sync buttons, and in-app help for that provider only. You can change the selection later; finalized pay periods keep their history.
- 1Enable Ops Intelligence and the Pay Sheets module.
- 2Under Payroll provider, choose Estimates only, ADP Workforce Now (coming soon), QuickBooks Online Payroll (coming soon), Gusto (coming soon), or Paychex (coming soon). Store owners use Estimates only until integrations roll out.
- 3Open the in-app payroll help panel on Pay Sheets for setup and workflow steps specific to your provider.
- 4Map team members to provider employee IDs when using ADP, QuickBooks, Gusto, or Paychex (see Team access).
ADP Workforce Now (coming soon)
Push finalized pay period data to ADP Workforce Now, run payroll in ADP, then sync employer tax actuals back into OpsBeacon for P&L.
Before you start
- Ops Intelligence and the Pay Sheets module are enabled for your store.
- Team members are configured with roles, pay rates, and names that match FranPOS.
- Your store state is set under Admin → Store & Billing for tax estimates and P&L.
- Your organization has ADP Workforce Now with Pay Data Input and Payroll Output API access.
- OpsBeacon server env vars for ADP OAuth and mTLS certificates are configured by your administrator.
Choose ADP and configure the store
- 1Open Admin → Ops Intelligence → Pay Sheets.
- 2Under Payroll provider, select ADP Workforce Now and save.
- 3Expand ADP settings, enable ADP payroll for this store, and enter your ADP pay group code.
- 4Map earning codes (regular, overtime, commission, tips, bonus) to match your ADP configuration.
- 5Click Test connection to confirm workers are visible.
Map team members
- 1Open Admin → Team Members (or Team members on Pay Sheets).
- 2For each employee, enter ADP file number and associate OID.
- 3Use the ADP workers list API suggestions when names match.
Submit and sync a pay period
- 1Generate and finalize the pay period in Pay Sheets.
- 2Click Submit to ADP to send pay data for mapped employees.
- 3Process payroll in ADP Workforce Now as you normally would.
- 4After ADP completes the run, click Sync ADP taxes on the same pay period.
- 5P&L will use ADP employer tax actuals for dates that overlap synced periods.
Team mapping: Each team member needs adpFileNumber and optionally adpAssociateOid from ADP Workforce Now.
P&L: When taxSnapshot.source is adp, P&L uses prorated employer labor cost from ADP-synced actuals instead of flat estimates.
Common issues
Submit to ADP is disabled or missing
Confirm Payroll provider is set to ADP, ADP is enabled with a pay group code, and the period is finalized. Only store owners can submit.
Sync failed after ADP processed payroll
Wait until ADP finishes the payroll run, then sync again. Verify the pay group code matches the run in ADP.
QuickBooks Online Payroll (coming soon)
Connect QuickBooks Online Payroll, submit time activities from finalized pay periods, run payroll in QBO, then sync payslip taxes into OpsBeacon.
Before you start
- Ops Intelligence and the Pay Sheets module are enabled for your store.
- Team members are configured with roles, pay rates, and names that match FranPOS.
- Your store state is set under Admin → Store & Billing for tax estimates and P&L.
- Your store uses QuickBooks Online with Payroll (partner API access may be required for payslip sync).
- OpsBeacon server env vars QUICKBOOKS_CLIENT_ID and QUICKBOOKS_CLIENT_SECRET are configured.
Choose QuickBooks and connect
- 1Open Admin → Ops Intelligence → Pay Sheets.
- 2Under Payroll provider, select QuickBooks Online Payroll and save.
- 3Click Connect QuickBooks and sign in with the QBO company that runs payroll.
- 4Enable QuickBooks payroll for this store and map compensation type names.
- 5Click Test connection to confirm employees are visible.
Map team members
- 1Open Admin → Team Members.
- 2Enter the QuickBooks Employee.Id for each team member.
- 3Use name-match suggestions from the QuickBooks employees API when available.
Submit and sync a pay period
- 1Generate and finalize the pay period in Pay Sheets.
- 2Click Submit to QuickBooks to create time activities for mapped employees.
- 3Run payroll in QuickBooks Online as you normally would.
- 4After payslips are available, click Sync QuickBooks taxes on the pay period.
- 5P&L will use QuickBooks employer tax actuals for overlapping dates.
Team mapping: Each team member needs quickbooksEmployeeId (QuickBooks Employee.Id).
P&L: When taxSnapshot.source is quickbooks, P&L uses prorated employer labor cost from synced payslip taxes.
Common issues
QuickBooks connect failed
Verify the redirect URI in your Intuit app matches {APP_URL}/api/ops-intelligence/payroll/quickbooks/callback and that payroll scopes are enabled.
Sync returns no payslip data
Complete payroll in QuickBooks first. Payslip APIs may require production partner access from Intuit.
Gusto (coming soon)
Connect Gusto, submit employee compensations to an unprocessed Gusto payroll, review and process in Gusto, then sync calculated tax results.
Before you start
- Ops Intelligence and the Pay Sheets module are enabled for your store.
- Team members are configured with roles, pay rates, and names that match FranPOS.
- Your store state is set under Admin → Store & Billing for tax estimates and P&L.
- Your store uses Gusto with a regular payroll schedule that overlaps OpsBeacon pay periods.
- OpsBeacon server env vars GUSTO_CLIENT_ID and GUSTO_CLIENT_SECRET are configured.
Choose Gusto and connect
- 1Open Admin → Ops Intelligence → Pay Sheets.
- 2Under Payroll provider, select Gusto and save.
- 3Click Connect Gusto and authorize your Gusto company.
- 4Enable Gusto payroll for this store and map hourly and fixed compensation names to match Gusto job pay types.
- 5Click Test connection to confirm employees are visible.
Map team members
- 1Open Admin → Team Members.
- 2Enter the Gusto employee UUID for each team member.
- 3Use name-match suggestions from the Gusto employees list when available.
Submit and sync a pay period
- 1Ensure an unprocessed Gusto payroll exists with dates overlapping the OpsBeacon period.
- 2Generate and finalize the pay period in Pay Sheets.
- 3Click Submit to Gusto to prepare, update compensations, and calculate in Gusto.
- 4Review and process payroll in the Gusto UI (final processing cannot be done via API).
- 5Click Sync Gusto taxes after Gusto finishes calculation.
- 6P&L will use Gusto employer tax actuals for overlapping dates.
Team mapping: Each team member needs gustoEmployeeUuid from Gusto.
P&L: When taxSnapshot.source is gusto, P&L uses prorated employer labor cost from Gusto-synced calculated payroll.
Common issues
No unprocessed Gusto payroll found
Create or open a regular payroll in Gusto with pay dates that overlap the OpsBeacon period before submitting.
Sync says calculation is still in progress
Wait for Gusto to finish calculating, complete any required review in Gusto, then sync again.
Paychex (coming soon)
Connect Paychex, submit worker compensations to an unprocessed Paychex payroll, review and process in Paychex, then sync calculated tax results.
Before you start
- Ops Intelligence and the Pay Sheets module are enabled for your store.
- Team members are configured with roles, pay rates, and names that match FranPOS.
- Your store state is set under Admin → Store & Billing for tax estimates and P&L.
- Your store uses Paychex Flex with a regular payroll schedule that overlaps OpsBeacon pay periods.
- OpsBeacon server env vars PAYCHEX_CLIENT_ID and PAYCHEX_CLIENT_SECRET are configured.
Choose Paychex and connect
- 1Open Admin → Ops Intelligence → Pay Sheets.
- 2Under Payroll provider, select Paychex and save (super admin testing only until rollout).
- 3Click Connect Paychex and authorize your Paychex company.
- 4Enable Paychex payroll for this store and map hourly and fixed compensation names to match Paychex pay types.
- 5Click Test connection to confirm workers are visible.
Map team members
- 1Open Admin → Team Members.
- 2Enter the Paychex worker ID for each team member.
- 3Use name-match suggestions from the Paychex workers list when available.
Submit and sync a pay period
- 1Ensure an unprocessed Paychex payroll exists with dates overlapping the OpsBeacon period.
- 2Generate and finalize the pay period in Pay Sheets.
- 3Click Submit to Paychex to prepare, update compensations, and calculate in Paychex.
- 4Review and process payroll in the Paychex UI.
- 5Click Sync Paychex taxes after Paychex finishes calculation.
- 6P&L will use Paychex employer tax actuals for overlapping dates.
Team mapping: Each team member needs paychexWorkerId from Paychex.
P&L: When taxSnapshot.source is paychex, P&L uses prorated employer labor cost from Paychex-synced calculated payroll.
Common issues
No unprocessed Paychex payroll found
Create or open a regular payroll in Paychex with pay dates that overlap the OpsBeacon period before submitting.
Sync says calculation is still in progress
Wait for Paychex to finish calculating, complete any required review in Paychex, then sync again.
Estimates only
Generate and finalize Pay Sheets using OpsBeacon estimates only. Export CSV or print reports for your accountant or payroll processor.
Before you start
- Ops Intelligence and the Pay Sheets module are enabled for your store.
- Team members are configured with roles, pay rates, and names that match FranPOS.
- Your store state is set under Admin → Store & Billing for tax estimates and P&L.
Select estimates only
- 1Open Admin → Ops Intelligence → Pay Sheets.
- 2Under Payroll provider, choose Estimates only and save.
Typical pay period workflow
- 1Configure team members and generate a pay period draft.
- 2Review gross pay, estimated taxes, and net pay.
- 3Add manual adjustments while the period is still a draft.
- 4Finalize the period when you are satisfied with the estimates.
- 5Export CSV or print reports and enter totals in your external payroll system manually.
Team mapping: No provider employee IDs are required. Map FranPOS names to team members so revenue and hours aggregate correctly.
P&L: P&L uses prorated employer labor cost from Pay Sheets tax estimates (gross pay plus estimated employer taxes) for overlapping finalized periods.
Common issues
Can I switch to ADP, QuickBooks, Gusto, or Paychex later?
Payroll integrations are coming soon. When they roll out, store owners will choose a provider on Pay Sheets, map team members, and use Submit and Sync on finalized periods. Super admins can test integrations before general availability.
Pay calculation notes
Payroll tax estimates (by store state)
When you Generate draft or Regenerate draft, OpsBeacon estimates payroll taxes using your store's state from Admin → Store & Billing (city/state on the store profile). If state is missing, a default US estimate is used and a warning appears on the pay sheet.
- Groomers - tips are included in gross pay but excluded from taxable wages (not taxed in the estimate)
- Bather & Retail - tips are taxed like other wages in the estimate
- All roles - commission, hourly, salary, guarantees (when they are the paid base), review bonuses, and manual adjustments count toward taxable wages
Each line shows Est. taxes (employee Social Security, Medicare, and flat state income tax estimate) and Net pay (gross minus employee taxes). Print and CSV exports include taxable wages, employer tax estimates, and employer labor cost (gross pay + employer FICA and state payroll tax estimate).
Tax estimates are not payroll processing
P&L tab - store profit & loss
Builds an estimated store-level profit & loss statement by combining daily KPI revenue with prorated fixed costs and payroll from Pay Sheets. Open Admin → Ops Intelligence, expand Advanced, then select P&L (or use /admin/ops-intelligence?tab=pnl). Owners only - the tab lives under Advanced alongside Capacity and Pay Sheets.
- Revenue - summed from your store's
daily-kpisdocuments (same source as the Performance slide) - Fixed costs - monthly averages prorated across the selected period (week = trailing 7 days; month/quarter/year = calendar boundaries)
- Payroll - prorated from Pay Sheets that overlap the range. When pay sheets include synced ADP, QuickBooks, or Gusto tax actuals, labor cost uses provider employer labor cost (gross wages plus actual employer payroll taxes). Otherwise OpsBeacon uses stored tax estimates or falls back to a capacity-based labor estimate
- Tracked marketing - actual amounts recorded for programs like Google Review bonuses during the period, in addition to your marketing budget line
For accurate payroll in P&L, set your store state, configure team pay on Pay Sheets, regenerate drafts so tax snapshots are current, and finalize periods that overlap your P&L date range.
Plan notes
Custom Slide Builder
Design your own TV slides by dragging widgets onto a canvas.
The Custom Slide Builder lives at /admin/slide-builder. You can open it from Admin → Dashboard / TV Slides → Create Custom Slide, or by clicking Edit on an existing custom slide.


Tiling drag-and-drop layout
The canvas uses a tiling layout - when you drop a widget onto an existing one, the space splits instead of overlapping. Drop near an edge of a widget and a colored preview appears showing how the split will land:
- Drop on the left or right edge to split the target side-by-side
- Drop on the top or bottom edge to stack the widgets vertically
- Drop on an empty canvas and the widget fills the whole slide
Drag the thin dividers between widgets to resize the split ratio. Drag any placed widget by its body to move it into a different split; click the × in the corner to remove it. Click a widget once to select it and open its properties panel on the right.
Three-column layout
- Left column - Widget palette. Every available widget grouped by category. This column scrolls on its own when the list is long, so the canvas and properties panel always stay in view.
- Center - Slide canvas. The 16:9 preview of your slide. Click Preview in the top bar to see the slide rendered live with real data before saving.
- Right column - Widget properties. Configuration for the currently-selected widget. Every widget exposes a schema-driven properties panel, so you get only the options that apply to the widget you picked.
Naming and saving
Widget catalog
Every widget you can drop onto a custom slide, grouped by category.
🎯 Goals
- Goals & Progress - grid of live progress bars for the goals you pick. Configurable: which goals to show, display style (progress bar / traffic light / gauge).
- Single Goal Progress - focus on one goal with a selectable visualization.
📊 KPIs
- KPI Performance Cards - today's big KPI cards with pacing targets.
- Rebook Rate Bar - compact strip showing today's rebook percentage.
- MTD Summary - month-to-date revenue, appointments, and new customers.
🚦 Pulse
- Floor Pulse - traffic-light orbs for the pulses you care about (revenue / appointments / rebook rate).
📈 Trends
- Revenue Trends - revenue over time with forecast; hover any point for the day, date, and amount.
- Day-of-Week Trends - per-day-of-week sparklines.
- 7-Day Forecasted Revenue - next seven days' forecast.
- Revenue by Day of Week - 30-day average revenue broken down by day of the week (bar / pie / sparkline).
📅 Calendar
- Appointment Schedule - today's live schedule from FranPOS, with options to hide cancelled or blocked appointments.
- Next Appointment - a compact card for the next upcoming appointment. Toggle whether to show groomer, pet, and service.
- Appointment Status Mix - pie / bar chart of appointment statuses for today or yesterday.
🏅 Rankings
- Groomer Progress - new. Personal monthly progress report for the logged-in groomer: salon vs you comparison tables, add-on breakdown, and 12-month trends. On My Grooming Dashboard it is always self-scoped; on a TV custom slide it still shows only the signed-in user's numbers when they are linked as a groomer.
- Groomer Rankings (MTD) - the classic full MTD rankings slide.
- Rankings (Custom) - new. Rank groomers by any metric (revenue, appointments, rebooks, rebook %, tips, first-timers, pre-booked %, hours) over any period (today / week / MTD / YTD). Choose leaderboard, bar chart, or pie chart. Some metrics (tips, first-timers, pre-booked %, hours) are MTD-only - the picker tells you so when a non-MTD period is selected.
- Tips Leaderboard (MTD) - dedicated tips ranking.
- First-Timer Tracker (MTD) - total new clients this month or a per-groomer breakdown.
⭐ Reviews
- Google Reviews Board - team leaderboard for Google 5-star mentions. Honors your store-level bonus display and bonus amount per review settings.
- Recent Shout-outs - scrolling snippets of recent 5-star reviews.
- Review Mentions Counter - count of 5-star mentions over a configurable period, with an optional target.
📣 Notices
- Team Notices - the full notices board, with options to show only pinned or cap the count.
- Single Pinned Notice - highlight just the latest pinned notice.
⚙️ Operations
- Walk-in Queue - live walk-in queue depth with traffic-light thresholds.
- Revenue per Grooming Table - new. Total revenue for the selected period divided by your grooming-table count, compared to your daily goal per table. See the Grooming tables settings section for the one-time setup.
- Today vs Target - compact card comparing any KPI against its stored daily target.
🧩 Custom Metrics (generic)
These three widgets can pull any KPI from the system and display it however you want, so you're not limited to the bespoke widgets above.
- Any Metric (Single Value) - any KPI over any period (today / week / MTD / YTD), shown as a number, traffic light, gauge, or progress bar with an optional target.
- Any Metric (Over Time) - any KPI plotted as a time series (line, bar, or sparkline) for the period you pick.
- Metric Breakdown - split any metric by groomer, day of week, or service, rendered as a pie chart, bar chart, or leaderboard.
Visualizations & thresholds
Every widget can be rendered in multiple ways - pick the one that fits your TV best.
When a widget is selected in the Custom Slide Builder, the Display dropdown on the properties panel shows which visualizations it supports. Options include:
- Big Number - single giant number, optionally with a target beneath it
- Traffic Light - green / yellow / red based on configurable thresholds
- Gauge - semicircular gauge with threshold bands
- Progress Bar - a bar filling toward a target
- Bar Chart - vertical bars across a series or breakdown
- Line Chart - time-series line
- Pie Chart - proportional slices for breakdowns
- Sparkline - compact inline time-series
- Leaderboard - ranked list with values
- Default - the widget's original hand-crafted rendering (used for built-in slides on your dashboard)
Period selector
Widgets that support time-range aggregation (Rankings, Grooming Tables, Review Mentions Counter, Any Metric, etc.) also expose a Period dropdown - Today, This Week, Month-to-Date, or Year-to-Date. Historical data imported via onboarding or Data Uploads powers the longer ranges.
Traffic-light & gauge thresholds
Widgets that use a traffic light or gauge (Walk-in Queue, Pulse orbs, and any custom KPI widget with those visualizations) include a threshold editor in the properties panel. Set your green and yellow cutoffs and the direction - Higher is better (revenue, appointments) or Lower is better (walk-in queue depth). Sensible defaults are provided per metric.
MTD-only metrics
Some metrics (tips, first-timers, pre-booked %, and hours) are only reliably available for the current month, because they come from the FranPOS Metrics Report rather than per-appointment data. If you pick one of these and then switch the period to YTD or Weekly, the picker shows a small "select MTD period" hint and greys out the option - switch back to Month-to-Date to enable it again.
Grooming & store hours
One-time setup for grooming widgets, Ops Intelligence capacity, and labor estimates.
Open Admin → Store & Billing, go to the Grooming tab (owner only). Configure three areas:
Table count & revenue goal
- Number of grooming tables - how many grooming stations your store operates.
- Daily revenue goal per table - your target revenue per table per day (for example $300).
The Revenue per Grooming Table widget uses these values to compute period revenue ÷ table count and compare it to daily goal × days in the selected period.
Store hours
Set default open/close times, then configure each day of the week. Use the quick actions to apply defaults to all open days, copy Monday to weekdays, or mark weekends closed. Store hours feed Ops Intelligence → Capacity table-capacity calculations and Morning Briefing capacity snapshots.
Click Save grooming settings when finished.

Marketing hub
Five tools for local outreach and customer retention, all reachable from the Marketing navigation or /marketing.

Customer CRM
Lapsed client queue, outreach history, and campaign engagement
ALFIE Business Intelligence
Ask FranPOS data questions in plain English
Business Prospector
Find nearby referral partners and prospects
Campaign Builder
Design and send email campaigns
Marketing Factory
AI-generated social posts and captions
Marketing tools use a separate Google sign-in from your store login. An active marketing subscription or trial is required for most generation features.
ALFIE Business Intelligence
Ask your FranPOS data questions in plain English - ALFIE picks the right report and returns results.
Open from the nav bar (ALFIE) or /marketing/bi. ALFIE can query FranPOS BI and Public API sources to answer questions like customer counts, appointment metrics, revenue trends, and customer lists.

How to use it
Conversation history is saved per session so you can refine follow-up questions without re-stating context.
Marketing Factory
AI-powered image and caption generator for your social media campaigns.
The Marketing Factory creates professional Instagram-ready images and captions using AI. You provide the creative direction and the AI does the rest.

How to use it
After generating
- Hover over any image and click Download to save it
- Click Copy next to a caption to copy it to your clipboard
- Use the Share buttons to get a shareable link
- All batches are saved to Your Library so you can come back to them later
An active subscription or trial is required to generate content.
Customer CRM
A full customer relationship hub for lapsed and at-risk grooming clients - search, filter, track outreach, and see every Campaign Builder email open and click.
Open from the nav bar (CRM) or /marketing/crm. CRM connects Ops Intelligence follow-up alerts, FranPOS customer data, and Campaign Builder tracking into one place.

Ops Intelligence shortcut
Getting customers into CRM
Search and drill-down filters
Use the search box to find customers by name, email, phone, notes, or campaign subject. Additional filters help you build targeted outreach lists:
- Status - Open, Contacted, Responded, Resolved, or Dismissed
- Segment - Active, lapsed, at-risk, or inactive (based on days since last visit)
- Lapsed only - quick filter for 60+ days since last grooming (lapsed + inactive segments)
- Engagement - Hot, Warm, Light, Scanner, Problem, or Cold (same classification as Campaign Builder tracking)
- Opened / Clicked / Bounced - filter by email behavior (expand More filters)
- Days lapsed range - min/max days since last grooming visit
- Never contacted - customers with no logged outreach yet
- Has email only - hide rows without an email address
- Sort - by days lapsed, name, last contact, opens, clicks, or last visit
The KPI bar at the top updates with your current filters (open count, hot leads, opened, clicked, never contacted, bounced).
List view vs. Pipeline view
- List - full table with contact info, engagement badges, email stats, and quick actions (Email, Log call)
- Pipeline - kanban columns (Open → Contacted → Responded → Resolved) to drag customers through your outreach workflow; change status from each card's dropdown
Customer detail drawer
Click any customer row to open the detail panel with four tabs:
- Overview - visit history, segment, status, and a rolled-up engagement summary
- Campaigns - every Campaign Builder email to this customer, including:
- Send, delivered, opened, clicked, bounced, complained, and unsubscribed status
- Open and click counts with timestamps
- Individual click URLs (which links they clicked)
- Website engagement - page views, video watch progress, demo form submissions
- Hot/Warm/Light engagement classification per send
- Activity - unified timeline merging phone logs, email sends, opens, clicks, bounces, and demo submissions
- Notes - free-form notes saved to the customer record (conversation summary, preferences, follow-up plan)
Outreach actions
How campaign tracking connects
When you email customers from CRM, each recipient is tagged so Campaign Builder and Resend webhooks can update their record automatically. You will see opens, clicks, and bounces on the customer without leaving CRM. Historical sends also appear when the recipient email matches, even if the email was sent before CRM existed.
Engagement classes match Campaign Builder tracking: Hot (demo intent or strong video engagement), Warm (video started or deep watch), Light (website visit), Scanner (email click with no human website activity), Problem (bounce/complaint), and Cold (no meaningful engagement yet).
When customers leave the queue
Campaign Builder
Build and send email campaigns to your customers.
The Campaign Builder lets you design professional emails, upload a list of recipients, and send your campaign - all from one place.

Four-step process
{{name}} to personalize each recipient's email.Business Prospector
Find potential business partners and customers near your store.
The Business Prospector helps you discover nearby businesses that could be great referral partners or customers - like dog daycares, veterinary clinics, pet-friendly apartments, and more.

How to use it
Past searches are saved so you can reload and filter results anytime. Trial accounts can view a limited number of enriched results per search.
Team access
Invite your team and control who has access.
Store owners can invite team members from Admin → Team Access. Here's how it works:

- Enter a team member's email address and choose a role: Staff, Manager, or Owner
- They'll receive login credentials and can sign in at /login
- If someone forgets their password, they can use Forgot password? on the sign-in page - no owner action required
- Staff use My Home, My Grooming Dashboard (linked groomers), or the store TV slideshow; they personalize TV slides via the gear menu when applicable
- Managers get Admin access (except billing changes), Ops Intelligence, marketing tools, and the Executive Dashboard
- Owners have full access including billing, FranPOS credentials, and team management
Linking logins for My Grooming Dashboard
For a groomer to see My Dashboard on My Home and open My Grooming Dashboard, their OpsBeacon login must be linked to the correct payroll team member with role Groomer. Configure team member roles under Admin → Ops Intelligence → Team members, then link the user under Admin → Team Access.
Billing & subscription
Manage your subscription and payment details.
New stores start with a free trial (typically 14 days). During the trial you have full access to the TV Dashboard and all features.
After your trial ends:
- The TV Dashboard will show a prompt to subscribe
- You can still access Admin to set up your subscription
Managing your subscription
In Admin → Store & Billing, use Manage subscription and billing to open /admin/subscription. There you see products and pricing from Stripe, complete checkout for a new subscription, or (once subscribed) open the Stripe Customer Portal to change plans, payment method, and cancellation. Your administrator must enable the same prices in Stripe under Settings → Billing → Customer portal.

Only the store owner can manage billing.
Troubleshooting
I didn't receive my verification email
Check your spam folder. If it's not there, try signing in at /login - you'll see an option to resend the verification email.
I forgot my password
Go to /login and click Forgot password?. Enter your account email and check your inbox for a reset link (expires in about one hour). After setting a new password, sign in again. If you still can't get in, confirm you're using the same email your store owner invited, or ask them to verify your account in Admin → Team Access.
My password reset link expired or doesn't work
Reset links expire after about one hour and can only be used once. Request a fresh link from /forgot-password. If the email never arrives, check spam and confirm you entered the same email address your store owner invited you with.
My TV Dashboard says "Billing blocked"
Your trial has ended or your subscription payment failed. Go to Admin → Store & Billing and open Manage subscription and billing.
The dashboard isn't showing any data
Make sure your FranPOS connection is set up correctly in Admin → Store & Billing → Update FranPOS connection. Then click Sync from FranPOS to pull your latest data.
Marketing Factory says "Subscription required"
You need an active marketing subscription or trial to generate content. Contact your administrator to get access.
I can't invite team members
Only the store owner can invite new team members. If you're staff, ask your store owner to add people from Admin → Team Access.
My custom slide isn't showing on the TV
Open Admin → Dashboard / TV Slides and confirm the toggle next to your custom slide is on. If it's on but you still don't see it, open the TV Dashboard and click the gear icon - staff-level slide preferences override the master list for that device's signed-in user.
A metric is greyed out in the widget properties panel
That metric is MTD-only (tips, first-timers, pre-booked %, or hours) and you have the widget set to a non-MTD period. Change the Period back to Month to Date and the option will become selectable.
Revenue per Grooming Table says "not configured"
The widget needs the store-wide table count and daily goal. Open Admin → Store & Billing → Grooming (owner only) and set both values - see Grooming & store hours.
Ops Intelligence Capacity says "not available yet"
Configure grooming tables and store hours under Admin → Store & Billing → Grooming, assign team member roles on Ops Intelligence → Pay Sheets, and run Sync from FranPOS so scheduled hours and appointments are current.
I don't see My Dashboard on My Home
That button appears only for logins linked to a team member with the Groomer role. Ask your owner or manager to link you in Admin → Team Access and set your role under Ops Intelligence Team members. See My Grooming Dashboard.
My Grooming Dashboard is empty or says nothing is approved
An owner or manager must enable Groomer Mobile Dashboard and check at least one approved widget under Admin → Dashboard / TV Slides.
Groomer Progress shows $0 commission but has revenue and tips
Commission comes from FranPOS when available; otherwise OpsBeacon estimates from MTD booked revenue and the groomer's commission rate in Team members. Confirm FranPOS is connected and the groomer's commission rate is set under Ops Intelligence → Team members.
Pay Sheets show missing groomers or $0 revenue
Check that team member names match FranPOS (use Refresh from FranPOS), confirm the pay period dates cover days with closed-out appointments, and click Regenerate draft after updating rates. Read any Data notes banner on the pay sheet for aggregation warnings.
Pay Sheets show no tax columns or wrong state taxes
Set your store state under Admin → Store & Billing, then click Regenerate draft on the pay period. Tax estimates are computed when the draft is generated - older periods saved before this feature need a regenerate. Groomer tips are intentionally excluded from taxable wages; bather and retail tips are included.
P&L payroll looks too low or uses capacity estimates
Generate and finalize Pay Sheets for dates that overlap your P&L period. If your store uses ADP, QuickBooks, or Gusto, submit and sync tax actuals on those periods. P&L prefers pay sheet employer labor cost (gross + employer taxes) over Capacity scheduled-hour estimates. Configure fixed expenses on the P&L tab if utilities or rent show as zero.
Submit or Sync payroll buttons are missing
Store owners must select the correct Payroll provider on Pay Sheets. Integration buttons appear only for ADP, QuickBooks, or Gusto after a period is finalized. See Payroll provider integrations.
Morning Briefing did not arrive
Confirm Ops Intelligence is enabled, Morning Briefing delivery is on, recipient emails are saved, and the delivery time/timezone are correct. Use Send test email now to verify delivery, then check spam folders.
I cannot open Ops Intelligence
Only owners and managers have access. Staff should use My Home or My Grooming Dashboard (linked groomers), not Admin or the full store TV dashboard. Ask your store owner to upgrade your role in Admin → Team Access.
CRM sync is slow or shows no customers after syncing
Sync pulls from FranPOS BI and may take 1-3 minutes for stores with many lapsed clients. Wait for the green success message. Confirm FranPOS credentials under Admin → Store & Billing. If the list is empty, try setting Status to All - resolved customers are hidden when filtering to Open only.
Campaign opens and clicks are not showing in CRM
Engagement appears when emails were sent through Campaign Builder to the same email address, or when the send was launched from CRM (which links the contact automatically). Open the customer's detail drawer → Campaigns tab. Allow a few minutes after sends for Resend webhooks to update open/click counts.
Ops Intelligence says contact lapsed customers but CRM is empty
Ops Intelligence summarizes counts from appointment history; CRM needs a one-time Sync customers from FranPOS to import the full client list with email and phone. Click Open CRM on the Customer Follow-Up workflow section, then sync.
YTD or weekly ranges on a widget show empty
Longer time ranges rely on historical data being present in Firestore. Use Admin → Data Uploads to import the FranPOS Sales and Appointment reports for the missing dates, or run Sync from FranPOS if your live API credentials are configured. Onboarding handles YTD for new tenants automatically.