Skip to main content

Comms Cockpit

The Comms Cockpit is the single control surface for everything your business sends via email. It combines two distinct editors in one page:
  • Email Template editor — build and edit the email bodies (subject, body, variable tokens, links) that the workflow engine sends
  • Workflow Step editor — wire each template to a trigger event with a send offset, recipients, and conditional rules
This article is the UI reference. For the conceptual model behind triggers, offsets, and templates, see Communications & Workflow.

When you use it

  • First-week setup — build out your standard email templates (booking confirmation, contract reminder, report delivery, agent summary, etc.) and wire each to a trigger
  • Rare adjustments — change a subject line, swap a template, retime a reminder
  • Per-service customization — add a service-type-specific step (e.g. 11-month warranty reminder for New Construction)
  • A/B testing copy — duplicate a template, tweak it, swap the wiring
Most operators rarely visit Comms Cockpit after initial setup. The workflow engine handles delivery for every order automatically once configured.

Screen layout

[SCREENSHOT: comms-cockpit-screen.png — desktop, the Comms Cockpit with a top section for editing an email template (Name, Trigger, Subject, Body) and a bottom section for editing workflow steps (Trigger, Offset, Recipients, Template).] The page is split into two stacked editors:
  1. Email Template editor (top half) — for the email body itself
  2. Workflow Step editor (bottom half) — for wiring a template to a trigger
A sidebar (typically left) lists existing templates and existing workflow steps. Click a row to load it into the relevant editor.

Email Template editor

The top editor builds the email itself. Every field your customer sees in their inbox starts here.

Template fields

Variable tokens

Tokens are placeholders replaced with real inspection data at send time. The same tokens work in subject lines, body text, and contracts: Client tokens: $ClientFirstName $ClientLastName $ClientNames $Client2FirstName Property & inspection: $InspectionAddress $InspectionDate $InspectionTime Inspector & company: $InspectorName $InspectorLicense $CompanyName $CompanyLogo Fees: $InspectionFee $BaseFee $ServiceFee $InspectionFeeTable Links: $ContractLink — client signing portal $ReportLink — client report download $AgentReportLink — agent-only report view $PortalLink — realtor portal magic link Payment handles: $VenmoHandle $ZelleContact $CashAppHandle See Communications → Template Variables for the complete list and edge cases. The body editor has an Insert Hyperlink toolbar action that opens a small modal: The hint explains: “You can use a VariabletokenastheURL(e.g.Variable token as the URL (e.g. ReportLink).” This is the recommended way to add report-link buttons — the link resolves per-recipient at send time, so the client sees their full report link and the agent sees the agent-only view. The dialog has Cancel (no change) and Apply (commits the link) buttons.

Workflow Step editor

The bottom editor wires a template to a trigger event. Each row in the workflow steps list is one step; the engine fires every enabled step that matches a trigger.

Step fields

Trigger

Tip from the UI: “Add two steps for this trigger — one for Primary Client using $ReportLink, and one for agents using $AgentReportLink. Each recipient gets the correct scoped link.” This is the canonical pattern for report delivery.

Timing

Recipients

Scoping

Conditional examples

The conditional field accepts simple expressions:
  • contractSignedAt == null — only if the contract is unsigned
  • paymentStatus == 'paid' — only after payment received
  • assignedInspectorName != null — only if an inspector is assigned

Actions — what the step does


Order of operations

When a trigger fires for an order:
  1. The engine looks up every enabled step matching the trigger AND the order’s service types
  2. Steps are sorted by their offset (most-negative first, then chronologically)
  3. For each step:
    • The conditional is evaluated against the order
    • If the conditional passes (or is empty), the step is scheduled
  4. Send actions are enqueued; status-advance and retime actions execute synchronously
You can preview the calculated firing schedule by selecting an order and using Preview Workflow Steps (a debug action available to owners).

Templates list

Each template appears as a row showing its Template Name and a count of which workflow steps reference it (e.g. “Booking Confirmation · 2 steps”). Actions on each row:
  • Click to load into editor
  • 📋 Duplicate
  • 🗑 Delete (only if no workflow step references it)

Workflow Steps list

Each workflow step row shows:
  • Trigger name
  • Offset (e.g. +2h)
  • Template name
  • Recipient count
  • An on/off toggle (disable a step without deleting it)
Disabled steps remain in Firestore but the engine skips them.

A typical day-1 setup

Build templates first, then wire steps. Recommended starting set: For New Construction, add a single step:
  • 11-Month Warranty | inspection.completed | +11mo | Client | Service: New Construction Final
This inherits every other step from the base workflow.

Errors and recovery


What this page does NOT do

  • It does not send test emails. Use the per-order Communications tab on Inspection Details for one-off sends and previews.
  • It does not show delivery analytics. Open-rate / click-rate / bounce data lives in your email-service-provider’s dashboard (or in future enhancements to the Reports module).
  • It does not manage contracts. Contracts are separate — see Contracts Cockpit.
  • It does not send SMS or push. Email only.