Work-order texts: who AppFolio tells, who Clara tells

Handoff to Smith for the "stop duplicate work-order created texts" change. Read from AppFolio's own logs at Western Slope, Oct 27–28.

2026-10-28 · Western Slope + Situs · Handoff — Fede asked for it · from session 004

AppFolio texts a resident only when the resident submitted the request through the portal. A work order typed in on the manager side, by staff or by Clara, triggers nothing from AppFolio: no text to the resident, no text or email to the office. So the fix must skip Clara's "work order created" text only for portal submissions, not for every work order that comes from AppFolio.

What AppFolio does, by how the work order was entered
Entered howAppFolio texts residentAppFolio texts/emails office primary contactClara's text todayResult
Resident, online portal (Maintenance Performer)yes "Your maintenance request has been submitted. Your maintenance request number is #6137-1 …" from "System"yes "WO #6137-1 - NORMAL - …" to Ryan Dyer"Work order created" on syncduplicate
Staff, manager-side form (Jonathan)nono"Work order created" on synconly notice the resident gets
Clara, manager-side form (from a call)nono"Your work order number is N" (held when Supervised)nothing if the hold lapses
The evidence: seven Western Slope work orders, Oct 27–28
WOResidentEntered byAppFolio Actions Log on creationResident's AppFolio text logClara
6137Jennifer B.resident, portal, 6:01 PM Oct 27"Submitted online using Maintenance Performer"; text + email to primary contact Ryan Dyer, by SystemSystem text 6:01 PM Oct 27: "Your maintenance request has been submitted … #6137-1""Work order created" text (the duplicate)
6136Shari L.Clara, 5:14 PM Oct 27"Created – Clara Propflow". Vendor assigned by a person 8:06 AM Oct 28; AppFolio texted and emailed the vendor thennothing since Oct 23"Your work order number is 6136" held since 5:14 PM Oct 27, lapses 24 h later
6138Nancy V.Jonathan, 8:13 AM Oct 28"Created – Jonathan Balding", nothing elsenothing in October (her July and August portal requests did get System texts)"Work order COUR-6138 created", 8:16 AM, auto-approved
6139Laura M.Jonathan, 8:13 AM"Created", nothing elsenothing"Work order MORS-6139 created", 8:16 AM
6140Jennifer Z.Jonathan, 8:16 AM"Created", nothing elsenothing"Work order COUR-6140 created", 8:22 AM
6141(no unit)Ryan, 8:36 AM"Created"; assignment email Ryan sent himselfn/anone
6134vacantJonathan, Oct 27"Created", "Assigned", "Scheduled", no noticesn/anone

Read with GET-only page loads on the robot's warm session (no login, no clicks). Work-order pages: Actions Log, Emails and Texts sections. Tenant pages: the Texts block, which is where AppFolio's "System" resident texts show up; they do not appear on the work-order page.

What to change in the fix

As planned

Skip Clara's "work order created" text for every work order whose source is AppFolio.

Breaks: Nancy and Jennifer Z. today would have heard nothing. Staff enter work orders by hand all day.

Proposed

Skip it only when AppFolio's Actions Log for that work order says "Submitted online using Maintenance Performer" (or the resident-portal equivalent). Every other AppFolio work order keeps Clara's text, because nothing else tells the resident.

The sync already reads the work-order page; the Actions Log line is on it. Normalise it at the sync boundary into our own field (e.g. submittedByResident: true), never an AppFolio string in core code.

Still open, Fede's calls
Context
PropFlow Docs