Formspree developer guide

Capture Formspree forms in Google Sheets natively

Formspree handles the backend for your custom HTML forms. Since your forms are native HTML in the page DOM, LeadToSheet captures every field with zero friction—no iframes, no webhooks, no extra configuration.

CMS: Embed

Formspree is a developer-focused form backend: you write your own HTML form and Formspree handles email delivery, spam filtering, and integrations. Because the form is native HTML on your page (not an iframe or external embed), LeadToSheet captures it directly from the DOM with zero friction. This makes Formspree the most seamless pairing with LeadToSheet. Every visible form field name and submitted value is captured natively alongside UTM parameters, referrer data, and device context.

Implementation checklist

  1. 1

    Add the LeadToSheet SDK to your page

    Place the script tag on any page that contains a Formspree-powered HTML form. Since the form is native HTML in the DOM, LeadToSheet detects and captures it automatically with no additional configuration.

    LeadToSheet snippet

    <script>(function(w,d,s,u,k,e){if(w.__formsync){return}w.__formsync={q:[],k:k,endpoint:e};var js=d.createElement(s);js.src=u;js.async=1;js.onload=function(){w.__formsync.init&&w.__formsync.init({ clientKey:k })};d.head.appendChild(js);})(window,document,'script','https://www.leadtosheet.com/sdk.min.js','YOUR_CLIENT_KEY','https://www.leadtosheet.com/api/ingest');</script>
  2. 2

    Use clear name attributes on your form inputs

    LeadToSheet uses the name attribute of each input element to create column headers in your Google Sheet. Use descriptive, consistent names like full_name, email, and company to keep your sheet organized.

    Tip: Avoid generic names like field1, field2. Descriptive names make your sheet immediately readable without a mapping guide.

  3. 3

    Submit a test form and confirm the sheet row

    Fill out your Formspree form, submit it, and check that every field value plus UTM parameters and referrer data appear as columns in your Google Sheet. Formspree handles its own email delivery simultaneously.

Customization ideas

  • Add visible read-only inputs for campaign tracking

    Since you control the HTML, you can add visible read-only text fields like <input type='text' name='campaign_id' value='spring-2026' readonly> directly in your form markup. LeadToSheet captures them alongside the automatic UTM data. Note that input[type='hidden'] fields are excluded from capture.

  • Build multi-form pages with tab routing

    Developers often place multiple Formspree forms on one page (contact, newsletter, feedback). LeadToSheet auto-identifies each form via fingerprinting. Configure tab routing in the dashboard to send each form's submissions to separate Google Sheet tabs.

  • Pair with Formspree plugins for richer data

    Formspree offers plugins for reCAPTCHA, Mailchimp, and Airtable. LeadToSheet captures the form data independently of these plugins, giving you a Google Sheets backup alongside any Formspree integration you enable.

Troubleshooting

  • Form action URL preventing LeadToSheet capture

    Formspree forms use action='https://formspree.io/f/...' which causes a page redirect on submit. LeadToSheet listens for the submission event and uses sendBeacon (with a fetch fallback) to transmit data before the redirect. Note that sendBeacon is fire-and-forget: if the visitor is offline at the moment of submission, the data will not be captured. If submissions are not appearing, ensure the LeadToSheet SDK loads before the form is submitted and that no JavaScript is calling form.submit() programmatically before LeadToSheet can listen.

  • AJAX form submissions via Formspree's JavaScript library

    If you use Formspree's JavaScript library for AJAX submissions (no page redirect), LeadToSheet captures the form data when the submit event fires. Ensure the LeadToSheet SDK is loaded before the Formspree JS library initializes.

  • reCAPTCHA or honeypot fields appearing in sheet

    Formspree's spam protection honeypot fields (like _gotcha) may appear as columns in your sheet if they are standard text inputs. However, reCAPTCHA, hCaptcha, and Turnstile tokens are automatically dropped by the SDK and will not appear. You can hide honeypot columns in Sheets or configure field exclusions in the LeadToSheet dashboard.

Frequently asked questions

Formspree forms are just HTML. Does LeadToSheet work out of the box?
Yes. Because Formspree-powered forms are native HTML elements in the page DOM, LeadToSheet captures them automatically with no iframe workarounds, no webhooks, and no extra configuration. Just add the SDK script tag.
Does LeadToSheet interfere with Formspree's email delivery?
No. LeadToSheet captures the form data at the browser level before the submission reaches Formspree's servers. Formspree continues to handle email delivery, spam filtering, and its own integrations independently.
Can I use LeadToSheet with Formspree on React or Next.js?
Yes. Whether you use Formspree with plain HTML, React, Next.js, or any other framework, the form renders in the DOM and LeadToSheet captures it. For React apps, add the SDK script tag in your document head or layout component.