Batch 7.2: Support Request → Zoho Cases #76

Closed
opened 2026-05-17 18:54:10 -05:00 by null · 0 comments
Owner

Batch 7.2 — Forward Support Requests to Zoho Cases

Phase: 7 — Zoho CRM Integration
Agent: Neo (backend)
Priority: P2 Medium — enhancement, not blocking

Problem

Support form submissions currently only write to SQLite. They should also create Cases (tickets) in Zoho CRM for ticket tracking, so support staff have visibility.

Tasks

  • Add ZOHO_CASES_ENABLED env var (separate from lead forwarding)
  • Create forwardSupportToZoho() function
  • Map form fields to Zoho Case schema:
    • Subject (mandatory) — from support issue description
    • Case_Origin (picklist) — "Website"
    • Email — from form
    • Phone — from form
    • Priority — from form priority selection (if present)
    • Description — full message + service interest
  • Reuse getZohoAccessToken() for auth
  • Fire-and-forget with .catch() (non-blocking)
  • Add to Dockerfile and .env.example
  • Test with ZOHO_CASES_ENABLED=false first

Files to modify

  • server/index.js — New forwardSupportToZoho() function, call from support route
  • Dockerfile — Add ZOHO_CASES_ENABLED
  • .env.example — Add ZOHO_CASES_ENABLED

Acceptance criteria

  • Support submissions write to SQLite first (always)
  • When ZOHO_CASES_ENABLED=true, also forwards to Zoho Cases
  • When ZOHO_CASES_ENABLED=false, no Zoho calls for support
  • Zoho Case payload matches required schema
  • No regressions in support form submission
## Batch 7.2 — Forward Support Requests to Zoho Cases **Phase:** 7 — Zoho CRM Integration **Agent:** Neo (backend) **Priority:** P2 Medium — enhancement, not blocking ### Problem Support form submissions currently only write to SQLite. They should also create Cases (tickets) in Zoho CRM for ticket tracking, so support staff have visibility. ### Tasks - Add `ZOHO_CASES_ENABLED` env var (separate from lead forwarding) - Create `forwardSupportToZoho()` function - Map form fields to Zoho Case schema: - `Subject` (mandatory) — from support issue description - `Case_Origin` (picklist) — "Website" - `Email` — from form - `Phone` — from form - `Priority` — from form priority selection (if present) - `Description` — full message + service interest - Reuse `getZohoAccessToken()` for auth - Fire-and-forget with `.catch()` (non-blocking) - Add to Dockerfile and `.env.example` - Test with `ZOHO_CASES_ENABLED=false` first ### Files to modify - `server/index.js` — New `forwardSupportToZoho()` function, call from support route - `Dockerfile` — Add `ZOHO_CASES_ENABLED` - `.env.example` — Add `ZOHO_CASES_ENABLED` ### Acceptance criteria - Support submissions write to SQLite first (always) - When `ZOHO_CASES_ENABLED=true`, also forwards to Zoho Cases - When `ZOHO_CASES_ENABLED=false`, no Zoho calls for support - Zoho Case payload matches required schema - No regressions in support form submission
null added the
backend
phase-7
integration
labels 2026-05-17 18:54:10 -05:00
null added the
P2 Medium
label 2026-05-17 18:55:32 -05:00
null closed this issue 2026-05-17 19:27:09 -05:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: null/Queue-North-Website#76
No description provided.