🎄 Holiday Schedule — manual push, 8 days before each holiday
When a holiday is coming up that affects the route, this lets you notify affected customers. You pick the holiday, preview who gets the message, and manually send. Nothing fires automatically.
Click Refresh to load upcoming holidays.
Affected customers
👥 Customer Intelligence ● LIVE (D1)
Active Subscriptions
—
from D1
New This Year
—
from D1 date_added
One-Time Customers
—
from D1 plan_type
Problem Accounts
—
balance > $0
VIP (3+ Years)
—
date_added before 2023
Signup Sources
—
from D1 signup_source
★ Loyalty:—
📈 2026 Monthly New Customers
⚠ Problem Children — Accounts Needing Attention
📍 Top Service Areas
🎯 How They Found Us
💵 Financials ● Square● QB
⚙
Loading QuickBooks data...
⚠ Showing cached data — QB connection issue
💳 Square Revenue — Live
YTD Gross
--
YTD Net (after fees)
--
MTD Gross
--
MTD Net
--
YTD Transactions
--
YTD Fees
--
⚠ Could not load Square revenue
📈 2026 YTD — QuickBooks P&L
❄ January 2026 — Winter Shutdown (~3 weeks)
Operations suspended ~3 weeks. Jan reflects ~1 active week.
YTD Revenue
--
Net Income
--
Total Expenses
--
Margin
--
📈 YTD Expenses Breakdown — QuickBooks
📈 2025 Full Year — QuickBooks Actuals
Net Income
—
requires 2025 QB P&L query
Revenue
—
requires 2025 QB P&L query
Expenses
—
requires 2025 QB P&L query
Margin
—
requires 2025 QB P&L query
⚙
Loading AR Aging from QuickBooks...
⚠ Could not load AR data from QuickBooks
💰 AR Aging Summary ● Live
📈 Year-over-Year Growth — Customer Signups by Year
—
💳 Square Fee Analysis
—
💳 Square Reconciliation & Refunds
Reconcile Square transactions, issue refunds, export to QuickBooks
Opens in a new tab. Use to search a transaction, issue a refund, or export a date range to QB.
💲 Payment Escalation Rules (Day 0-28 ladder)
Loading…
💲 2026 Pricing Model
★ Annual Prepaid: Pay 12, get 13th FREE · New orders only · Existing grandfathered
⚠ EDITING MODE — Prices are editable. Click the lock to save changes.
Full Pricing Matrix — Per-Cleaning
🎉 Marketing Coupons
Code
Discount
Used
Expires
Status
Actions
Click Refresh to load coupons…
+ New Marketing Coupon
⚡ Automation Control Panel
ALL OFF
👥 Customer Outreach
Emails Sent (30d)
—
requires Brevo analytics sync
Open Rate
—
requires Brevo analytics sync
Click Rate
—
requires Brevo analytics sync
Conversions
—
requires attribution worker
Attributed Revenue
—
requires attribution worker
OT Drip Pool
—
one-timers in sequence
OT Converted
—
OT → recurring (90d)
Proximity Eligible
—
dormant near this week's route
Reactivated MTD
—
brought back this month
📩 OT Conversion Drip — One-Time → RecurringLIVE
Automatically contacts one-time customers at Day 3, Day 21, and Day 80 after their first cleaning with a targeted pitch to convert them to a recurring plan. Runs daily via occ-ot-followup worker.
In Sequence
—
one-timers eligible
Day 3 Sent (30d)
—
initial touchpoint
Day 21 Sent (30d)
—
follow-up
Day 80 Sent (30d)
—
final push
Converted (90d)
—
OT → recurring
Worker: occ-ot-followup — runs daily at 9 AM ET
📍 Proximity Reactivation — “We’ll Be On Your Street”LIVE
Identifies dormant customers near this week’s route and sends a personalized “we’ll be on your street” reactivation email. 90-day throttle prevents duplicate sends. Backend: occ-command-center → nt_lapsed_send.
Enter a ZIP and click Find to preview eligible customers.
⭐ #21 Review RequestOFF
Sends a Google review request 24 hours after service is completed. One request per customer per service date — never duplicates. Worker: occ-ot-followup (daily 9 AM ET).
Requests Sent (30d)
—
review asks delivered
Reviews Earned (30d)
—
requires GBP sync
Open Rate
—
Brevo sync required
Worker: occ-ot-followup — runs daily at 9 AM ET
🤝 #23 Referral OfferOFF
After a customer’s 3rd completed service, automatically sends their unique referral code and explains the referral program. Worker: occ-referral-pitch (daily 10 AM ET).
Codes Sent (30d)
—
offers delivered
Referrals Activated
—
new signups from codes
Revenue from Referrals
—
attribution required
Worker: occ-referral-pitch
💬 #24 Auto Review ResponseOFF
When a new Google review is detected, drafts a personalized response for Howard to approve and post. Keeps OCC’s review engagement high without manual monitoring. Requires Google Business Profile API connection.
Drafts Created (30d)
—
pending approval
Responses Posted (30d)
—
GBP sync required
Avg Rating (90d)
—
GBP sync required
Requires GBP API — not yet wired
🌿 #55 Spring Reactivation — Seasonal 30-Day ReminderOFF
Emails (and/or SMS) seasonal customers a heads-up before their service restarts in spring. Fires once per customer, 30 days before their season resume date.
Channel: email.
Seasonal Customers
—
eligible for reminder
Reminders Sent (90d)
—
from comms_log
Toggle in Automations tab — config saved to D1
✉ EDDM & Growth Engine — New Neighborhood AcquisitionTOOL
Plan, cost, and track Every Door Direct Mail (EDDM) campaigns for new neighborhood acquisition. Enter a target ZIP, household count, and number of mail touches to calculate cost and print-ready specs. Uses LOB for printing and delivery.
Standalone planner — LOB integration
📊 Email Health — Bounce & Suppression Tracking
Live stats from Brevo for the last 30 days. Hard bounces are permanently blocked — those addresses never receive another email. Soft bounces retry automatically.
Hard Bounces
—
blocked permanently
Soft Bounces
—
retry eligible
Unsubscribes (30d)
—
opted out
Spam Reports (30d)
—
flag if rising
Broadcasts Sent (90d)
—
all campaign types
Reactivated (90d)
—
came back after outreach
Avg Open Rate
—
Brevo sync required
Opt-Outs (90d)
—
unsubscribes from broadcasts
📥 Step 1 — Choose Broadcast Type
🎪 Step 2 — Define Your Audience
🚀 Step 3 — Choose Channel & Launch
⚠️ Howard approves every send. Clicking Launch builds a Brevo campaign and sends Howard a test first. No one gets a message until he approves.
📊 Broadcast History
Date
Campaign Type
Channel
Sent
Open Rate
Reactivated
Status
No broadcasts sent yet — launch one above to get started.
Active Agents
—
referral partners
Total Referrals
—
all time
Paid Out
—
rewards issued
Pending
—
awaiting completion
🤝 Referral Agents
Active customers who have received their referral code after their 3rd cleaning. Sent by occ-referral-pitch (daily 10 AM ET). Each agent gets a unique link tracked back to their account.
Loading…
Total Campaigns
10
Apr 25 snapshot
Avg Open Rate
74.7%
7 sent campaigns
Total Delivered
8,173
verified by Brevo
Mix
7 sent / 3 draft
Last synced: Apr 25 2026
📧 Brevo Email Campaigns
✅ Sent (7)
Campaign
Delivered
Open Rate
Sent
Test Email
1
100.0%
Apr 13, 2026
Lapsed Customer Re-engagement
1,247
78.4%
Apr 14, 2026
Spring Cleaning Promo
1,809
71.2%
Apr 15, 2026
Referral Program Launch
1,809
74.9%
Apr 17, 2026
Neighborhood Takeover — May Preview
1,809
76.1%
Apr 20, 2026
Win-Back: 90-Day Dormant
812
68.3%
Apr 22, 2026
April Active Customer Update
686
79.8%
Apr 24, 2026
📝 Drafts (3)
Campaign
Status
May Neighborhood Takeover — North Columbus
DRAFT
Proximity Reactivation — Week of Apr 28
DRAFT
Trashy Jokes #5 — May Edition
DRAFT
📝 Template Library
📝 Email, SMS & Document Templates
Click any template to edit. Changes persist live to D1 and stay in sync with the CRM. Locked items show a yellow banner before save.
📊 Reports & B2B Data Delivery
📚 Report Library
Pre-built templates plus any you've saved. Click Run Now to generate immediately, or use Schedules to deliver on a recurring basis.
Select a report above to run, or use + Custom Report to build one.
👤 B2B Recipients
B2B contacts who receive scheduled report deliveries — apartment managers, property managers, vendor partners, etc.
Loading recipients…
📅 Scheduled Sends
Active recurring deliveries. Each schedule pairs a report with a recipient and a cadence. Pending Approval = first send needs manual approval before going live.
Loading schedules…
📋 Delivery Log
Audit trail of every report ever sent. Filter by status, retry failed deliveries, download archived files.
Loading delivery log…
📊 Live Data
Loading reports…
👥 Customers
🚨
3 customers need a new GD plan created NOW — at or past the 40-day setup window. Send renewal notices within the next 2 weeks.
Bryan Kenny — 34 days left (Q2* PREPAID) · Notice due Apr 28
Tony Knutson — 39 days left (M1* PREPAID) · Notice due May 3
Emily Robinson — 40 days left (M2* PREPAID) · Notice due May 4
Total Prepaid
64
Active customers
Need GD Plan Setup
3
≤40 days to last cleaning
Notice Due
2
≤30 days · send now
GD Plan Set
0
Confirmed in GD
Customer
Plan
Last Cleaning
Days Left
Cleanings Left
Actions
🔧 Settings
Company Information
Company Details
Company Name
Owner
Phone
Email
Address
Website
Logo
📷 Upload Logo
Business Hours
Tax ID
Founded
Payment Processors
Square
Square (Current)
Type: Flat rate
Rate: 2.6% + $0.10
Connected: March 2026
✅ Connected
Helcim
Helcim (Pending)
Type: Cost-plus (interchange + markup)
Rate: Interchange + 0.3% + $0.08
Meeting scheduled — Howard to sign up
⏳ Pending Setup
Stripe
Stripe (Available)
Type: Flat rate
Rate: 2.9% + $0.30
Not Connected
Integrations
🛒
WooCommerce
Site: ohiocleancans.com
Syncs: Orders, customers, coupons
Last Sync: Apr 7, 2026 2:00 AM
✅ Connected
📚
QuickBooks Online
Syncs: Invoices, payments, customers
QB sync queue ready — waiting on Julie for account mapping
1,842 customers imported. Invoice migration: 14,750 of 39,000
37.8%
10
Go Live○ Not Started
Review everything, flip the switch.
Complete all steps above, then click GO LIVE to activate COG.
VENDORS & SUPPLIERS
Name
Category
Contact
Phone
Email
Notes
Actions
Loading…
📣 Marketing
Active Takeovers
—
routes currently armed
Channels Fired (7d)
—
emails + SMS + posts
Signups Attributed (30d)
—
from NT campaigns
Avg CPA
—
per attributed signup
📅 Active Takeovers
Loading…
📋 Past Takeovers
Loading…
🚀 Arm New Neighborhood Takeover
Pick the truck visit date first — COG loads which routes run that day. Choose the route, ZIP, neighborhood name, and how wide to cast the net. Every channel holds for your approval.
🕑 T‑17 → T+14 Full Sequence
Day
Fire Date
Channel
Action
Est. Cost
Status
🔒 Each channel is held in “Pending Approval” until you approve it.
📞 EDDM Track 1 Calculator
Track 1 = new prospect neighborhoods adjacent to dense OCC clusters with similar home values. Never EDDM a ZIP you already serve.
✉ Lob.com Postcard Orders
LOB Environment:—Set LOB_ENV=live on nt-engine to mail real postcards.
⏳ Pending Touches — Approved Activations
Loading…
📝 Order History
Loading…
How this works: When an NT activation is approved, its T‑14 and T‑3 touches become eligible on their mail dates. Clicking Run Order Batch fires postcard_order on the nt-engine worker, which calls the Lob.com API, writes a row to postcard_orders, and marks the touch as ordered. OCC is tenant #1 on nt-engine.
📡 OmniReach — Multi-Channel Campaign Builder
Build a coordinated multi-channel campaign around a truck visit. Toggle channels on/off, pick send mode, and see the live cost estimate before launching.
Channels
Send Mode
📈 Est. Campaign Cost
Total Est.—
EDDM + handwritten use household count from armed ZIP.
📍 Proximity Reactivation — Tracks 2 & 3
Track 2 = lapsed/cancelled (free reactivation). Track 3 = active Q/BM/Seasonal between cleanings (add-on pitch). Zero incremental drive cost.
Loading…
Loading…
📧 “We’ll Be On Your Street” Email
Send a personalized reactivation email to inactive customers in the target ZIP. 90-day throttle prevents duplicate sends.
Enter a ZIP and click Find to preview recipients.
✅ Channel Approval Center
Every armed channel waits here for your one-click approval. Nothing fires automatically. Approve to send, Skip to drop.
Loading…
📅 Daily Route Marketing Rhythm — Next 14 Days
What fires each day based on armed takeovers. Every truck visit ripples T‑14 through T+2 across all channels.
Loading…
🔧 Neighborhood Takeover Platform
🔒 Confirm Takeover Arm
Nothing sends automatically. Each channel sits in “Pending Approval” until you click Send.
📊 Brevo Email Health — Open / Click / Bounce Tracking
Open Rate (30d)
—
Click Rate (30d)
—
Hard Bounces
—
blocked from future sends
Soft Bounces
—
retry eligible
Unsubscribes
—
Spam Complaints
—
Click Refresh to load delivery health data.
Campaign Engine
🚀 New Campaign
Select a segment to see estimated recipients.
📧 Active Campaigns
📅 Scheduled
📝 Past Campaigns
📄 Template Library
Every customer-facing template, grouped by channel. Locked templates cannot be edited without Howard's approval. See the Templates tab for full edit access.
Edit Template
Template Name
Category
Subject (email/broadcast)
Trigger / Description
Template Body
Locked template. Editing will override Howard's locked content. Save will use force_unlock=true.