How to Triage elevator complaints and manage tickets: The Complete Setup and Troubleshooting Guide
A practical, step-by-step guide to triaging elevator complaints, assigning technicians, and keeping tickets, service logs and inventory in sync with n8n, Google Sheets and Gemini — cut through the manual work and eliminate missed responses and inventory surprises…

Triage elevator complaints and manage tickets with Google Sheets and Gemini: n8n automation use case
Elevator complaints should be a predictable operational flow: someone reports a problem, a technician is dispatched, the issue is fixed and records are updated. In practice, intake is messy, priority is subjective, technicians are spread across territories, and parts inventories are out of date — which means safety and SLAs suffer.
This guide explains a proven n8n workflow pattern that ingests complaint webhooks, uses Google Gemini to triage severity and required skill level (P1–P3), assigns technicians from a Sheets roster, appends tickets and logs, extracts structured post-repair data, and keeps inventory reconciled. It's written for operators and automation owners who need a reliable, auditable process.
*See a related use-case for automating visual workflow previews (reference)*
Understanding the triage workflow
At its core the automation maps three responsibilities: intake and context, intelligent triage, and stateful recording. The LLM (Gemini) provides classification and extraction, while Google Sheets acts as the canonical system of record; n8n orchestrates the logic and notifications.
Webhook intake: receives complaint or technician report payloads (elevatorid, complainttext or ticket_id, notes).
Context enrichment: read elevator specs, recent service logs and parts/catalog rows from Google Sheets.
AI triage & extraction: Gemini classifies severity (`P1`, `P2` or `P3`), required skill and a technician-ready summary; post-repair notes are parsed into root cause, parts used and machine health score.
Prepare your environment and prerequisites
You can run this on cloud or self-hosted n8n. Prepare Google service account credentials and a single spreadsheet with tabs: Elevators, Technicians, Tickets, ServiceLogs, InventoryParts. Decide whether to use WhatsApp Business Cloud for dispatch or an SMS gateway.
Cloud n8n: easiest onboarding; ensure webhook endpoints are reachable.
Self-hosted n8n: make sure public webhooks (or a reverse proxy) expose the two webhook paths.
Gemini/PaLM: create API credential and restrict to the triage and extraction steps; set model to `gemini-3.1-flash-lite` for cost/latency balance.
`Common pitfall: missing or mis-typed elevatorid leads to `Unknown elevatorid` errors in the code step; ensure the intake payload contains exact string field `elevator_id`.`
Configure n8n and Google Sheets
Create Google Service Account: in GCP, download JSON key, share the target Sheets file with the service account email and add credential in n8n (select 'serviceAccount' auth).
Import the workflow JSON: use n8n → Workflows → Import from file and attach credentials when prompted.
Verify Sheets tabs and column names: elevationid/elevatorid, technicianid, ticketid, part_sku columns must match exactly as used in mapping steps.
Test webhooks locally: use a test POST to the complaint webhook with sample payload {"elevatorid":"E-100","complainttext":"Doors not closing"}.

Set up Gemini and dispatch channels
Add Gemini credentials: create an API key and add it to n8n's Google PaLM credential (used by the triage and extraction agents).
Configure WhatsApp Business Cloud: add phoneNumberId, token and set the 'Send WhatsApp to Technician' node recipientPhoneNumber for test dispatches.
Gmail for client notifications: create OAuth2 credential used by the 'Send Client Confirmation Email' and 'Send Sign Off Email to Client' nodes.

If a node fails to authenticate, check the exact credential selected on the node (e.g. the Google Sheets node should show the service account credential id) and ensure the spreadsheet is shared with the service account email. If Gemini responses are malformed, reduce temperature to 0.1 and verify the 'promptType' mapping matches the parser schema.
Test the setup by running a smoke test
POST a complaint to the complaint webhook with minimal fields: elevator_id: E-100, complaint_text: "noisy motor and doors sticking".
Watch the canvas for the triage agent output. Confirm the triage outputs include `severity` and `required_skill` fields.
Confirm a new ticket row appears in the Tickets sheet and that client email and WhatsApp dispatch (or unassigned alert) are sent.

Advanced: inventory sync and safety flags
The extraction agent maps used parts to SKUs and the Calculate Parts Usage + Update Stock steps decrement inventory. The agent sets a boolean `safety_concern` which should trigger expedited follow-up if true.
If a part is not matched to a catalog SKU, the agent leaves `part_sku` empty — treat these as manual review items.
For safety-related work set nextscheduledmaintenance shorter (14 days) and flag the ticket for supervisor review.
Common Errors and Real-World Fixes
Unknown elevator_id Cause: webhook payload lacks exact field 'elevatorid'. Fix: ensure intake form POSTs 'elevatorid' and that Sheets has matching row.
Malformed AI output Cause: model temperature too high or prompt mismatch. Fix: set Gemini node temperature to 0.1, use structured output parser and validate against schema.
No technician available Cause: technician roster statuses incorrect. Fix: verify 'Technicians' sheet status values and run a manual dispatch test; the workflow sends an '⚠️ NO TECH AVAILABLE' email when no candidate is found.
Inventory not updated Cause: partsused items lacked matching 'partsku'. Fix: add missing SKUs to Inventory_Parts or adjust the agent's mapping logic.
Webhook 404/403 Cause: endpoint not exposed or auth mismatch. Fix: ensure the workflow is active (if using n8n cloud) and the webhook path is correct and reachable.
Building reliable processes around the workflow
Once stable, standardise incident handling and give operations a lightweight dashboard for open tickets and safety flags. Keep the AI prompts and parser schema in version control so tweaks are auditable.
Shift-left monitoring: surface 'P1' events to on-call immediately via SMS or high-priority email.
Automated RCAs: aggregate repeat root_cause values in Sheets for monthly review.
Inventory batching: run a nightly job to reconcile InventoryParts with partsused records and surface discrepancies.
Keep at least one human-in-the-loop for 'safety_concern' true cases.
Log model prompt and response to a secure audit sheet for compliance.
Add rate-limit handling: backoff and retries around AI and external API calls.
Production checklist
Confirm Google Sheets tabs and column names match the node mappings (Elevators, Technicians, Tickets, ServiceLogs, InventoryParts).
Validate webhook payload schema and POST a sample to each webhook URL.
Test Gemini prompts with edge-case technician notes and verify the structured parser accepts them.
Simulate 'No technician available' to confirm the unassigned alert branch works.
Verify inventory reorder emails fire when stock <= reorder_threshold.
When all items pass, enable the workflow and monitor for a week with close supervision.
Conclusion
Automating elevator complaint triage with n8n, Google Sheets and Gemini converts ad-hoc responses into an auditable, SLA-driven process. The common failure modes are missing identifiers, mis-mapped sheets, malformed AI outputs and roster gaps — each of which the checklist and the production tests above address.
Once stable, teams will see faster response to safety incidents, fewer repeat visits thanks to structured diagnostics, and better parts planning from accurate consumption records. The workflow is intentionally modular so you can swap the LLM, the dispatch channel or the sheet-backed datastore as your needs evolve.
Updated for 2026 — apply prompt and schema changes conservatively and keep human oversight for safety-critical escalations.
Frequently Asked Questions
More in Use Cases
Automate Facebook Posting to Bolotatto with n8n — Practical Guide
Stop manually copying Facebook posts into Bolotatto. This guide shows how to use n8n to capture page posts, transform content, and deliver structured payloads to Bolotatto webhook endpoints for reliable publishing.
Automate Social Media Posting with n8n in 2025
How to use n8n to automate social posts in 2025 — triggers, AI captions, channel delivery, troubleshooting, and ROI for stores, creators and teams.
Automate Shopify Product Launches for E-Commerce Teams, Marketers & Creators
Managing product launches shouldn’t mean endless copy-paste Every time a product goes live in Shopify, most merchants scramble: log into X (Twitter), draft a caption, paste into Telegram, maybe upload to Instagram. It’s repetitive, inconsistent, and easy to miss. A new product might sit for…

