RealGreen AMA & Post-Service Audit

Lawn Doctor group 934 — Service Assistant tenant 762196

Prepared for Bryan Sallmen, Owner Audit date 18 Sep 2026 Platform Service Assistant 5.3.377.790 Method Read-only inspection

This is a review of everything Lawn Doctor has configured to go out to customers automatically from RealGreen: estimate follow-up (AMA), before/after-service notifications, invoices, statements and the collections ladder. Nothing was changed. Customer names and email addresses are partially masked.

Headline finding

The automated customer communications are being generated but not delivered. RealGreen is creating after-service emails on schedule — they appear in each customer's Letters history — but they never reach an inbox. Across the two accounts sampled, 14 after-service emails were generated and 0 were delivered. Customer Notification History is empty on every record checked.

01At a glance

0
After-service emails actually delivered
out of 14 generated, 2 accounts sampled
3
Comms modules disabled
Customer Notifications, Comm Center, Forms
3
AMA rules configured in total
three estimate statuses, nothing else
131
Letter templates in the library
the large majority unused

Scope note

This tenant is a five-branch group: 1316, 1547, 1722, 1868 and 1996. Kalamazoo is branch 1316, but almost every setting below is marked All Branches, so changes affect all five locations.

02The delivery gap

The SS_After Service Email template is the most frequently triggered item in the system. It fires after each service visit and is written into the customer's Letters history. It does not appear in Email History, which is the record of what was actually transmitted.

After-service emails generated Emails actually delivered (all types)
Mark R. — account #119306 — 2026 season
9 made
2 sent
Angela C. — account #117783 — Nov 2025 to Sep 2026
5 made
4 sent
0369 emails

The orange bars are every email either customer has ever received — receipts and prepay letters. None of them is an after-service email. The true after-service delivered count is zero in both cases.

View as table
Account Letters on file After-service generated Emails delivered After-service delivered Notification history
#119306 (Mark R.)12920empty
#117783 (Angela C.)18540empty

What this looks like on the record

Account #119306 has nine SS_After Service Email entries dated 21 Apr, 22 Apr, 30 May, 2 Jun, 15 Jun, 16 Jul, 28 Jul, 20 Aug and 16 Sep 2026 — each stamped Printed By: Bryan Sallmen "Owner". Email History for the same customer contains two rows, both dated 13 Apr 2026, sent from group934@lawndoctor.com. Customer Notification History reads No data.

03Root cause

Module availability in the tenant navigation
ModuleStateWhat it controls
Customer NotificationsDisabled & hiddenTurns before/after-service, invoice and payment-reminder letters into real sends
Communication CenterDisabled & hiddenCampaign and sequence delivery
FormsDisabled & hiddenForm tracking and capture
Owner mailbox connectionNot connectedAccount Settings shows an unconsented "Connect Your Email Account" prompt
Company SMTPConfiguredMicrosoft 365 OAuth, smtp.office365.com:587

The transport is configured at company level, but delivery depends on a per-user Microsoft 365 consent that has lapsed — the dashboard shows a standing "Please re-authenticate your email… Your email connection has expired or either invalid" banner. With the notification module switched off on top of that, generated letters have nowhere to go.

Security item

The Microsoft OAuth Secret Key is rendered in plain text in an unmasked field on Settings → Company General Setup, visible to anyone with settings access. Worth rotating and reviewing who holds that permission level.

04AMA — estimate follow-up

The entire automatic AMA configuration is three dropdowns on Settings → General Setup – Documents/Letters.

Automated Marketing Letter mapping, by estimate status
#Estimate statusLetter assignedAssessment
2Gave Estimate – SeeSS_Estimate No ContactDuplicate of #3
3Gave Estimate – No SeeSS_Estimate No ContactDuplicate of #2
4Pitched – Not SoldSS_UpsellEmail_MosquitoWrong audience
Estimate Requestednothing assignedGap
Estimate Printednothing assignedGap

Why status 4 matters most

Someone who received a lawn-care quote and did not buy is the highest-intent audience in the database. They currently receive a mosquito-control email built around Zika and West Nile virus — and because all four offer lines on that template are blank, it carries no offer and no discount. Statuses 2 and 3 meanwhile share one template, despite describing opposite situations: one is a customer you spoke to, the other is one you never reached.

05Post-service & pre-service copy

Separate from the delivery problem, the content of the service-cycle templates is working against itself.

Service-cycle templates, as configured
TemplateOffer carriedProblem
SS_After Service Email none Body is only a continuous-service disclaimer. No review ask, no NPS link, no summary of work done, no upsell. The highest-engagement moment of the season says nothing.
SS_Before Service Email Come Back and SAVE 50% Off One Service A win-back offer on a pre-service notice to an active customer already on the schedule.
SS_NonService Email Come Back and SAVE 50% Off One Service Rain-out apology carrying the same win-back discount. Apologises to an active customer and hands them 50% off.

"For your convenience, service continues from season to season. For a change in service, please call our office."
— the complete body of SS_After Service Email

Pre-notify is armed but firing blanks

06Invoices & statements

Selected invoice and statement settings
SettingValueNote
Invoice Days Until DueEmptyNo payment terms stated on invoices
Statement Days Until DueEmptyNo payment terms stated on statements
Print Overdue MessageOnChasing a due date that was never set
NPS on invoicesOn 
Print Service Feedback on statementsOffInconsistent with invoice settings
Invoice Printing default year2025Estimate Printing defaults to 2026 — verify before the next run
Residential invoice suppressionbalance older than 45 daysunless owed ≤ $29.00
Commercial invoice suppressionbalance older than 90 daysunless owed ≤ $100.00
Interest / statement fee1.50% per month / $0.00min interest $1.00

Invoice options switched on: service feedback on reprints, logo, URL, name, phone, address, remit barcode, credit card panel, overdue message, driver initials, payment request message, continuous service message, "please have technician call me", assign to technician, NPS, print email. Switched off: property dimensions, customer signature, hide payments, no reverse print.

07Collections ladder

The aging buckets and the collection letter set line up correctly. The copy is genuinely good. Nothing runs it automatically.

Aging buckets and matching letters
BucketLetterResidentialCommercial
15 daysCollection Letter 16-30FlaggedNot flagged
30 daysCollection Letter 31-45FlaggedNot flagged
45 daysCollection Letter 46-60FlaggedNot flagged
60 daysCollection Letter 61-90FlaggedFlagged
90 daysCollection Letter 91-120FlaggedFlagged
120 daysCollection Letter Over 120FlaggedFlagged

Commercial accounts receive no collection action until 60 days past due — the first three buckets are unflagged for commercial while residential is flagged on all six. The ladder is driven by the manual Letters and Statements wizards, not by a schedule. There are 64 collection codes on file, essentially all stock TSI/APR agency codes, with Available unticked throughout.

08Unused inventory

The library holds 131 templates. Complete sequences sit fully written and entirely unwired, because the module that would send them is off:

Housekeeping also present: COVID-19 AMA newsletters still live in the library, a template named simply f, and a template named Cancel assigned to No Branches.

09What is working

Denaro SMS is the only post-service follow-up currently landing

While RealGreen generated nine undelivered after-service emails to account #119306, the Denaro text message reached him. Both sampled accounts show recent Denaro-sourced contact in their call logs.

"Hi Mark, thanks for choosing Lawn Doctor. How did your service go recently? We would love to hear how everything looks."
— call log, account #119306, 17 Sep 2026

"Thanks so much for your purchase, Angela! You are all set. If you want to change or adjust anything about your order, please feel free to call Lawn Doctor."
— call log, account #117783, 16 Sep 2026

10Recommended order of work

  1. Reconnect the Microsoft 365 mailbox. Nothing else on this list matters until mail can leave the building. Account Settings → Email Settings → Connect.
  2. Enable Customer Notifications. This is the switch that turns generated letters into sends, and it unlocks the payment-reminder, renewal and card-expiry sequences already written.
  3. Repoint "Pitched – Not Sold" off the mosquito template and onto a lawn-care follow-up carrying a real offer.
  4. Strip the win-back offer off SS_Before Service Email and SS_NonService Email. Active customers should not be handed 50% off.
  5. Rewrite SS_After Service Email to do a job: what was done today, what to expect, and a review ask.
  6. Set Days Until Due on invoices and statements so the overdue message and collections ladder have a date to work from.
  7. Differentiate estimate statuses 2 and 3 and add coverage for Estimate Requested.
  8. Flag commercial aging on the 15, 30 and 45-day buckets to match residential.
  9. Rotate the exposed OAuth secret and review settings-level access.
  10. Verify the Invoice Printing year before the next batch run.

11Summary — every trigger currently firing

A consolidated list of what actually causes a letter to be produced today. Every item below generates a letter record against the customer; none of them currently results in a delivered email.

Confirmed firing automatically observed on customer records

Configured to fire, not seen in the sample mapping exists

These three are the complete AMA configuration. Neither sampled customer had reached one of these estimate statuses, so the mapping was read from Settings rather than observed in a letter history.

Not triggers — operator-run batches manual

The qualifier that applies to all of the above

Every trigger listed here produces a letter. With Customer Notifications disabled and the owner mailbox disconnected, none of them produces a sent email. The only messages reaching customers today are receipts, prepay letters, and Denaro's SMS.