Connect Craft CMS forms to Google Sheets without leaving Twig
Drop the LeadToSheet snippet into your Craft layout and capture submissions from Freeform, Sprout Forms, Verbb forms, and custom Twig forms with full attribution intact.
Platform category: Content Management System
Why teams use LeadToSheet for Craft CMS
Craft sites range from agency marketing pages to GraphQL-driven headless setups. LeadToSheet attaches at the DOM level after Craft's CSRF validation passes, so it works the same way whether your forms render through a Freeform widget, a Sprout Forms block, or a frontend framework consuming the Craft API.
Form-plugin agnostic
Captures submissions from Freeform, Sprout Forms, Verbb, or your own Twig form macros — no plugin-specific wiring needed.
Headless-friendly
Works the same whether Craft renders the page directly or feeds a Next.js, Nuxt, or Astro frontend through GraphQL.
Live preview safe
Only fires on form submission, so it doesn't pollute the Sheet during Craft's live preview iframe sessions.
Choose your integration path
Set up Craft CMS
Three ways to get submissions into your Google Sheet - pick the one that fits your stack. Every path delivers to the same sheet with the same fields.
Drop one script tag into your Craft CMS site. Best for marketing pages and CMS templates that already share a header or layout.
- 1
Add the snippet to your layout
Open templates/_layout.twig and paste the script tag before </body>. For headless setups, drop it into your frontend root component instead.
Tip: If you load assets via a manifest, register the snippet alongside your main JS bundle.
_layout.twig embed
<script async src="https://www.leadtosheet.com/api/sdk?k=YOUR_CLIENT_KEY"></script> - 2
Submit a test entry through a plugin form
Run a real submission through whichever Craft form plugin you use (Freeform, Sprout Forms, Verbb). The row should appear in your Sheet within seconds.
Tip: Add `?utm_source=craft-test` to the URL to confirm attribution is flowing.
- 3
Rename Sheet columns to plugin field handles
Most Craft plugins use Pascal-case field handles like firstName, companyName. Rename the first row of your Sheet to match the labels your team actually uses.
Tip: The mapping is reused for every future submission — set it once.
Agency client portfolios
Capture inquiries across multiple client sites built on Craft, with a separate Sheet per client and shared dashboard for the account team.
Real estate listings
Sync property inquiry forms with the listing slug and broker assignment attached, so the right agent picks up the lead.
Editorial subscriptions
Collect newsletter signups and reader tips from Craft-powered publications and route them to the editor on rotation.
Frequently asked questions
- Does this work with Freeform and Sprout Forms?
- Yes. LeadToSheet listens to native submit events, so it captures submissions from any Craft form plugin without per-plugin configuration. Use the plugin's own success state for the user-facing flow; LeadToSheet just handles the Sheet sync.
- Will Craft's CSRF token cause issues?
- No. The SDK reads the form payload after Craft's built-in CSRF validation passes, so only accepted submissions sync. Failed/rejected submissions never reach your Sheet.
- Can I use this with a headless Craft setup?
- Yes. Drop the snippet into your headless frontend (Next.js, Nuxt, Astro). Forms rendered from the Craft GraphQL API are captured the same way as server-rendered ones.
Considering other options for Craft CMS?
See how LeadToSheet compares to Formspree, Zapier, Typeform, HubSpot, and other form capture tools.
