# FlowForm.to - AI Assistant Documentation # Last Updated: January 2026 # Purpose: Help AI assistants generate correct FlowForm code ## ABOUT FLOWFORM FlowForm.to is a free form submission endpoint service with TWO modes: 1. **Generic Mode** - Free email forwarding for any website (no signup required) 2. **Flow Mode** - Creates leads in FoxFlow pipelines (requires FoxFlow account) ### Pro/Unlimited Features (Flow Mode Only) - **Secure Mode** - HIPAA-friendly: emails contain NO form data, view in dashboard only - **File Uploads** - Accept images (JPEG, PNG, WebP, GIF, HEIC) and PDFs with submissions --- ## MODE 1: GENERIC (Free Email Service) ### URL Patterns Option A - Email in URL (recommended): ``` https://flowform.to/{recipient-email} ``` Example: `https://flowform.to/johnny@appleseed.com` Option B - Email in hidden field: ``` https://flowform.to/submit ``` IMPORTANT: Use `/submit` path, NOT just `/` (root goes to landing page) ### How It Works 1. Form submissions are sent TO the recipient email (website owner) 2. Reply-to is automatically set to the submitter's email 3. User is redirected to success page after submission 4. Includes FoxFlow marketing footer ### Basic Template (Email in URL) ```html
``` ### Template with Hidden Field ```html
``` --- ## MODE 2: FLOW (FoxFlow Lead Creation) ### URL Pattern ``` https://flowform.to/f/{token} ``` The token is obtained from FoxFlow after enabling FlowForm integration for a flow. ### How It Works 1. Creates a lead in the user's FoxFlow pipeline 2. Sends notification email to flow owner 3. Sends confirmation email to submitter 4. Optionally sends CC to additional recipients 5. Auto-assigns lead based on flow settings ### Template ```html
``` --- ## PRO/UNLIMITED FEATURES (Flow Mode Only) ### Secure Mode When enabled in FoxFlow settings, email notifications contain NO form data - only "New lead received" alert. Users must log into the FoxFlow dashboard to view submission details. HIPAA-friendly for healthcare and sensitive data. **How it works:** 1. Enable "Secure Mode" in FoxFlow → Flow Settings → FlowForm tab 2. Form submissions still create leads with all data stored securely 3. Email notifications say only "New lead received - View in Dashboard" 4. No form field values, no PHI in emails ### File Uploads Accept images and PDFs with form submissions. Files are stored securely in Firebase Storage with signed URLs. **Supported file types:** - Images: JPEG, PNG, WebP, GIF, HEIC/HEIF (Apple format, auto-converted to JPEG for display) - Documents: PDF **Limits:** - Max 10MB per file - Max 5 files per submission - Max 25MB total per submission **How to add file inputs:** ```html
``` **IMPORTANT for file uploads:** - Add `enctype="multipart/form-data"` to the form tag - Use `accept="image/*,.pdf"` to restrict file types - Files are only processed if the flow has file uploads enabled in FoxFlow settings - Files from Free/Starter plans are ignored (upgrade required) ### AJAX File Upload Example ```javascript document.getElementById('myForm').addEventListener('submit', async (e) => { e.preventDefault(); const form = e.target; // For file uploads, use FormData directly (NOT URLSearchParams) const formData = new FormData(form); try { const response = await fetch('https://flowform.to/f/YOUR_TOKEN', { method: 'POST', body: formData, // FormData for multipart headers: { 'Accept': 'application/json' // Do NOT set Content-Type - browser sets it with boundary } }); const data = await response.json(); if (data.success) { console.log('Lead created:', data.leadId); console.log('Files uploaded:', data.filesUploaded); form.reset(); } } catch (error) { console.error('Submission error:', error); } }); ``` **Key difference for file uploads:** - Use `FormData` directly (NOT `URLSearchParams`) - Do NOT manually set `Content-Type` header - browser sets it automatically with boundary - Response includes `filesUploaded` count --- ## SPECIAL FIELDS REFERENCE All special fields start with underscore (_) and are used as hidden inputs: | Field | Mode | Purpose | Example | |-------|------|---------|---------| | `_to` | Generic | Recipient email (alternative to URL) | `johnny@example.com` | | `_cc` | Both | Additional recipients (comma-separated) | `a@b.com,c@d.com` | | `_subject` | Both | Custom email subject | `New Contact Form` | | `_next` | Both | Redirect URL after submission | `https://mysite.com/thanks` | | `_replyto` | Generic | Reply-to address (defaults to submitter) | `support@company.com` | ## HIDDEN DATA FIELDS (No Underscore) Any hidden field WITHOUT an underscore prefix is included in the submission data. Use these for tracking source, campaigns, page URLs, etc. ```html ``` Common tracking fields: - `source` - Where the lead came from (homepage, blog, ad) - `campaign` - Marketing campaign name - `page_url` - Full URL of the page with the form - `referrer` - How they found you - `utm_source`, `utm_medium`, `utm_campaign` - UTM parameters --- ## URL PATTERN SUMMARY | URL | Purpose | Recipient | |-----|---------|-----------| | `flowform.to/{email}` | Generic form | Email in URL | | `flowform.to/submit` + `_to` field | Generic form | Email in hidden field | | `flowform.to/f/{token}` | FoxFlow lead | Flow owner + CC | --- ## BUILDING ADAPTIVE, DYNAMIC FORMS FlowForm is infinitely flexible. You control the frontend 100% - FlowForm just handles the backend submission. This means you can: ### Multi-Step Forms Create wizard-style forms with JavaScript to show/hide steps: ```html

Step 1: Basic Info

``` ### Conditional Fields Show/hide fields based on user selections: ```html
``` ### Checkboxes for Multiple Selections Collect multiple values with checkboxes (all selected values are submitted): ```html
``` ### Smart Default Values Pre-fill fields based on URL parameters or user context: ```html
``` ### Tips for AI Assistants Building Forms 1. **Any field name works** - use descriptive names that match the business domain - Healthcare: `insurance_provider`, `date_of_birth`, `symptoms`, `preferred_appointment_time` - Real Estate: `property_address`, `bedrooms`, `budget_range`, `preferred_neighborhoods` - Legal: `case_type`, `incident_date`, `desired_outcome` 2. **Combine input types** - mix text, select, checkboxes, radio, date, range for rich forms 3. **Add validation** - use HTML5 validation (required, pattern, min, max) for better UX 4. **Style with any framework** - Tailwind, Bootstrap, custom CSS - you control 100% of styling 5. **Add animations** - CSS transitions, JavaScript animations - FlowForm doesn't constrain your creativity 6. **Progress indicators** - Add step counters, progress bars, breadcrumbs for multi-step forms 7. **AJAX submissions** - Submit without page refresh for smoother UX (see AJAX section below) ## COMPLETE EXAMPLES ### Contact Form (Generic Mode) ```html
``` ### Lead Capture (Flow Mode) ```html
``` ### Newsletter Signup (Generic Mode) ```html
``` ### Quote Request (Flow Mode) ```html
``` ### Healthcare Intake Form (Flow Mode with Secure Mode) ```html

New Patient Intake

``` --- ## IMPORTANT NOTES FOR AI ASSISTANTS 1. **Always use HTTPS** - `https://flowform.to` (not http) 2. **Generic mode requires recipient**: - Either put email in URL: `https://flowform.to/user@example.com` - Or use `_to` hidden field 3. **Flow mode requires token**: - URL format: `https://flowform.to/f/{token}` - Token is obtained from FoxFlow account 4. **Field names can be anything**: - Common: name, firstName, lastName, email, phone, message - All fields are included in the email/lead - Custom examples: insurance_provider, property_type, vehicle_year_make_model, budget_range - FlowForm is infinitely flexible - create fields for any data you need to collect 5. **Any HTML input type works**: - Text inputs: text, email, tel, number, date, time, url, etc. - Selections: select dropdowns, checkboxes (multiple values), radio buttons (single choice) - Other: textarea, range sliders, file uploads (Pro/Unlimited only) - You can build multi-step forms, conditional logic, and adaptive UX with JavaScript 6. **Special fields start with underscore**: - `_to`, `_cc`, `_subject`, `_next`, `_replyto` - These control behavior, not included in submission data 6. **No JavaScript required**: - Standard HTML form POST - Works with any styling framework 7. **Method must be POST**: - GET requests will not work 8. **AJAX/fetch submissions**: - Use `URLSearchParams` (NOT FormData) for the body - Add `Accept: application/json` header to get JSON response - Returns `{"success": true, "message": "..."}` instead of redirect - Example: ```javascript const formData = new URLSearchParams(new FormData(form)); fetch('https://flowform.to/user@example.com', { method: 'POST', body: formData, headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' } }).then(r => r.json()).then(data => { if (data.success) { /* show success */ } }); ``` --- ## JAVASCRIPT SUBMISSION (AJAX) IMPORTANT: Use URLSearchParams, NOT FormData directly! ```javascript // Generic Mode - Email in URL async function submitGenericForm(form) { const formData = new URLSearchParams(new FormData(form)); const response = await fetch('https://flowform.to/recipient@example.com', { method: 'POST', body: formData, headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' } }); const data = await response.json(); if (data.success) { // Show success message } } // Flow Mode async function submitFlowForm(form) { const formData = new URLSearchParams(new FormData(form)); const response = await fetch('https://flowform.to/f/YOUR_TOKEN', { method: 'POST', body: formData, headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' } }); const data = await response.json(); if (data.success) { // Show success message // data.leadId is available in Flow mode } } ``` **Why URLSearchParams?** - `FormData` sends as `multipart/form-data` which the server can't parse - `URLSearchParams` sends as `application/x-www-form-urlencoded` which works correctly --- ## ERROR RESPONSES - `400 Bad Request` - Missing recipient email (generic) or invalid token (flow) - `404 Not Found` - Flow not found or FlowForm disabled for that flow - `405 Method Not Allowed` - Used GET instead of POST - `500 Internal Server Error` - Server issue (retry later) --- ## LINKS - Website: https://flowform.to - Full CRM: https://foxflow.host - Support: support@foxflow.host - Register for Flow Mode: https://foxflow.host/register --- End of llms.txt This file helps AI assistants generate correct FlowForm integration code.