Fly.io Review Server - COMPLETE

Date Completed: Feb 3, 2026 Branch: feature/fly-review-server

Status: DEPLOYED AND LIVE

The Fly.io review server is fully operational and integrated with Zapier/Lawmatics.

Architecture

Lawmatics Form Submission
        ↓
Zapier Trigger: "Filled Out a Form"
  - Form: form-generate-a-request-for-a-review
  - Captures: matterId, firstName, lastName, email, phone, requestType
        ↓
Zapier Action: Webhooks POST to Fly.io
  - URL: https://sempers-review-server.fly.dev/trigger
  - Payload: JSON with secret + form fields
        ↓
Fly Server handles everything:
  1. Generate feedback token (HMAC-SHA256, 7-day expiry)
  2. Shorten URL via is.gd
  3. Update Lawmatics Matter with feedback URL
  4. Log to Google Sheets (feedback-links-log)
  5. Create Gmail draft immediately (user can review/edit)
  6. Schedule draft send (10-minute delay)
  7. Schedule follow-up check (5-day delay)

Email Flow

  1. Trigger fires → Gmail draft created immediately (visible in Drafts folder)
  2. 10-minute window → User can review/edit/delete the draft
  3. After 10 minutes → Draft auto-sends (skips if deleted by user)
  4. After 5 days → Follow-up email sent if no review received

Infrastructure

Component Details
Server Fly.io app: sempers-review-server
URL https://sempers-review-server.fly.dev
Region LAX (Los Angeles)
Database SQLite on Fly volume (/data/review-server.db)
Cost ~$3-6/month

Secrets (set via fly secrets)

Key Files

File Purpose
review-server/src/routes/trigger.js Main webhook endpoint
review-server/src/services/gmail.js Draft creation and sending
review-server/src/services/sheets.js Google Sheets logging
review-server/src/jobs/sendDraft.js Scheduled draft sending
review-server/src/jobs/followUp.js 5-day follow-up logic

Google Workspace Setup

Zapier Zap

Maintenance

View logs:

fly logs --app sempers-review-server

Deploy updates:

cd review-server && fly deploy

Check health:

curl https://sempers-review-server.fly.dev/health

Previous Approaches (Deprecated)