Tally forms setup

Connect Tally forms to Google Sheets with LeadToSheet

Tally offers unlimited forms and submissions for free with a Notion-like editing experience. Add LeadToSheet to your embed page to capture every Tally response with marketing attribution and consistent column formatting.

CMS: Embed

Tally is a modern, free form builder that delivers unlimited submissions, conditional logic, and payment collection without paywalls. While Tally offers its own Google Sheets integration, LeadToSheet enhances it by adding UTM parameters, referrer URLs, and device metadata to every row. If you embed Tally forms across multiple sites, LeadToSheet gives you a single unified sheet with attribution data that Tally's native connector does not provide.

Implementation checklist

  1. 1

    Add the LeadToSheet SDK to your host page

    Place the script tag on the page where your Tally form is embedded. Tally renders forms inside an iframe, so LeadToSheet relies on the Tally webhook fallback for reliable server-side capture.

    LeadToSheet snippet

    <script src="https://cdn.leadtosheet.com/sdk.min.js" data-client="YOUR_CLIENT_KEY"></script>
  2. 2

    Configure the webhook fallback in Tally

    Go to your Tally form's Integrations tab, add a Webhook, and paste your LeadToSheet webhook URL from the dashboard. This ensures every submission is captured server-side regardless of iframe cross-origin restrictions.

    Tip: The LeadToSheet SDK on the host page captures UTMs and referrer data, while the webhook delivers form field values. Both merge into a single sheet row.

  3. 3

    Test a submission and verify the merged row

    Submit a test entry through your embedded Tally form and check that both the form fields (via webhook) and the attribution data (via SDK) appear in the same Google Sheet row.

Customization ideas

  • Track payment conversions alongside attribution

    Tally supports Stripe payments. When payment data flows through the webhook, LeadToSheet pairs it with the UTM source captured by the SDK, letting you measure revenue per marketing channel directly in Sheets.

  • Embed multiple Tally forms with tab routing

    If you embed different Tally forms on different pages, use data-leadtosheet-tab attributes to route each form's submissions to a dedicated sheet tab while keeping attribution consistent.

  • Use Tally's calculation fields for lead scoring

    Build scoring logic inside Tally using its calculation feature, then let LeadToSheet write the computed score to your sheet. Use Apps Script to trigger automations based on score thresholds.

Troubleshooting

  • Tally iframe blocks direct form capture

    Tally embeds render inside a sandboxed iframe with strict cross-origin policies. LeadToSheet cannot read form fields from the iframe directly. Configure the Tally webhook integration to deliver field data server-side, and the SDK on the host page will contribute attribution metadata.

  • Popup embeds not triggering SDK detection

    Tally popup forms open in an overlay iframe. The SDK on the host page captures the page URL and UTMs when the popup triggers, but field data still requires the webhook integration for reliable capture.

  • Webhook not firing for some submissions

    Check that the webhook URL is correctly saved in Tally's integration settings and that the endpoint is reachable. Test by submitting from an incognito window to rule out browser extension interference.

Frequently asked questions

Tally already connects to Google Sheets for free. Why add LeadToSheet?
Tally's native integration sends form field values but not marketing attribution. LeadToSheet adds UTM parameters, referrer URL, device type, and page URL to every row, giving you the context needed to measure campaign performance.
Does LeadToSheet work with Tally's free plan?
Yes. Tally's free plan includes webhook integrations, which is all LeadToSheet needs. There are no Tally plan restrictions for this setup.
Can I use Tally's conditional logic with LeadToSheet?
Absolutely. Conditional fields flow through the webhook payload exactly as the respondent answered them. Hidden fields that were not triggered simply do not appear in that row.