AppSumoAppSumo Lifetime Deal starting at $39
Get the Deal Now!
Craft CMS Integration

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. 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. 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. 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.