Skip to content

Messaging & review drip

  • Every outgoing text goes through one outbox — messages are queued, sent by a background worker, and idempotent: an automated step can never double-send.
  • The active SMS provider is chosen at runtime in Admin → Integrations & API Keys:
    • Quo / OpenPhone — primary. Their inbox is deep-linked from jobs (the “Call” button).
    • Podium — sends from the Podium location’s own number (also used by the website lead flow).
    • RingCentral — available as an alternative.
  • Inbound texts land in Operations → Incoming Texts.
  • Outgoing texts can be paused globally; outside production everything logs instead of sending — so tests never text real customers.
  • STOP: if a customer texts STOP (or is manually opted out), their live review drips are canceled and unsent messages are dropped automatically.

Every automated text is editable under Message Templates — reminders, payment requests (Zelle/Venmo), review drip, receipt, warranty visit. Templates use merge variables like {first_name}, {google_review_url}, {amount_paid}. Templates that require a variable refuse to queue until it’s available (e.g. review asks won’t send until the entity’s Google review URL is set under Admin → Entities).

Started by the 👍 answer to “How did the job go?” when recording payment. State machine, managed on Operations → Reviews (the nav badge = drips waiting on a call):

flowchart TD
PAY[Payment recorded + thumbs up] --> T1[Text 1: review request — sent now]
T1 --> T2[Text 2: follow-up — next day, 10:00 AM]
T2 --> CALL{Manual step: call the customer<br/>then Log call on the Reviews page}
CALL -- Voicemail --> T3[Voicemail follow-up text — sent now]
CALL -- Connected --> CHOICE{Send after-call text?}
CHOICE -- Yes --> T4[After-call text]
CHOICE -- Not interested --> END1[Drip canceled]
T3 --> T5[Final text — 7 days later]
T4 --> T5
T5 --> END2[Drip completed]
ANY[Customer leaves a review<br/>at any point] --> TY[Mark Review left →<br/>thank-you text, drip ends]
  • Log call (after text 2): choose voicemail (fires the voicemail text) or connected (choose after-call text or “not interested”).
  • Review left: any time you spot a new review from a customer, mark it — sends the thank-you text and ends their drip.
  • Pause / Resume / Cancel per customer as needed.
  • 👎 jobs are kept on record but never text the customer.

On-request only. A paid job’s actions menu → Send receipt → preview → texts the receipt template with the amount, method, and date. Repeatable if the customer asks again.