← Back to Project Tracker

Automations Tracker

Replicating 50 Airtable automations into the new platform. Last updated April 2, 2026 (late night session).

Total Automations
50
Delivered
43
In Progress
0
Planned
4
Blocked
3
Delivered Implemented and live
In Progress Currently being built
Planned Not yet started
Needs Capture Contains Airtable script code
Internal DB-only, no external service
Gmail Acuity QuickBooks Google Cal External integrations

Layer 1: Database Triggers (Supabase PL/pgSQL) — 18 Automations

Complete
# Name Airtable Trigger What It Does Integration Status Resolution
10 Repair Completed → Log Date status_repair = 'Completed' Sets date_completed = NOW() Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
11 Parked/Completed → Unprioritized status_project in (Parked, Completed) Sets priority_level = 'Unprioritized' Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
12 RFQ Email Sent → Update Status rfq_sent_date is set Sets status_project = 'RFQs Sent' Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
13 In Process status_repair = 'In Progress' Sets status_project = 'In Process' Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
14 Quote Entered → Update Status quote_amount set (was NULL) Sets status = 'Quotes Received' + logs quote_received_date Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
16 Approval Email Sent → Status approval_sent flag set Sets status = 'Waiting On Approval' + logs time_woa Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
17 Schedule Confirmation schedule_date_time set + was WOS Sets status_project = 'Scheduled' Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
18 Visit Active → Update Project status_repair = 'In Progress' + was Scheduled Sets status_project = 'In Progress' Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
19 Schedule Request Update waiting_on_schedule_date set Sets status_project = 'Waiting On Schedule' Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
22 Project Status Sync status_repair = 'Completed' Syncs status_project to 'Completed - Invoice' Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
2 Link Communication to Month Record created Links communication to matching month record Internal NewDelivered PL/pgSQL BEFORE INSERT trigger on member_communication
9 Project/Repair Dates Record updated Logs timestamps for status changes, in-progress, WOE, WOA Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
29 Find Visit to Link Repair Record created Finds most recent visit for property and links it Internal NewDelivered PL/pgSQL AFTER INSERT trigger on repairsprojects
40 Assigned To Update Tech assignment changes Logs assigned_time when tech changes Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on visits
41 Visit Updated Timestamp Record updated Updates updated_at on visit changes Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on visits
48 VSR → Scheduled schedule_date_time set + sub_contractor Sets status to 'Scheduled' for vendor sub-contractor repairs Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger on repairsprojects
21 Parking Automation Park field toggled Park: save priority, set Parked. Unpark: restore priority, set status by sub-contractor flag Internal NewDelivered PL/pgSQL BEFORE UPDATE trigger with 4-branch logic
35 Reschedule Notification Visit rescheduled 7 actions: look up member, create comm, link to visit + member, send email, update tracking Internal NewDelivered Trigger.dev task "reschedule-notification" + Resend

Layer 2: API Routes (Button Clicks & Record Creation) — 6 Automations

Complete
# Name Airtable Trigger What It Does Integration Status Resolution
3 Draft Email - Contract Button click Creates draft in member_communication, links via junction Internal NewDelivered POST /api/contracts/[id]/draft-email
4 Contract Created → Add PM & Home Review Record created Auto-creates service line items and links via junction Internal NewDelivered PL/pgSQL AFTER INSERT trigger on contracts
5 Create Contract from Member Button click Creates contract record linked to property Internal NewDelivered Already existed: /api/members/[id]/contracts
23 Create Property from Member Button click Creates property + links via properties__members junction Internal NewDelivered POST /api/members/[id]/properties
24 New Member → Create Property Record created Auto-creates property and links to member on insert Internal NewDelivered PL/pgSQL AFTER INSERT trigger on members
31 Home Manager Update Record updated Updates property HM, creates change log communication Internal NewDelivered POST /api/members/[id]/home-manager-update

Layer 3: Email Automations (Trigger.dev + Resend) — 5 Automations (4 Done)

4 / 5
# Name Airtable Trigger What It Does Integration Status Resolution
1 Send Email email_status = 'Sent' 3-way conditional: project context, contract attachment, or plain Gmail NewDelivered Trigger.dev task "send-email" + Resend
7 Visit Reminders Scheduled (7-day, 2-day) Sends reminder emails before visits Gmail Script NewDelivered Trigger.dev cron "visit-reminders" + Resend (email only, SMS via Lambda TBD)
32 Approval Automations Record updated 7-action: create comm, link to repair + member, update status, send email, log Internal NewDelivered Trigger.dev task "approval-automations" + Resend
33 New Waiting on Approval Status changes Sends approval request email Gmail NewDelivered Trigger.dev task "waiting-on-approval-email" + Resend
47 Project Reminders Daily at 9 AM ET 4-branch: 3/7/10 day WOA reminders + 3-day RFQ vendor follow-up Internal NewDelivered Trigger.dev scheduled cron "project-reminders" + Resend

Layer 3: Complex Internal Workflows (Trigger.dev) — 5 Automations

Complete
# Name Airtable Trigger What It Does Integration Status Resolution
8 New Repair Created (14 actions) Record created Sets defaults, links to property/member, initializes status and dates Internal NewDelivered Trigger.dev task "new-repair-init"
15 Add Product (12 actions, 6 branches) add_product flag set 6-way branch: creates product from in-repair, form, or fallback fields, resets flags Internal NewDelivered Trigger.dev task "add-product"
20 PM Workflow (14 actions, 7 branches) pm_workflow_triggers updated Central engine: approval emails, vendor RFQs, schedule visits, work completed Internal NewDelivered Trigger.dev task "pm-workflow" with 7-way switch
46 Property Inactive → Cancel Visits Property marked inactive Finds all future non-canceled visits and bulk-cancels them Internal NewDelivered Trigger.dev task "cancel-future-visits"
49 Sales Emails (23 actions!) Button click Multi-email sales sequence: welcome, differentiator, value prop + comm records Gmail NewDelivered Trigger.dev task "sales-emails" + Resend. Full 23-action logic pending script capture.

Layer 3: External Integrations (Trigger.dev) — 14 Automations

In Progress
# Name Airtable Trigger What It Does Integration Status Resolution
43 Visit Created → Acuity Record created Creates appointment in Acuity Scheduling Acuity Script NewDelivered Trigger.dev task "create-acuity-appointment"
44 Reschedule Acuity Record matches condition Updates appointment in Acuity Acuity Script NewDelivered Trigger.dev task "reschedule-acuity-appointment"
45 Cancel Appointment → Remove Date Record matches condition Cancels Acuity appointment + conditional email Acuity Script NewDelivered Trigger.dev task "cancel-acuity-appointment"
50 Automated Scheduling Push to Acuity Record matches condition 25-second delay before Acuity reschedule trigger Acuity Script NewDelivered Trigger.dev task "scheduling-delay" (wait.for 25s)
36 Reschedule Calendar Update Record matches condition Updates Google Calendar event (currently via Zapier webhooks) Google Cal Script Blocked Needs Google Calendar OAuth setup to replace 30+ Zapier webhooks
37 2-Way Calendar Sync Record matches condition Bidirectional Google Calendar sync (1,539 runs/mo via Zapier) Google Cal Script Blocked Needs Google Calendar OAuth setup to replace 30+ Zapier webhooks
25 Onboard Client in QBO Record matches condition Creates client in QuickBooks Online QuickBooks Planned Trigger.dev + QuickBooks API
26 First Visit Automation Record matches condition Creates records on first visit + QB QuickBooks Planned Trigger.dev + QuickBooks API
27 Annual Trigger Record matches condition Annual billing workflow + QB QuickBooks Planned Trigger.dev + QuickBooks API
28 Contract Signed → Create Visits Button click Creates visit records from contracted services + email notification QuickBooks Script Planned Script captured. Needs QuickBooks API for billing portion
30 Remove Email from Gorgias Rule Record updated (HM change) Updates Gorgias routing rules Gorgias Script NewDelivered Trigger.dev task "gorgias-rule-update"
38 2-Way User Search (was Zapier) Email match needed Matches email to hfhs_team member, assigns tech to visit. Zapier eliminated. Internal NewDelivered Trigger.dev task "match-user-to-team" (direct DB query, no Zapier)
6 Generate Contract PDF generate_pdf flag set Sends contract data to Documint via Zapier for PDF generation Script Planned Script captured. Needs Documint API integration or @react-pdf/renderer
39 Update Assigned To Record updated Matches emails to team members, updates visit assignment Script NewDelivered Trigger.dev task "update-assigned-to"

Layer 3: Scheduled Jobs (Trigger.dev Cron) — 2 Automations

Complete
# Name Airtable Trigger What It Does Integration Status Resolution
34 Project Wins (15 actions) Scheduled (recurring) Daily 3pm: projects won L24h + sales report by rep/market Cron Script NewDelivered Trigger.dev cron "project-wins-report" + Resend
42 Recurring Every 15 Minutes (2 active scripts) Every 15 minutes PM assignment from HM + priority level ranking (2 other scripts disabled in Airtable) Cron Script NewDelivered Trigger.dev cron "recurring-maintenance"