Good morning, Ken
Today's to-do list everything that needs an action today · across every customer · grouped by job
Recent QOPI chains Quote → Order → PO → Bill → Invoice · click to drill into full chain history
Today's priority queue
At a glance
📎 Files & Attachments
Loading…
Type
Customer
Project
Shipping
People on this order
Terms
Files & attachments
Notes & instructions
💡 Context help
💬 Cliq
#—
Pick a channel from the list to see live messages.
Smart Triggers
Smart Triggers — customers flagged for outreach today
—
Recent activity
—Orders & Quotes unified — every quote, order, invoice and PO for this customer, with status + next action
Communications log every email, call, text related to this customer
Payments
Internal notes placeholder
Files & attachments placeholder
Account snapshot —
Account contact info
People at this customer
Suggested templates based on segment
Pipeline
Contacts
| Company | Segment | Last order | TTM Revenue | YoY | Lifetime orders | Triggers | Actions |
|---|---|---|---|---|---|---|---|
| Loading customers… | |||||||
Companies
| Company | Segment | Lifetime $ | TTM $ | Orders | Last activity | Status |
|---|
Legacy Quote Builder use Workspace instead
Cart
0Orders & Invoices
QOPI chains Quote → Order → PO → Bill → Invoice — full audit trail per chain
Zoho Books invoices (legacy)
| Invoice # | Customer / Logo | Date | Status | Total | Balance | Salesperson | Days | Action |
|---|---|---|---|---|---|---|---|---|
| Loading invoices… | ||||||||
Approvals
Pending customer approvals
draft or sent + unviewed — staff needs to send proof or nudge customer| Invoice # | Customer | Logo / Team | Total | Sent | Days waiting | Actions |
|---|
Approval workflow
The combined approval flow (full build when proof_manager.php is wired):
- Staff finalizes the order in Mission Control — quote becomes order, gets a number from the sequence
- Artwork attached (front + back proof) via reorder_attachments or upload
- Customer receives a single email with order summary, artwork, costs, ship date — single magic link, no login
- Customer clicks one button: Approve (locks order to vendor) or Request Changes (returns to staff)
- If approved → auto-generates PO with the same order number, kicks off Vendor PO acknowledgment workflow
- If changes → message comes back into Mission Control's customer thread, staff iterates art
Reminder cadence after send: 24h / 72h / 5d if no open. Auto-escalates to staff after 5d.
Vendors & Purchase Orders
products.json · PO data is illustrative until books_purchase_orders proxy action is wiredVendors
Active Purchase Orders illustrative
| PO # | Vendor | Customer Order | Value | Status | Sent | Est ship | Actions |
|---|---|---|---|---|---|---|---|
| R26-200001-PO | HEALONG · Vietnam | Lakeside HS Football | $1,890 | Acked | 2d ago | Jun 1 | |
| R26-200002-PO | IMPRESOS VELAZQUEZ · Mexico | Special Olympics SC | $4,882 | In production | 5d ago | May 28 | |
| R26-200003-PO | FANCY TERRY · USA | Quality Sports Ltd. | $3,420 | Sent · awaiting ack | 4d ago | — | |
| R26-199998-PO | HEALONG · Vietnam | FUJI & Hatashita | $986 | Shipped | 2 wks ago | delivered |
Bills & Freight
Three-way match example illustrative · workflow preview
① PO sent to vendor
② Supplier bill
③ Freight invoice (XPO)
Duplicate freight detection illustrative
Production
In production by vendor illustrative
Order Numbering
R26-XXXXXX (R=Revo, 26=year, 6-digit sequence).How numbering works
Sequence: One counter per prefix, incremented atomically when a number is reserved. Starting buffer: R26-200000 (above any Zoho-issued numbers to prevent collision while running both systems in parallel).
When a number is assigned: at the "Send quote" or "Convert to order" step. Before that, the order is just a draft.
Lifecycle: Quote → Order → PO to vendor → Invoice (when pushed to Zoho with this pre-assigned number, overriding Zoho's auto-numbering).
Year rollover: automatic on Jan 1 — prefix advances (R26 → R27) and counter resets to 200001. Old-year numbers remain valid forever.
Reserved-but-unused numbers: normal. If a quote is abandoned, the number is "spent." Gaps in the sequence are expected.
Reservation log —
Server-side state file
data/order_sequence.json. The PHP endpoint misctl_next_number.php handles atomic file-locked reads/writes.To bootstrap on the live server: upload
misctl_next_number.php; the state file will auto-create on first call. To override the starting number, manually create data/order_sequence.json with {"R26":{"next":200001,"issued":0}}.
📣 Campaign Manager
All campaigns
📨 Email Templates
🔧 Zoho Diagnostics
Results
Click "Run probes" to start.If anything failed: regenerate the refresh token
- Open api-console.zoho.com in a new tab (sign in as Revo).
- Click into your existing Self Client (or Add Client → Self Client).
- Click the Generate Code tab.
- Paste the full scope string from below into the "Scope" field.
- Set Time Duration: 10 min and Scope Description: "Mission Control".
- Click Create. Copy the 10-char Code.
- Open a terminal in the Claude Code project root and run:
python zoho_setup.pyPaste the three values (Client ID, Client Secret, Code) when prompted. It rewrites
config/zoho_config.phpwith the new refresh_token. - FTP the updated
config/zoho_config.phpto revosg.com. - Come back here and click Run probes again — everything should be green.