Skip to content
All templates
sales

Customer Silence Radar

Spots customers who are drifting away while there is still time to win them back. Most tools use one fixed rule such as "inactive for 90 days"; this flow learns how often each customer normally comes back and flags the ones who have gone quiet for much longer than their own rhythm. A weekly regular who has been gone three weeks is flagged, and so is a quarterly customer who is five months out, while a quarterly customer at week three is left alone. Every Tuesday at 8am Eastern the flow reads your customer activity (visits, purchases or payments) from a Google Sheet, Acuity Scheduling or QuickBooks Online. Each customer is recognized by email (case ignored) and otherwise by name (case, punctuation and spacing ignored); a row without an email joins the customer with the same name who has one. Several events on the same day count as one visit. A customer needs at least 3 visits on different days (you can change this), and their usual gap is the median number of days between visits, so one long break does not hide a regular. A customer is flagged when the days since their last visit are more than both 21 days and 1.5 times their usual gap, and fewer than 365 days (past that they count as lost, not quiet); you can change all three. Flagged customers are ranked by how overdue they are (days quiet divided by their usual gap). For each one, up to 15 per run, the flow first records the customer in the Silence Log tab, then an AI model drafts a short, warm, personal check-in from the facts only (first name, how often they usually come, what they last booked or bought, and how long it has been), with your booking or contact link, or an invitation to just reply when you leave the link blank. The model is told never to offer discounts or deals, never to invent anything and never to use a last name. Each draft waits on the Approvals page; nothing goes to a customer until you approve it, and you can edit it first. A customer already logged for the same last visit is never raised again, and a customer logged in the last 60 days (you can change this) is skipped, so a check-in you sent or rejected is not drafted again next week. When at least one customer is flagged you also get an email digest: how many customers went quiet, the total lifetime value at stake, and a table of each one with their last visit, usual gap, days quiet and lifetime value, most overdue first. Lifetime value and every count are worked out by code, never by an AI model. Privacy: the model sees only the customer's first name, the business name, the usual rhythm in words, the last service or product, the date and the time since; each draft goes only to the customer's own email; replies go to your connected Gmail inbox. Spreadsheet tabs, header in row 1: Silence Log (written by the flow): A logged on, B customer key (email, or name when there is no email), C customer, D last activity, E typical gap days, F days quiet, G lifetime value, H status (the flow writes queued for approval; you can update it). With Google Sheets for activity, also Activity, one row per visit, purchase or payment: A date, B customer name, C customer email, D what (service or product), E amount (rows without a date, or without both a name and an email, are ignored). Setup: create the tabs, connect Google (Sheets and Gmail) and your activity system, and set the business name, owner email, booking or contact link, minimum visits, quiet multiplier, minimum quiet days, lost-after days, cooldown days and maximum check-ins on the setup screen; all but the owner email land in the Settings node, where you can change them later (the owner email is the To field of the digest email node). Save the flow once after importing it to arm the schedule. Limitations: days are calendar days. Lifetime value is the total of the activity the flow reads, not your full history. A flagged customer with no email is listed in the digest but not drafted or logged, so they are listed again each week until they come back or you add an email. Customers past the per-run maximum are drafted in later runs. With Google Sheets, a row dated in the future counts as a booking ahead, so that customer is not flagged, the same as an upcoming Acuity appointment. Acuity: appointments from the last 400 days are read (longer when lost-after days is over 365), up to 5000, plus upcoming appointments for the next 180 days, up to 1000; cancelled appointments are ignored, free ones still count as a visit, a customer with an upcoming appointment counts as already booked and is not flagged, and Acuity appointments carry no customer ID so the email is the key. QuickBooks: payments are the activity, the most recent 1000 payments and up to 1000 customers, since the QuickBooks payment list cannot be filtered by date yet; a customer who pays one invoice a month for weekly work looks monthly; payments name no service, so the drafts mention a last visit in general terms; the customer's email comes from the QuickBooks customer record. Stripe, HubSpot and GoHighLevel are coming soon; Stripe's payment search needs a customer email or thread, so it cannot list every payment yet.

What's inside · 20 steps

  • Schedule
  • PromptTemplate×7
  • GoogleSheetsIntegration×3
  • CombineData
  • CodeSandbox×3
  • Loop
  • LanguageModel
  • ApprovalQueue
  • IfElse
  • GmailIntegration

Use this template

Sign in to open this workflow in the builder, ready to connect your accounts.

Use this template