Inbound Loop — Current vs. Target

Outdoor Vibes CX-survey · how responses & replies are handled today vs. with n8n orchestration · 2026-06-10

Workflow A: buildingB + C: sketchedGate before VIP send
0%
Automated today
all 4 inbound channels manual
days
Hot-lead latency now
target: minutes
4
Inbound channels
survey · reply · STOP · click
1 / 3
Workflows started
A building · B, C sketched
The risk for the paid-180 / VIP send: the outbound email is polished and compliant, but the inbound loop is 0% built. Right now a top customer who answers "Yes, I'd love a free quote" lands silently in Fillout with no alert and no routing — a $20K-relationship hot lead can sit for days. Don't send to VIPs until at least Workflow A (response routing) is live.

Current state — how it works RIGHT NOW

100% manual
survey response  →  Fillout dashboard  →  [no alert · no routing · nobody notified]  →  someone happens to check
email reply  →  jack@trimlightphoenix.com inbox  →  [manual read]
"STOP" reply  →  same inbox  →  [hand-add jobber_id to EXCLUDE_JOBBER_IDS]
open / click  →  Resend dashboard  →  [no notification · viewed only if someone logs in]

Current vs. Target — by inbound event

Inbound eventToday (manual)Target (n8n)Status
Survey: "Yes, free quote" (HOT) sits in Fillout, no alert Quo upsert + auto-SMS from Jack + team notification + Jobber tag + logWorkflow A
Survey: "Maybe" (WARM) no follow-up Quo + Day-3 follow-up queued + logWorkflow A
Survey: "Not for me" / all unlogged logged to Sheet/DBWorkflow A
Email reply (interested) manual inbox read Jack monitors; future: parse → routemanual
"STOP" / unsubscribe hand-edit EXCLUDE list suppression workflow → list → mailer excludeWorkflow B (sketched)
Open / click dashboard only Resend webhook → engagement DB → VIP non-clicker nudgeWorkflow C (sketched)

Target flow — Workflow A (response routing)

building now
Fillout webhook → parse/normalize → dedupe → Switch on Q2 → { HOT · WARM · COLD }
HOT — "Yes, free quote"
Quo contact upsert → auto-SMS from Jack → team notification → Jobber tag palm-tree-interest → log
WARM — "Maybe"
Quo upsert → queue Day-3 follow-up → Jobber tag cross-sell-interest → log
COLD / all responses
log to Google Sheet (response store)

Build status — 3 workflows

A — Response routingBuilding
Authored + validated; deploy pending creds/decisions. Mostly a re-wire of the existing facebook-leads-openphone reference workflow.
B — STOP / suppressionSketched
Gmail-trigger watches STOP replies → suppression store → mailer dataSource.exclude reads it. Closes the manual gap.
C — Non-clicker follow-upSketched
Resend open/click webhook → engagement DB → scheduled VIP/Standard non-clicker nudge via Quo SMS.

Blocking decisions before deploy

4 open
Jobber API credential — none exists (GraphQL OAuth2). Blocks auto-tagging; degrade to "log needs-tag" until resolved.
Quo credential brand confirmation — existing cred is named "Quo - AZ Palm Tree Lights" on the shared number. Confirm it's right for these Trimlight-sourced contacts (resolver grabs first httpHeaderAuth by default — brand-separation hygiene risk).
Fillout → webhook wiring — point form uwK2aXF6QUus submissions at the n8n webhook URL.
Suppression store — Google Sheet (manual export) vs Neon/Postgres (live SELECT from the mailer's exclude). Drives how clean the closed loop is.