BACK TO BLOG
TOOL HOW-TOOctober 26, 20267 min read

How to Use Tally to Capture Campaign Leads With UTM Tags

JH

By Joris van Huët

Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs

Published

2026-10-26

The short answer: if your campaigns bring in fewer than 50,000 sign-ups a month, this whole job runs on Tally's free plan, because hidden fields, conditional logic, email alerts, embeds and the Google Sheets integration cost nothing (the pricing page and fair use policy, checked on 26 October 2026). Draft the form, add hidden fields named after your UTM tags, route the qualifying answer with logic, switch on the alert, embed it with the HTML snippet so the page's tags reach the form, connect a Google Sheet, and test with a tagged link before the campaign goes out.

Disclosure: I may earn a commission through some links on this site. It does not change what this page says.

The job: every campaign link already carries utm_source, utm_medium and utm_campaign, and many lead forms drop them at the one moment that counts, when someone submits. This guide keeps them on the lead row, beside the answer that tells sales whether to call. What Tally is and what each plan costs is in the Tally glossary entry.

Before you open the editor:

  1. Find the paid parts, then decide without them. Two things in this job sit on Pro: partial submissions, which show people who start and leave, and a custom sender or recipient on the alert. For example, keeping Pro for a three-month campaign is 3 x $29 = $87 on monthly billing, against 12 x $24 = $288 for a yearly plan you may not need in month four, using the pricing page.
  2. Copy your tag names exactly. Take the UTM values from the ad links already running, case included, so the sheet's columns match the names your ad accounts report.
  3. Write down the baseline. Note how many leads per source your current form or CRM shows for the last 30 days. That figure is what the new sheet gets checked against.

What you need

  • A free Tally account, and a Google account for the spreadsheet; the Sheets integration is free for every user.
  • Access to your site's code or page builder, because forwarding the page's tags needs Tally's HTML snippet rather than a bare link.
  • A consent checkbox if leads will get marketing email. Article 7(1) of the GDPR says a controller relying on consent must be able to demonstrate it, and Tally's GDPR page makes you the controller of what your form collects. A required checkbox, stored with the lead, is that record.

Step 1: Draft the form

Start a new form and type the questions as text; press / to insert blocks such as Email, Multiple choice or Number, per the getting started guide. Keep it to name, work email, company and one qualifying question, for example budget or timeline. If you would rather describe the form than type it, Tally AI drafts the questions and logic for you to edit.

Step 2: Add hidden fields for the tags

Type /hidden to insert a Hidden fields block and add one field per parameter: utm_source, utm_medium, utm_campaign, plus ref if you use referral codes. The hidden fields article shows the values travelling in the URL, as in ?utm_source=linkedin&utm_medium=paid, and landing in the Submissions tab. A hidden field is not a question with its visibility switched off; respondents never see it at all.

Step 3: Route on the qualifying answer

Type /logic under the qualifying question. The conditional logic article lists the actions: jump to a page, calculate a value, show or hide blocks, or redirect to another URL. Send respondents who fit to a page with your booking calendar embedded, and everyone else to a thank-you page with a useful resource. Choose When all match only when every condition must hold.

Step 4: Switch on the lead alert

In the form's settings, under Email notifications, turn on Self email notifications. By default the email lists every answer, skips empty questions and goes to the account that created the form, per the self notifications article. Changing the sender, the subject or the recipients is a Pro customisation, so on the free plan let the sheet in step 6 be the sales queue and the alert a nudge.

Step 5: Publish and embed with the snippet

Publish, open the Share tab and pick Standard, Popup or Full page. Tally's embed article says the page URL and all its query parameters are forwarded to matching hidden fields automatically for popups and full-page embeds, and for standard embeds only when you use the HTML snippet or JavaScript. That one sentence decides whether your UTM columns fill or stay empty. Turn on Dynamic height so the form is not clipped on a phone.

Step 6: Send each lead to a Google Sheet

In the published form's Integrations tab, click Connect to Google Sheets, log in to Google, name the connection and pick or create the spreadsheet, per the Sheets article. Every submission becomes a row, and you can move or delete columns without breaking the sync. Timestamps arrive in UTC, so add a local-time column if sales works from Amsterdam or New York.

Step 7: Test with a tagged link

Open the live landing page with ?utm_source=test&utm_medium=check&utm_campaign=launch appended, submit, and confirm three things: the tags in the Submissions tab, the same tags on the new sheet row, and the alert in the creator's inbox. Delete the test row.

A step for an agent

Tally's MCP server connects Claude, Claude Code or Cursor to your account through OAuth. Two uses fit this job. Ask it to "create a lead form with name, work email, company, a budget question and hidden fields utm_source, utm_medium and utm_campaign": the docs say new forms stay private drafts until you ask for them to be published, so a person reads the draft in the editor before anything goes live. Then, each Monday, ask it for last week's completed submissions summarised by utm_source; a person checks the totals against the sheet before they go into a report. The server is in beta; treat its output as a draft.

What Tally's help centre warns about

  • Alerts that never arrive. The self notifications article names the usual causes: the toggle is off, the email went to spam, or your provider filters automated mail.
  • Expecting abandoned leads in the sheet. Partial submissions do not sync through integrations or trigger notifications, per the partial submissions article; export them from the Partial tab as CSV.
  • A sync that stopped without a sound. The Sheets article's checks: is the Google authorisation still valid, is every submission marked Delivered, has the spreadsheet hit Google's cell limit, and did a row land out of order in the first blank line.

When the campaign works

Nothing above needs a card, and that holds until the form succeeds: the fair use policy reads submissions kept at 50,000 a month for three or four months as an advanced need, and Tally then proposes a custom plan, invoiced each quarter on top of any subscription you already pay. Most forms never reach that line; the ones that do are where Tally earns its money, so know the threshold before launch week.

The free check of this whole setup is the sheet itself: a pivot table of leads by utm_source, next to what each ad platform reports for the same week. Where the two disagree, the sheet is the record you control. Later, if you want that comparison run continuously across channels, a causal attribution product such as Causality Engine does that work (disclosure: I founded it).

FAQ

Do hidden fields cost anything in Tally?

No. The hidden fields article says they are free for every Tally user, and you can add as many hidden field blocks as you need.

Why are my UTM columns empty?

Check the embed first: a standard embed passes the page's parameters only through the HTML snippet or JavaScript, while popups and full-page embeds pass them by default, per the embed article. Then check that each hidden field's name matches the parameter exactly.

Can I see the leads who started the form and left?

Only on Pro, with Partial Submissions turned on in the form's settings; nothing is captured from before you switch it on. They appear in the Submissions tab with an icon and download as CSV, but never reach the sheet.

TAGS
TallyLead CaptureUTM TrackingHidden FieldsGoogle SheetsMCP

ABOUT THE AUTHOR

I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.

I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.

Senior marketing execution

A senior operator doing the work: campaigns, channels, CRM and AI agents, live from day one.