FlowForm API Documentation

Complete developer guide for integrating FlowForm endpoints into your applications

Getting Started

FlowForm provides free HTTP endpoints for processing HTML form submissions. There are two modes: Generic (free email forwarding) and Flow (CRM lead creation).

Quick Start: Change your form's action attribute to point to a FlowForm URL and set method="POST". That's it!

Generic Mode

Generic Mode forwards form submissions to an email address. No signup required.

URL Patterns

Pattern Purpose Example
https://flowform.to/{email} Email in URL https://flowform.to/user@example.com
https://flowform.to/submit Email in form field Use _to hidden field

Basic Example

<form action="https://flowform.to/user@example.com" method="POST">
  <input type="text" name="name" placeholder="Your name" required>
  <input type="email" name="email" placeholder="Your email" required>
  <textarea name="message" placeholder="Your message"></textarea>
  <button type="submit">Send</button>
</form>

Flow Mode

Flow Mode creates leads directly in your FoxFlow CRM pipeline. Requires a FoxFlow account.

URL Pattern

https://flowform.to/f/{token}

Get your token from FoxFlow → Flow Settings → FlowForm tab.

Flow Mode Example

<form action="https://flowform.to/f/YOUR_TOKEN_HERE" method="POST">
  <input type="text" name="firstName" placeholder="First Name" required>
  <input type="text" name="lastName" placeholder="Last Name">
  <input type="email" name="email" placeholder="Email" required>
  <input type="tel" name="phone" placeholder="Phone">
  <textarea name="message" placeholder="Message"></textarea>
  <button type="submit">Submit</button>
</form>
Pro Features: HIPAA-compliant Secure Mode, file uploads, team notifications, and auto-assignment.

Special Fields

Fields prefixed with underscore (_) control FlowForm behavior, not included in submission data.

Field Mode Description Example
_to Generic Recipient email user@example.com
_cc Both Additional recipients boss@company.com,team@company.com
_subject Both Custom email subject New Contact Form
_next Both Redirect URL after submit https://mysite.com/thanks
_replyto Generic Reply-to address support@company.com

File Uploads (Pro/Unlimited)

Accept file uploads with form submissions. Requires Pro plan and enctype="multipart/form-data".

File Upload Example

<form action="https://flowform.to/f/YOUR_TOKEN" method="POST"
      enctype="multipart/form-data">

  <!-- Regular fields -->
  <input type="text" name="name" placeholder="Your name" required>
  <input type="email" name="email" placeholder="Email" required>

  <!-- File upload fields -->
  <label>Insurance Card (Front):</label>
  <input type="file" name="insurance_front" accept="image/*,.pdf">

  <label>Supporting Documents:</label>
  <input type="file" name="documents" accept="image/*,.pdf" multiple>

  <button type="submit">Submit</button>
</form>
Limits: 10MB per file, 5 files max, 25MB total. Supported: JPEG, PNG, WebP, GIF, HEIC, PDF.

AJAX Submissions

Submit forms without page refresh using JavaScript.

JavaScript Example

async function submitForm(form) {
  const formData = new URLSearchParams(new FormData(form));

  const response = await fetch('https://flowform.to/user@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) {
    console.log('Form submitted successfully');
    form.reset();
  }
}
Important: Use URLSearchParams for the request body, not raw FormData.

Error Handling

FlowForm returns standard HTTP status codes for different error conditions.

Status Code Error Description
400 Bad Request Missing recipient email or invalid token
404 Not Found Flow not found or FlowForm disabled
405 Method Not Allowed Used GET instead of POST
500 Internal Server Error Server issue - try again later

Complete Examples

Contact Form

<form action="https://flowform.to/contact@company.com" method="POST">
  <input type="hidden" name="_subject" value="New Website Inquiry">
  <input type="hidden" name="_next" value="https://company.com/thank-you">

  <input type="text" name="name" placeholder="Full Name" required>
  <input type="email" name="email" placeholder="Email Address" required>
  <input type="tel" name="phone" placeholder="Phone Number">
  <select name="subject" required>
    <option value="">Select a topic</option>
    <option value="sales">Sales Inquiry</option>
    <option value="support">Support</option>
    <option value="other">Other</option>
  </select>
  <textarea name="message" placeholder="Your message" required></textarea>
  <button type="submit">Send Message</button>
</form>

Lead Generation Form

<form action="https://flowform.to/f/YOUR_TOKEN_HERE" method="POST">
  <input type="hidden" name="_cc" value="team@company.com">
  <input type="hidden" name="_subject" value="New Lead from Landing Page">

  <input type="text" name="firstName" placeholder="First Name" required>
  <input type="text" name="lastName" placeholder="Last Name">
  <input type="email" name="email" placeholder="Work Email" required>
  <input type="tel" name="phone" placeholder="Phone Number">
  <input type="text" name="company" placeholder="Company Name">
  <select name="employees">
    <option value="">Company Size</option>
    <option value="1-10">1-10 employees</option>
    <option value="11-50">11-50 employees</option>
    <option value="51-200">51-200 employees</option>
    <option value="200+">200+ employees</option>
  </select>
  <textarea name="message" placeholder="Tell us about your needs"></textarea>
  <button type="submit">Get Started</button>
</form>

API Reference

Request Format

  • Method: POST (GET requests return 405)
  • Content-Type: application/x-www-form-urlencoded (or multipart/form-data for file uploads)
  • Protocol: HTTPS only

Response Format

When requesting JSON (via Accept header), responses include:

{
  "success": true,
  "message": "Form submitted successfully",
  "leadId": "abc123", // Flow Mode only
  "filesUploaded": 2   // File uploads only
}

Rate Limits

FlowForm implements reasonable rate limits to prevent abuse. Contact support for higher limits.