Changelog

What's been built

ContactFire shipped 14 product phases. Here is every capability, from the first form submission endpoint to live draft saving.

14
Phase 14

Live Draft Saving & Partial Submissions

  • Partial submission API — POST /api/public/forms/{formId}/partial saves in-progress data
  • GET /api/public/forms/{formId}/partial resumes a draft from a sessionId
  • sessionId stored in browser localStorage for cross-visit resume
  • Live inbox tab shows real-time draft data for LDS-enabled forms
  • Idle notification fires after 10 minutes of inactivity on a draft
  • Full submission with matching sessionId upgrades the partial record
13
Phase 13

Chat Widget

  • Conversational chat overlay for any page
  • Astro component: <ContactFireChat> with token and formId props
  • JS snippet for non-Astro sites: data-token and data-form-id attributes
  • Live Draft Saving built into the chat widget by default
  • Fully branded with ContactFire flame colour scheme
12
Phase 12

Database-Driven Pricing

  • Plans table stores all plan metadata — name, slug, limits, overage settings
  • plan_pricing table supports monthly, yearly, lifetime, and trial billing models
  • plan_features table with rich feature descriptions per plan
  • GET /api/plans and GET /api/plans/{planId} return live pricing data
  • Admin pricing dashboard at /dashboard/administration/pricing
  • $1 first-month trial toggle per plan
11
Phase 11

Form Studio — AI Generation & Import/Export

  • AI form generation: describe your form in plain language, get a complete schema
  • Autosave with undo/redo history (up to 30 states)
  • Import form schema from JSON
  • Export form schema to JSON for backup or reuse
  • Duplicate a published form
10
Phase 10

Form Studio — Multi-Step & Conditional Logic

  • Sections create multi-step forms with progress indicators
  • Conditional rules: show/hide fields based on other field values
  • Per-section titles and descriptions
  • Section navigation: back/next buttons auto-generated by embed script
  • Conditional rules evaluated client-side in real time
09
Phase 9

Form Studio — Core Builder

  • Form Studio visual builder launched
  • 26 field types: text, textarea, email, phone, number, url, date, time, datetime, select, multi-select, checkbox, radio group, toggle, range slider, star rating, file upload, image upload, signature pad, color picker, address, name (multi-part), payment (Stripe), matrix, hidden, heading/description (display)
  • Drag-and-drop field ordering
  • Per-field validation rules: required, min/max length, pattern, min/max value
  • Custom error messages per validation rule
  • Publish / Unpublish toggle
  • Copy embed code (HTML, JS, Astro) with one click
  • Per-form notification recipients
  • GET /api/public/forms/{formId} returns published form schema
  • POST /api/public/forms/{formId}/submit accepts form data
08
Phase 8

Notifications & Weekly Digest

  • Real-time email notification on every accepted submission
  • Reply-To header set to visitor's email field value
  • Per-form recipient override in Form Studio settings
  • Token-level recipient override on embed tokens and API keys
  • Notification precedence chain: form → token → account notification email → account email
  • Optional weekly digest email (Mondays)
07
Phase 7

Spam Filtering

  • Honeypot field: _honeypot — non-empty value silently discards submission
  • Edge rate limiting via Cloudflare Workers KV: 10 req/IP/minute
  • Server-side heuristic checks: speed, header anomalies, known spam patterns
  • Flagged submissions stored with spam=true — not deleted
  • Spam inbox tab for review and recovery
  • API returns 200 for spam (submitter unaware)
06
Phase 6

Embed Tokens

  • Embed token type introduced (cf_embed_...)
  • Public-safe tokens — designed to be shipped in frontend code
  • Domain allowlist per token
  • GET /api/embed-code/{tokenId}?format=astro|html|js returns ready-to-paste code
  • GET /api/embed-script serves the JS embed loader
  • Embed token recipient override
05
Phase 5

Analytics & Submission Inbox

  • Submission inbox with all, spam, and partial tabs
  • Submission detail view with full field data
  • submission_analytics table tracks submission counts per day
  • Analytics summary card on dashboard home
04
Phase 4

API Keys & Server Submissions

  • API key type introduced (cf_api_...)
  • Server-to-server form submission via x-api-key header
  • POST /api/form/submit accepts both embed tokens and API keys
  • API key management UI
03
Phase 3

Stripe Billing

  • Stripe Checkout session creation
  • Webhook handling for subscription events
  • Plan limits enforced on form submission endpoint
  • Billing page in dashboard
02
Phase 2

Teams & Onboarding

  • Team creation and membership management
  • Role-based access: owner, admin, member
  • Team invitation flow with email links
  • Onboarding wizard: plan selection, team setup, first token
01
Phase 1

Core Platform Launch

  • User registration and login (JWT session cookies)
  • Authentication on the home page — no separate /sign-in or /sign-up pages
  • Dashboard home with submission counts
  • Basic form submission endpoint (POST /api/form/submit)
  • PostgreSQL with Drizzle ORM
  • Next.js App Router with TypeScript
Previous: Live form monitoring