Platform & Location Setup

3 articles Brandon Hall By Brandon Hall

How the GroomingOps platform works, and how to stand up a new location.

How GroomingOps Works (Platform Guide)

What this is GroomingOps is the control center for running all of our mobile grooming locations from one place. From here you can see what's happening at every location, handle customer messages and new-customer intake, look up exact prices, and oversee Zoey — the AI assistant that answers the phones. Each franchise runs its day-to-day in MoeGo (their calendar and customer software). GroomingOps sits on top of all of them, so you rarely need to open MoeGo yourself. The pieces Overview — The home screen — live status of every location. Start here each day and make sure the master session is running. Master session — A behind-the-scenes cloud browser that stays logged into MoeGo. It's how the dashboard reads and writes to every location. The Start/Stop control is at the bottom-left of the sidebar — if cards look blank or out of date, check that it says Active. Tracking — A live board of every working groomer across all locations — at a glance, who's on time, who's running behind, and first thing in the morning, whether anyone hasn't shown up yet. Once a van finishes for the day it shows their first stop tomorrow. Expand a row for the last text with that customer and a quick reply. Set Late after up top to tune how late counts as behind. Messages — One inbox for customer texts across every location — read, reply, mark read, and close without logging into each MoeGo. Intake forms — New customers who filled out the booking form. Review each one and process it — that creates their profile in MoeGo and texts them the booking link. Unconfirmed — Upcoming appointments a customer hasn't confirmed yet — confirm them here so the day has fewer surprises, or open one in MoeGo. Quotes — Look up the exact price for any dog at any location (by size, coat, and service). These are the same prices Zoey gives on the phone. Reporting — How Zoey's calls are going — how many got a quote, finished intake, or were handed to a person. Locations — Each location's settings: services, prices, intake form, service area, and Zoey's phone setup. (See Location Onboarding to set up a new one.) Zoey (the voice agent) — The AI that answers a location's phone line. She checks whether the caller is in the service area, gives an exact price, collects new-customer info, and warm-transfers to a real person when someone asks for one — or when it's a complaint, payment, or booking. Chatwoot — A separate app where the human team handles the live conversations Zoey passes along: Facebook Messenger chats and the phone hand-offs she transfers over. Think of Chatwoot as the team's shared inbox for talking to people; the GroomingOps dashboard is where you run the operation. When Zoey transfers a caller, it rings in Chatwoot for whoever's covering. MoeGo — The grooming software each franchise already uses. GroomingOps talks to it through the master session, so you almost never open it directly. How customers reach us - They call the location → it forwards to Zoey, who answers, qualifies, and quotes — and warm-transfers to the team in Chatwoot if a person is needed. - They message on Facebook → the team handles it in Chatwoot. - They fill out the booking form → it shows up under Intake forms in the dashboard → you process it. - An existing customer texts → it shows up under Messages in the dashboard → you reply. Good to know - If the dashboard looks empty or out of date, check that the master session is Active (bottom-left of the sidebar). - You only see the locations assigned to you (admins see all). If one's missing, ask Brandon to add you. - Zoey never makes up a price — if she can't price something, she says the team will follow up. She hands anything sensitive (complaints, payment, health questions) to a person. - On Tracking, a van stuck on Behind long after its appointment time usually just means the groomer never marked that appointment finished in MoeGo — worth a quick check, not a fire drill.

Location Onboarding (New Location Setup)

Before you start Use this when standing up a brand-new location. It begins once the franchise has added service@groomingops.com to their MoeGo account — that's what lets the master session reach them. Two things to keep in mind the whole way through: - The master session must be Active (bottom-left of the sidebar) for any step that talks to MoeGo. If a button is disabled or you're told to start the master session, that is why. - Most of setup is admin-only. If you don't see an option, Brandon does. The steps 1. Add the location. Overview → Add Location. Give it a name and paste the location's MoeGo calendar URL — the form pulls out the IDs automatically. This link is what connects everything. 2. Pull business info. On the location's Setup tab, use Pull from MoeGo. This fills the business name, phone, booking link, and intake-form link in one click. 3. Set quote settings — service fee first. Setup → Quote Settings. Set the per-pet service fee before the next step. Then set the service-area ZIPs on the Edit screen (only the ZIPs you actually serve — Zoey uses these to know who's covered). 4. Check the MoeGo lists, then click Onboard this location. First, in the location's MoeGo: pet sizes must be named Toy, Extra small, Small, Medium, Large, Extra large, Giant, and Customer & Pets → Coat Types must include Short and Long. Then, on the Setup tab, find the Onboard services card and click Onboard this location — one button, not a checklist. It runs a quick preflight check first (sizes, coat types, the service fee, the online-services template) and if anything's missing it tells you exactly what and where to fix it in MoeGo, without starting anything. Once preflight is clean, it runs the whole chain itself: converts the old services to the new format (prices never change), builds the online menu, refreshes the list here, pulls the business profile, and normalizes any pets still on old coat types — all in one pass, and it double-checks its own work at each step rather than assuming it worked. 5. Set up the intake form. Setup → Intake form → Compute plan → review → Apply. This makes the location's form match our standard one. 6. Set up the phone (Zoey + transfers). This part has some technical wiring Brandon handles. You'll get a phone number for the location, decide where Zoey transfers callers (a Chatwoot line the team answers, or one central pool number), and send the number to Brandon to finish connecting it. Then in Setup → Zoey setup, fill in Zoey's number and the transfer number; once every check is green, flip Go live. 7. Connect Facebook (if they use Messenger). In Chatwoot, connect the location's Facebook page so the team can answer Messenger chats. 8. Give the team access. Settings → Team → assign the right people to the location. They see nothing until they're assigned. 9. Go live. Turn on call forwarding from the location's number to Zoey's number — that's the switch that makes her live. Then test: call the number, give a ZIP, ask for a price, then ask for a person and confirm it transfers (have someone in Chatwoot ready to answer). Watch out for - Set the service fee before clicking Onboard this location — preflight now blocks the run and tells you to set it, instead of letting it seed at the wrong price. - Pet sizes named Toy through Giant, coat types include Short and Long — fix these in MoeGo first; preflight checks both and won't start the run until they're right. - "Missing base services" on the card — an online service needs a matching base service (same service, size, and coat) to price from. If one's missing, the card lists it. Add the base service in MoeGo, then click Re-run — it picks up where it left off, it doesn't start over. - Coat normalization happens at the end, automatically — pets on old coat types get fixed as the last step of the run, once the services underneath them are already in place. - Service-area ZIPs are on the Edit screen, not the Add screen. - The master session must be Active for every MoeGo step. - The transfer number must actually ring a real person — make sure someone's covering it.

Location Phone Setup (Twilio / Retell / Chatwoot)

Before you start This is the technical companion to step 6 of Location Onboarding — the actual phone wiring for a location. It spans three tools: Twilio (the phone numbers), Retell (where Zoey runs), and Chatwoot (where the team answers the transfers). You'll need access to all three. One shared Zoey agent and one shared Twilio trunk already serve every location — you're only adding this location's numbers, not building anything new. Twilio, Retell, and Chatwoot logins live in Dashlane — we don't store them in GroomingOps. 1. Buy two numbers in Twilio Buy two local numbers for the location: - Zoey's line — the number callers reach Zoey on. - The transfer line — the number the team answers in Chatwoot when Zoey hands a caller over. Only Zoey's line goes on the trunk (next). The transfer line is wired to Chatwoot instead. 2. Connect Zoey's number (Twilio → Retell) 1. In Twilio, add Zoey's number to the existing groomingops-retell SIP trunk (Trunk → Numbers → add). Don't create a new trunk — every location rides this one. 2. In Retell → Phone Numbers → Connect via SIP trunking: termination URI groomingops-retell.pstn.twilio.com, the trunk's SIP username and password (in Dashlane), Outbound Transport TCP. Set the inbound agent to the shared Zoey agent. 3. Set the number's inbound webhook to the same /api/voice/inbound?token=… URL every location uses — it figures out which location the call is for from the dialed number. Copy it from an existing number, or ask Brandon. 4. Set the allowed inbound countries in Retell so calls aren't rejected. 3. Connect the transfer number (Chatwoot Voice) In Chatwoot, add the transfer number as a Voice channel, using the Twilio Account SID and Auth Token (in Dashlane). That's what makes the transfer ring in Chatwoot for whoever's covering. Do not put this number on the groomingops-retell trunk. That trunk routes to Zoey, so a transfer would loop right back into her — it goes to Chatwoot, not the trunk. 4. Finish in the platform 1. Open the location → Setup → Zoey setup. Enter Zoey's number and the human transfer number. 2. Set the Chatwoot inbox ID: in Chatwoot → Settings → Inboxes, open this location's voice inbox — the ID is the last number in the URL. This makes the caller's pets, quote, and reason pop on the transferred call. 3. Get every check green, then flip Go live. 4. Turn on call forwarding from the location's published number into Zoey's number — that's the switch that puts her live. Then test-call: give a ZIP, ask for a price, then ask for a person and confirm it transfers (have someone in Chatwoot ready). Watch out for - A busy signal on a test call means the number isn't connected in Retell yet — it's on the trunk, but Retell doesn't know it. Finish the Retell SIP step. - No inbound webhook — Zoey answers but doesn't know which location she's on, so she can't transfer. (No busy signal — she just can't hand off.) - The transfer number must route to Chatwoot, not the trunk — on the trunk, a transfer loops back into Zoey. - No Chatwoot inbox ID — the transfer still rings a person, just without the caller-context pop. - Twilio, Retell, and Chatwoot logins are in Dashlane, not in GroomingOps.