How-to · Tally
Track UTM campaigns from Tally forms in monday.com
By Jefferson Huera Guzman Updated 5 min read
To track UTM campaigns from Tally in monday.com, add a hidden field to your form for each UTM parameter, put the values in your campaign links and map the fields to board columns with Tally Forms Automation. Each response then reaches your board with its source, medium and campaign, ready to filter and chart.
How a UTM value reaches your board
A marketing team runs a spring webinar through a LinkedIn ad, a newsletter and a partner’s blog, all pointing at one Tally demo request form. Each lead should reach monday.com with the campaign that brought them.
- Campaign link with UTM values
- Tally hidden fields
- Tally Forms Automation
- Board columns
Nothing here is automatic. To Tally, a UTM parameter is a URL parameter like any other, and hidden fields are how a form saves one. Each hidden field keeps the value of the URL parameter with the same name. So you add a hidden field for each parameter, and the app treats it like any other answer.
Add the hidden fields in Tally
- In the Tally editor, type
/hiddento insert a hidden field block. - Name it exactly like the URL parameter, such as
utm_source. - Add a separate block for
utm_mediumand forutm_campaign. - Publish the form.
Then add the values to each link. The first parameter follows a ? and the others are separated with &:
https://tally.so/r/aBcDeF?utm_source=linkedin&utm_medium=paid&utm_campaign=spring-webinar | Placement | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| LinkedIn ad | paid | spring-webinar | |
| Newsletter | newsletter | spring-webinar | |
| Partner blog | partner-blog | referral | spring-webinar |
Agree on the values before you build the links. Write them in lowercase, and join words with hyphens, not underscores. The reason is in Send one campaign to its own group.
If the form is embedded on your website
The same hidden fields work there. Tally forwards the page’s query parameters to the form by default for popups and full page embeds, and for standard embeds that use the HTML snippet or JavaScript.
The values have to be on the page where the form opens. A visitor who lands on one page and fills the form on another arrives without them. Tally’s hidden fields article links to guides for other tools, such as Attributer.
Choose a column for each value
Hidden fields send text, so they can fill any column that takes text. The right one depends on how many different values you expect:
| Value | Column | Why | Trade-off |
|---|---|---|---|
utm_source | Dropdown | Few values, easy to filter and chart | The app adds a new label for each new value, so a typing error becomes a label |
utm_medium | Dropdown | Very few values | Same as above |
utm_campaign | Text | Many values that come and go | No labels to clean up, but the value is written as it arrives, so a typing error stays on the board |
Map the fields to your board
Create an item for every response. It’s the safest setup, because no lead is left out:
Account When a new entry in Form is received, create an Item/Subitem in this Group/Item with this Data
In Data, each hidden field shows (hidden field) after its name:

Map Submission Date to a Date column, so you can compare campaigns by week. Map Full Response to Item Update as well. The update lists the hidden fields that have a value, which keeps a record even if a column changes later.
Open the form’s link with UTM values in it, submit a test response and check the columns. Then open the plain link and submit another. That item has empty UTM columns, which is what your direct traffic looks like.
Read the board by campaign
Demo requests
New leads
| Name | Source | Medium | Campaign | Submitted | Lead status |
|---|---|---|---|---|---|
| Priya Nair | paid | spring-webinar | 2026-11-03 | Qualified | |
| Tom Beck | newsletter | spring-webinar | 2026-11-04 | New | |
| Lena Roth | 2026-11-04 | New |
- See one campaign. Filter the board on Campaign to list its leads.
- Compare sources. Add a chart to a dashboard and count items by Source. monday.com’s chart widget shows data from your boards.
- Count quality, not volume. Add a Lead status column of your own and leave it out of Data, so your team owns it. Filtering on Campaign and Lead status together shows which campaign brings leads worth calling.
- Spot direct traffic. Empty UTM columns mean the person used a link without UTM values.
Send one campaign to its own group
The text condition template can check a hidden field. Question lists it with (hidden field) after its name:
Account When a new entry in Form is received and only if the answer to Question Condition Text create an Item/Subitem in this Group/Item with this Data

Before you split a form this way, check what happens to each kind of lead. Each automation runs on its own, and every one that passes creates its own item:
| Setup | utm_medium=paid | utm_medium=email | No UTM values |
|---|---|---|---|
| One create template | One item | One item | One item |
| is paid, plus is not paid | Paid leads | The other group | No item |
| is paid, plus a create template | Two items | One item | One item |
If direct leads matter, keep the single create template and use the columns. Route with conditions only when you’re happy for a form to collect one campaign’s leads and nothing else.
contains matches whole words, and that’s why hyphens matter. spring matches spring-webinar, but it doesn’t match spring_webinar. Capitalization doesn’t matter. See Text conditions.
One item per response, or one per lead
A lead who comes back through a second campaign raises the usual attribution question: which campaign gets the credit?
| You want | Template | What the board shows |
|---|---|---|
| Every visit as its own row | Create an item | Two items for that lead, each with its own campaign |
| One row per lead, with the latest campaign | Update matching items, matched on Email, creating an item when nothing matches | One item. A new UTM value replaces the old one, and an empty one keeps it |
Hidden fields can’t be used for matching, so match on an answer such as Email. New items go to the board’s top group, so that template can’t sort leads into groups for you.
With the update template, the first campaign isn’t kept in a column. Map Full Response to Item Update, and each visit stays in the item’s updates, with its UTM values.
Forms embedded in monday.com don’t carry UTM values, so use public links for campaigns. See Embed a Tally form in monday.com. For everything else the app does, read the Tally monday.com integration guide.
Some screens shown on this site are illustrations, so yours may look a little different.
Frequently asked questions
Does Tally track UTM parameters automatically?
No. A value is saved when the form has a hidden field with the same name as the URL parameter. Add one for each parameter you want on the board. Read more →
What happens when someone opens the form without UTM values?
Their hidden fields stay empty. The create template still creates the item, and the UTM columns stay empty, so those rows are your direct traffic. Read more →
Can I send only some campaigns to the board?
Yes. The text condition template can check a hidden field with is, is not, contains or does not contain. A response with an empty hidden field doesn't pass, whichever condition you use. Read more →
Can I find an existing item by its campaign?
No. The update templates can't match on hidden fields. Match on an answer such as an email address, and map the hidden fields so the matched item gets the new values. Read more →
Do UTM values reach a form embedded in monday.com?
No. The app loads the form without URL parameters, so hidden fields stay empty for responses submitted in an item view or dashboard widget. Read more →
Start with the complete guide
Complete guideTally monday.com integration: the complete guide
How to send Tally form responses to monday.com, create or update items with conditions and hidden fields, and embed Tally forms in monday.
Read the guide →In the Help Center
- Use Tally hidden fields Map Tally hidden fields to monday.com columns, use them in text conditions and learn where they can't be used, such as matching and embedded forms.
- Run automations only for certain responses Use the condition templates to create items only when a Tally answer is a chosen option, meets a text rule or passes a number threshold you set.
- Field mapping and supported column types Which Tally question types the app sends to monday.com, which board columns each one can fill and how files, choices, dates and numbers are converted.
- Update existing items with Tally responses Match a Tally answer to a board column to update existing items or subitems instead of creating duplicates, and choose what happens when nothing matches.
- Create items from Tally responses Add a monday.com item for every Tally response, choose its group, map answers to columns and post the full response as an update on the new item.
More Tally guides
- Comparison
Tally to monday.com without Zapier: options compared
Compare Zapier, Make, your own webhook code and Tally Forms Automation for sending Tally responses to monday.com boards, by setup, upkeep and cost.
- How-to
Embed a Tally form in monday.com dashboards and items
Embed a Tally form on a monday.com dashboard or in every item, with no API key, then add an automation to get the answers onto your board.