Tally.so Conversion Tracking — 7 Methods (Google Tag Manager & JS)

Photo of Macbook Pro with a browser with a Tally form and conversion tracking for Google Ads, Google Analytics and Meta Pixel

Tally Forms Conversion Tracking — Google Ads, GA4, Faceook / Meta Pixel & Google Tag Manager

Do you use Tally forms on your website? Do you need to add conversion tracking and analytics where the tally form submission is a conversion? If ou would like to measure in tools like Google Ads, Google Analytics, MetaPixel, MetaConversions API, TikTok, LinkedIn ads this post covers important key principles.

Tally is the best form builder in 2025

If you chose Tally, congratulations.

Tally is superior to Typeform, HubSpot forms, and Jotforms.

Typeform may cost $1000+ per year.

Tally has an unlimited free version and offers:

  • better product

  • prepopulated hidden fields (I can’t believe Typeform does not have this)

  • form field values via JavaScript postMessage which opens up better conversion-tracking methods

  • more intuitive conditional logic

  • option to have one or many fields per page

  • adding unique form submission ID as a thank you page URL parameter

  • You can even add custom CSS and Javascript so you’re less likely to get stuck on some random issue that comes up 5 years from today

Enough memes. Let’s talk conversion tracking.

Levels of Tracking

👉 Most important part.

Conversion tracking isn't binary — on/off like a light switch.

Tracking has levels like restaurants. It can taste like crap and give you food poisoning. Or be a 3-star Michelin experience.

Tracking by a $200 Upwork freelancer 👇

Tracking by conversiontracking.io 👇

Tally conversion tracking screenshot from Google Ads - correct implementation - conversion status active, recording conversions, last activity today, enhanced conversions active, and imported data quality excellent, with A/B testing

(Notice my setup using 3 different methods for comparison, and choosing the most accurate one as the Google Ads primary conversion.)

Results?

How well tracking is implemented affects what percentage of your Tally submissions are tracked.

The screenshot below👇 shows the same Tally Google Ads conversion with two different methods.

Two different methods - Tally Google ads conversion.

Both are good methods and are implemented correctly.
The first one is better. And more expensive.

Levels of Tally Tracking — Examples:

  1. Bad: Having a “Where did you hear about us”? dropdown in Tally

  2. Still Bad: Random UpWork freelancer adding subdomain and GTM to Tally for cross-domain tracking and no idea what they are doing

  3. Ok: redirect to thank-you page tracking with Google Analytics 4 and import conversions (now “key events”) to Google Ads

  4. Good: iFrame embed postMessage JS Listener Google Ads tag and Facebook / Meta Pixel event in Google Tag Manager

  5. Fantastic: iFrame embed postMessage JS Listener with Enhanced conversion tracking and Meta Pixel advanced matching

  6. Next-level iFrame postMessage JS, Enhanced Conversions, Advanced Matching, prepopulating conversion info like IP, user agent, click ID’s, UNIX time stamps to Tally hidden fields, offline conversion tracking with Enhanced Conversions for Leads and Meta Pixel & Meta Conversions API with conversions deduplicated with the Tally submission ID + tracking Tally page progress as micro-conversions and in a GA4 funnel

  7. God-tier: +adding server-side cookies without “cname cloaking” (e.g. Cloudflare + worker) to make Apple Intelligent Tracking Prevention trust the same IP address for make cookies last 2 years instead of 24h, OR adding back cookies from local storage OR server-side fingerprinting

Why Tracking Tally Is Difficult?

Tally is a fantastic tool. I truly love it. And if you head over to my contact page, you see I’m using Tally myself ❤️

However, like all iFrame widgets, Tally is difficult to track. This is not Tally’s fault, but just the way how browsers work when we have a widget from another domain embedded inside to our website.

If there were an easy way to get reliable tracking through this cross-domain funnel, Tally would implement it for you. But Tally cannot add code all over your website.

Tally doesn't know:

  • if you track TikTok, LinkedIn or some new platform that came out yesterday

  • if you take payments via Stripe and use a conversion goal like Purchase

  • or if you don’t use payments and prefer an event like generate_lead

  • or maybe a custom event like tally_form_submit.

  • Or if you have a form with multiple endings, some taking payments some not

  • or if you’ll use Meta conversions API or do Google Ads enhanced conversion tracking, or offline conversion tracking—which all require different setups

  • If you use Google Analytics, Fathom Analytics, PostHog Web Analytics, Plausible Analytics, Simple Analytics…

If Tally tried to support every possible combination they would do nothing but code these integrations every day and still not have all available.

The problem is that proper Tally forms conversion tracking requires code added to every page of your website, not just to the page with Tally. So Tally is unable to do that for you.

Paperform, HubSpot form, Jotform and Typeform all have the same challenge.

However, Tally is much better than those other tools because Tally JavaScript messages output better data about conversions and other actions like navigating pages within Tally, which makes it possible to set up our conversions even if we have to do that ourselves.

At least perfect conversion tracking is possible (without API’s and client+server hybrid hassle) and Tally does not have annoying restrictions on form field values like Typeform’s JS messages do.

Why you need Conversion tracking?

If you know which ads work, you can spend your budget on those ads. And when you see an ad not working, you can just pause the ad and save all that money.

Conversion Tracking Makes Meta’s and Google’s AI Work for You (Instead of Against You).

I recently wrote a blog post about this and I believe it's one of the most important blog posts to read to fully understand that conversion tracking is not just so you can understand which ad works and which doesn't.

Another purpose of conversion tracking is to turn Google and Facebook AIs into your allies that work 24/7 with the smartest tools ever built— every minute trying their best to get you more conversions for a cheaper price.

The greatest feature ever built is conversion (instead of a click or impression) as a goal for an ad.

Tally forms conversion tracking, conversion goals in Facebook Business Manager.
Tally forms conversions allow automated bidding strategies in Google Ads including maximized conversions and maximized conversion value.

If you do a print ad on the side of a bus, you cannot measure how many clients you get. With websites it's possible.

But now imagine the bus would learn exactly what sort of people look at the ads and convert, and the bus changing its route automatically to find more customers like that.

That’s what conversion tracking does.

Before you Start

Before you start implementing your tally forms, connecting domains and adding tracking, I'll point out that I do not recommend having Tally outside your website

  • The best methods work when you embed the Tally iframe inside your website.

  • 99% of the time you do not install any tracking inside Tally, but you do almost everything within Google Tag Manager of your website.

  • Tally Pro version is not needed for conversion tracking although I do recommend it for other reasons.

  • You do not need to connect a domain or subdomain into Tally.

The reason I mention these first is because a lot of people who get in touch regarding Tally conversion tracking have spent a lot of time connecting their subdomain and even adding Google Tag Manager inside Tally and they are excited about the progress they’ve made… and understandably disappointed when I have to mention that all that work was unnecessary and counterproductive—meaning we probably need to remove the code they have spent a long time adding.

All right. Let’s dig in. Here are the 7 Ways to Track Tally Forms conversions:

1) The thank you page redirect

A common way to track embedded iframe conversions such as tally forms is to use the redirect to a custom thank you page. Personally, I am not a fan of this method. It's kind of like an old-school trick old marketers use, but it has tons of problems.

The method starts by adding a redirect in tally form settings and creating a thank you page on your website.

In Google Tag Manager you would use a page view trigger filtering for the specific URLs.

screenshot Tally forms conversion tracking, Google Tag Manager, custom trigger, page view, where page URL contains thank-you

The way it works is that visitors land on your website, example.com. The tally, which is an iframe and cannot be tracked directly, is asked to redirect visitors to a custom thank you page like example.com/thank-you

And on the thank you page you use a page view trigger based on the URL to send conversions to Google Analytics, Google Ads, Meta, Pixel and other ad platforms.

While it is fairly simple to set up, the reasons I do not like it are listed below.

❌ Thank you page tracking may track unreliable

1) It's possible that people find your thank you page through another route like a search engine. Tracking conversions for random visitors is a bad idea. I have had people find pages on conversiontracking.io that I have not linked anywhere. So you probably need HTML meta tags to exclude robots like Google, but still in theory it is possible someone finds it.

2) The thank you page may send new conversions for each page refresh. And unfortunately, people do refresh the thank you page. So one conversion shows up as two or three conversions messing up your data. One of the reasons why I think this happens is that mobile devices often reload the previous page when you launch iPhone Safari again for example.


❌ Tally field values are difficult to get with the thank you page

For accurate conversion tracking, we need field values like the email, phone number, name, address, etc. from the Tally form submission. We need these for MetaPixel Advanced Matching and Google Ads Enhanced Conversion Tracking among others. These are absolutely must-haves. Without them, your tracking will be inaccurate.

❌ PII issues

If you manage to get the Tally URL parameters working and parsed, unfortunately that just leads into more problems. In Google Tag Manager it's quite easy to use a URL parameter and add the tally form fields into the URL. However, this is in conflict with Google Analytics terms and conditions regarding personally identifiable information so it is strictly forbidden.

screenshot - Google Analytics personally identifiable information, terms and conditions forbid us from adding email, phone number or name into redirect URL parameters.

It is possible to use Google Tag Manager. Trim Query and send a different URL to Google Analytics that has been cleaned up, but that's annoying extra work without any benefit.

Facebook / Meta Pixel, however, is more difficult because we cannot specify the URL it uses. It's always going to use the real one. So we actually would need to remember our URL with the URL parameters from tally form submission, store that as a variable, edit our page URL without a refresh and only then fire our Metapixel. It is really complicated.

❌ Thank you page tracking leads to “Unwanted referrals”

Because the tally redirect is fired from within the iframe or tally outside your example.com, the referrer, meaning the previous website where the visitor came from, will include tally.so.

Screenshot of Google Analytics 4: Unwanted referral of tally form submission due to Thank You Page Redirect conversion tracking method.

Annoyingly, Google Analytics will often mistake this for the traffic source where the user came from, messing up your GA4 traffic reports. The visitor did not arrive from tally. It was only a detour but Google Analytics doesn't always understand that. There is a way to exclude unwanted referrals in Google Analytics settings or by adding a parameter in Google Tag Manager but that is annoying extra work again.

❌ Thank you pages become difficult to manage

You need to create and manage these thank you pages on your website. Also, you have to exclude them from search engines so people do not get there by accident. If you have multiple tally forms you may need multiple thank you pages or if you use one, if you change something you have to edit that in multiple places. You might forget to do that and things may break. It's unreliable and way too much hassle.

Overall I do not recommend the thank you page method and I never use it myself.

After all that, your tracking setup starts to look like this👇 and you’re right to beging questioning if there’s a better way.

2) iFrame JavaScript message

The iframe JavaScript message listener works by adding the tally form inside your website as an iframe embed. In Google Tag Manager or a custom JavaScript tag on your website, we add a listener which, as the name says, listens for JavaScript messages coming through our embeds. When we hear the distinct message tally sends with the form submission, we push that to Google Tag Manager, a data layer which triggers a custom event that we can use to fire up our conversion tags in Google Tag Manager and send conversions to Meta, Pixel, Google Ads, Google Analytics, LinkedIn and others.

The flowchart -Tally form conversion tracking using JavaScript post message API, listener, data layer and Google Tag Manager custom events

✅ There are no duplicates because this only happens once per conversion

✅ We get the Tally form submission ID which can be used for a Facebook Pixel Event ID and Google Ads Transaction ID.

✅ There are no unwanted referrals because we do not redirect through Tally.

✅ There are no pages to manage, no redirects to set up, no URL parameters to configure.

✅ We are compliant with Google Analytics terms and conditions because the URLs never contain anyone's personal information like phone number or email address

✅ We can even do offline conversion tracking where we measure if this lead became a paying customer later in the real world. This is because tally outputs email field which we can tie with for example Google Ads Click ID. So we can later tell Google Ads if the lead purchased something even if it happens outside our website.

✅ No cross-domain funnels required.

✅ No coding in tally needed.

✅ Works with any Tally plan including free plan

✅ This is the best way to track Tally.so form conversions.

Code examples for Tally iFrame JavaScript message listeners

Here’s a cross-browser-compatible code that establishes a foundation for listening to messages from embedded Tally forms. It ensures your tracking works across different browsers by adapting to their specific event-handling methods.

var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

Security’s always super important when handling form data. This simple check ensures that only messages from Tally.so are processed, protecting your site from potential security vulnerabilities through message spoofing.

if (e.origin !== "https://tally.so") {
    return;
}

🔑 The key — the event name you should be listening for is Tally.FormSubmitted.

if (dataParsed.event == "Tally.FormSubmitted")

3) iFrame JavaScript message + field values

Unlike competitors like JotForm or TypeForm, Tally is absolutely terrific because it actually provides all the field values through the JavaScript message. We have full access to the name, email, phone number and every field we have created in our tally form.

Tally form's conversion tracking screenshot of Google Chrome console showing the iframe, JavaScript messages, JSON with Tally form field value

We can parse the JSON message and get the full JavaScript object with these values. We can then push them to our Google Tag Manager data layer with the conversion event, which can be used in Facebook Pixel Advanced Matching, and Google Ads Enhanced Conversion Tracking. In Google Ads, we use the user-provided data variable, and with Meta / Facebook Pixel we use data layer variables with the MetaPixel custom template.

Google Ads enhanced conversion tracking

I've written another blog post about Google Ads enhanced conversion tracking which you can check here.

In a nutshell, Enhanced conversion tracking makes your numbers more accurate. Tracks more conversions leads to cheaper ads that perform better.

Not using enhanced conversions tracks less conversions.

Basically, instead of only relying on cookies, which may disappear because cookies are not reliable, Apple will remove them, devices are switched, Incognito is used, etc. Enhanced conversion tracking matches logged in Google users with your tally conversions. If same email address clicks on an ad and converts, Google can measure a conversion even if cookies fail, which they often do.

We can use the JavaScript message to send first-party data like email and phone numbers from Tally submissions into Google Ads and make our conversion tracking more accurate, boosting our ad performance and lowering ad costs. And also having more accurate return on ad spend numbers.

Bonus points for never again receiving one of these really annoying emails!

Jokes aside, Google is absolutely right in spamming you via email until enhanced conversion tracking is implemented because it benefits you as an advertiser, it benefits Google and it benefits your customers. You really should do it if you run any ads with a budget more than a few dollars per month.

In Google Tag Manager we need the user provided data variable linked to our Google Ads conversion tag.

Google Tag Manager tally forms Google Ads enhanced conversion tracking user provided data variable with data layer variables.

❤️ To take things to a next level we can create different conversions depending on what fields they chose within Tally. For example, imagine you have a digital marketing agency and you use Tally for new customer leads. You could have a different conversion depending on the monthly ad spend the user picked.

A higher monthly ad budget is a more valuable Tally conversion for you and with this conversion tracking method, we could make a separate conversion in Google Ads and in MetaPixel and Google Analytics for each of them.

The tally drop-down above could lead to an advanced Google Ads dashboard like this.

Tally forms advanced conversion tracking method. Separate Google Ads conversions depending on the field values.

Also —if your Tally form asks questions like:

Advanced tally forms conversion tracking using a separate conversion depending on field value chosen.

“Is this solar panel installation for…”

  • a house

  • an apartment

  • a business?

…you could send the field value to Google Analytics and have a report on the numbers of each, including the traffic sources and the specific ads that brought these users to your website.

4) iFrame message + API enhancement

Another method is to use the iframe JavaScript message to send a conversion and then use a tool like make.com or Zapier to send a conversion enhancement from Tally API to Google Ads API.

Screenshot example of a Teleforms, Google Ads, Conversion Enhancement using Make.com.

Screenshot of make.com - Google Ads conversions - upload a conversion enhancement and hybrid-client server-side advanced conversion tracking method for Tally forms

Notice the challenge of different fields included or missing requiring separate routes.

This is in my opinion not a good method for tally specifically. For other tools like Typeform or Fotform or Acuity Scheduling it can be the only way to get the perfect Google Ads enhance conversion tracking With all first-party data points.

But tally is kind enough to provide this data via the website in the front end so we do not need to pay for Zapier every month or deal with this extra hassle.

I only mentioned it because it is a method that works and can be used and I want to list all the methods.

4) Extra bonus - Tracking steps inside Tally

The JavaScript iframe messages include when someone clicks to the next tally page. Using JavaScript iframe listeners in Google Tag Manager we can measure each step as a micro-conversion or a pre-conversion

In JavaScript listener you'll base page tracking on "Tally.FormPageView" event.

 if (data.event === "Tally.FormPageView")

In Google Analytics 4 we can create a custom exploration funnel. We can see the drop-off rates. We can make comparisons for organic traffic versus paid traffic. Compare mobile versus desktop. And understand how changes to our tally form affect the conversion rate and drop-off rate.

Let's imagine you switch from having all the Tally fields on one page to separating them to five different pages. Now you could compare if the final conversion rate is better for another design or maybe you make your form easier to fill by removing some fields and now see a conversion rate go up for that specific page or for your Tally form fully.

You can also use the tally page steps as micro conversions. These are useful if you get less than, say, 30 conversions per month because MetaPixel and Google Ads AI algorithms require conversion data to understand your audience and who to show you. Show your ads too. Conversion data makes your ads perform better and your ads cheaper.

But if you do not get that many full tally form submit conversions every month, then you may use a microconversion like getting to step 4 on your tally form if you get enough of those because more data will teach the algorithms. More effectively even if it's not the full final conversion.

Here’s a great article on how powerful micro-conversions can be.

5) Pre-Populate Hidden Tally Fields

I’m building a custom app which remembers traffic source info in local storage and passes it to Tally.

Tally forms advanced conversion tracking method passing UTM URL parameters into hidden fields for conversions API tracking.

So we would make note of what was the previous website where they came from, are there UTM parameters in the URL, was there a Google Ads Click ID, Meta Ads Click ID, Microsoft Bing Ads Click ID, are there Meta Pixel or Click Cookies, which pages they visited and for how long.

Tally Conversion Tracking Screenshot Using Hidden Fields in Tally which can be pre-populated with UTM parameters, Google Click ID, Referrer, Facebook Click ID, Unix Timestamp, Meta Cookies and others.

What's super cool about this most advanced analytics system is seeing things like people finding your website through an AI tool like ChatGPT and knowing inside Tally how did this specific person find you.

Advanced tally forms conversion tracking with an automatic "where did you hear about us" hidden field UTM pre-population analytics app

And then we use a very advanced app in JavaScript to pass this information into our Tally.

Tally forms & Facebook/Meta Conversions API

The meta pixel suffers tremendously from stuff like ad blockers. If you run ads on meta platforms like Facebook and Instagram and you rely only on the pixel in the browser., your conversion data will be pretty terrible.

Meta Conversions API (or CAPI as it’s usually called) allows us to send conversion data behind the scenes where it cannot be blocked.

Snippet from Meta documentation:

“Using the Conversions API for website events can help you:

  • Improve connectivity, reducing cost per result. Data from the Conversions API is less impacted than the Meta Pixel by browser loading errors, connectivity issues and ad blockers. When you use the Conversions API alongside the pixel, it creates a more reliable connection that helps the ad delivery system decrease your cost per result.

  • Optimize ads for later customer journey actions.These events include post-purchase actions (e.g., subscriptions), in-store actions, and customer scores. This information helps the system show your ads to customers who are more likely to generate value for your business.

  • Improve measurement. The Conversions API can help you better measure ad performance and attribution across the customer journey, from discovery to conversion. This helps you better understand how digital advertising impacts both online and offline results.

  • Increase event matching reducing cost per result. Matched events are events that can be attributed to accounts on Meta technologies. They help you deliver ads to people who are more likely to take the action you care about and attribute those actions back to your ads. With the Conversions API, you can include additional customer information parameters that help increase matched events and your event match quality. Learn how to view and how to improve your event match quality.”

The bonus is that we can send the tally form information like name, email, phone number, and we can include the extra information we have passed through the hidden tally fields like MetaClick ID, even IP address, Facebook pixel and Facebook click cookies, a Unix timestamp Etc.

This is a really advanced conversion tracking setup, but it's one your competitors probably do not use, which will make your meta ads significantly cheaper and perform better, as meta AI knows who to show your ads to and who not to, making and saving you money.

The cost per conversion decreases with each data point we can send. And we don't have to worry about Apple Intelligent Tracking Prevention or ad blockers.

The best setup uses both browser and server events with the same Tally submission ID. Facebook uses event ID to duplicate so you won’t get multiple conversions for one form submit.

Methods to pass UTM’s, gclids, referrers to Tally hidden fields

This is a very complicated topic. I have a solution I've been working on for many years but it's beyond the scope of a blog post.

Method one: Generate iframe dynamically with JavaScript.

This is an easier approach, however it has a lot of problems. In a nutshell, it will not always work and if it doesn't work, people cannot convert and that is a disaster.

I used to generate the tally iframe widget with the javascript by having an HTML placeholder where the iframe is generated with a custom URL which has the UTMs, gclid and other parameters in the iFrame src -attribute.

I stopped using this method when ina project I noticed a bug Tally’s dynamic resizing system which essentially hid the submit button fully for a multi-page widget and prevented anyone from submitting the form.

Weirdly this was only happening with a dynamically generated iFrame and in a complex WordPress environment it was not practical to debug. I did not want to take responsibility for high-risk bugs as we can’t contact Tally customer support with a custom embed.

Method two: Flash URL parameters in the parent page temporarily

Tally inherits URL parameters from the parent window. It's possible to create a custom JS app that “flashes” the parameters in your URL temporarily without a refresh, right before your Tally widget loads using

window.history.replaceState

The method requires years of patches and updates to cover all edge cases, like Squarespace admin infinite refresh loop or WordPress infinitely growing URLs until the browser breaks. The method also prevents internal anchor scrolling links from working for the Tally page in Chrome unless we use a custom JS hack to replace it, but that’s something I can live with.

Benefits

✅ Bypass ad blockers And track more reliably.

✅ Prevent Apple Intelligent Tracking Prevention from Blocking Conversions.

✅ Do offline conversion tracking by sending Google Click ID of a paying customer to Google Ads if they convert in the real world.

✅ Know where each form submission came from without having to ask “Where did you hear about us?”

✅ Understand user behavior and intent. If you know which blog post they read first, you have an idea on what they are after and which organic SEO content performs best.

✅ No cross-domain funnels required.

✅ Works with any Tally plan including free plan

6) Offline conversion tracking

99% of the time Tally conversion is not the final conversion where someone becomes a paying customer, just a step closer.

We can track offline conversions even if they happen outside our website. Like a Zoom call where someone buys our service.

I mentioned offline conversion tracking a couple of times with the JavaScript message method and the hidden field pre-population.

Offline conversion tracking is the “highest level” of tracking from the sense that you can

  1. measure vanity metrics like clicks and impressions

  2. you can improve your tracking by measuring the actual form submissions,

  3. but then you can go even further and measure how many actually become paying customers. Ideally, you track a funnel and track each step in Google Ads, Google Analytics and Meta Pixel and understand the drop-off rate of each step.

Method 1) Google Click ID import

The classic way to do offline conversion tracking with Google Ads is to store the Google Click ID and pass it into our CRM, in this case the Tally form. For this you need the method 5 mentioned above.

screenshot Tally forms conversion trackin - passing Google Ads click gclid identifier into a hidden field in Tally from a URL parameter

We can then upload the offline conversion to Google Ads using a Google Sheet file upload method, a Google Sheet sync method, or the Google Ads API, which I recommend.

Method 2) Enhanced conversions for leads

Enhanced Conversions for Leads is a new way to track offline conversions in Google Ads. The naming is confusing. We should not mix Enhanced conversions for leads with enhanced conversions.

Enhanced conversions for leads does not match logged in users of Google, Gmail, Google Drive, YouTube, etc. like enhanced conversions

Enhanced conversions for leads connects the Google click ID with the user's email on Google's side so we can send an offline conversion without storing the Google Click ID ourselves.

The method has the potential to make things easier. But because it’s new it has bugs. In Feb 2025 using enhanced conversions for leads user-provided data event in Google Tag Manager makes other Google Ads conversions say FAILED.

Screenshot: Google Tag Manager Tally Forms Google Ads Offline Conversion Tracking with Enhanced Conversions for Leads methd Tag Failed Bug 2025

Happens even on a fresh new blank website with nothing but a perfect GTM. Weird. Will need to contact Google Ads Support.

The gclid upload method is safer until the bug is understood or fixed. The bug is not specific to Tally but happens with any conversion

7) Built-in Google Analytics and Google Tag Manager

It's also possible to install Google Tag Manager inside Tally. With this setup you would have a different Google Tag Manager on your website and a different one in Tally. I do not really recommend this method because the biggest challenge in Tally forms conversion tracking is that the tracking cookies or local storage information is not shared between your website and Tally.

So even if you feel like you are sending conversions from Tally to Google Ads and Google Analytics, Meta, Pixel, etc. It's most likely missing the information of the original click and that way the conversions are orphaned in a way where you just measure how many form submissions you received, not how many conversions you got from a specific ad campaign.

It is possible to configure the built-in tracking to work using cross-domain funnels. For example, going to Google Analytics and setting up your domains or adding multiple domains into the conversion linker tag in Google Tag Manager.

Tally forms conversion tracking screenshot. Google Tag Manager conversion linker tag with a cross domain funnel linking multiple domains

❗ Note that using The built-in.methods will most likely only work if you do not embedTally inside your website, but if you instead do a cross-domain funnel where you have a link from your website to tally. The reason is the conversion linker cross-domain funnel for example is not able to decorate a URL of an iframe embed Like it does for outbound cross-domain links. because iFrames doesn't have a “link”.

Bonus Round: Methods You Should Not Use

For a bonus round let's cover a few solutions I've seen clients use or try to use which you should not do. I recommend not wasting your time attempting these Tally tracking methods.

1) Bad Method: Facebook / Meta Conversions API Events with make.com / Zapier

I've seen some people attempt to just send the conversion via tally to Facebook conversions API.

Tally conversion tracking with make.com facebook conversions API.

The idea is good, but it doesn’t work.

It would first require the traffic source information pre-population into hidden Tally fields from the method — (5) Conversion Data Into Hidden Tally Fields covered above, which requires cookies or Local Storage. Adding in the Facebook click ID, Unix timestamp and any other information you can get like IP address, landing page, and conversion URL, It makes this solution possible, but it doesn't work without advanced custom JavaScript added into your website.


2) Bad Method: Google Tag Manager Form Triggers

Tally is a form, so why not just go to Google Tag Manager triggers and use the form submission trigger?

On the surface the idea makes sense. Tally is indeed a form. However, the problem is that from a technical point of view, Tally is a form on another website. It’s a form inside tally.so. It looks like it's a form inside your website, but if you view the source code, it's not.

The tally form is an iframe on another domain Making Google Tag Manager form submit triggers ineffective

And tally.so doesn't have the same Google Tag Manager your website has. Or even if you would use the same GTM, they are not connected to the same window and the cookies are not shared.

Your website doesn't have the permission to access the Tally iFrame for the same reason I don't have the permission to access your Facebook account or online banking website, even if I would embed facebook.com inside my website as iFrame like Tally.

Screenshot - Google Tag Manager Form submit trigger does not work on an iframe such as Tally forms

Google Tag Manager form submit triggers simply do not know anything happening inside Tally, because it's essentially on a different website, even if visually it doesn't seem that way.

Platforms

Browser Pixels

The same basic Tally tracking principles apply to Google Analytics 4, Google Ads, MetaPixel, TikTok Pixel, LinkedIn Insight Tag, Microsoft or Bing Ads, UET Tag, Twitter or X Pixel, Reddit Pixel, Pinterest Pixel, Snapchat Pixel and any others.

As long as you can get the conversion trigger using Google Tag Manager inside your website, it's fairly straightforward to send your conversion data using Google Tag Manager templates or default tags.

However, I think it's a good idea to check Attribution → Path metrics And make sure the window is at least long enough based on this data.

APIs

For any API solution like Google Ads, Meta Conversions API (CAPI), TikTok API etc you will need to use method 5 above and prepopulate click IDs, timestamps, and other information into hidden fields in Tally.

Tally forms API conversions example in make.co

Then you can connect the Tally API to any ad or conversion APIs you want to use, e.g. with make.com, Zapier, n8n or custom coding a CloudFlare worker.

Tally Forms Google Ads Conversion Setup

screenshot of Tally forms Google Ads conversion action settings including primary action, conversion value, conversion count, conversion click-through window

When making the Google Ads conversion settings for your Tally conversion, you usually pick Tally as a primary action, which means Google Ads will try and get as many of these as possible in your campaigns.

Tally is not e-commerce so usually we do not know the conversion value yet. However, if a client is worth $1,000 and 50% of people buy, you could set the Google Ads Tally conversion value at $500.

Count is almost always one conversion. If same user submits the tally form thousand times, it is not more valuable than them submitting it one time. In fact, it's probably the opposite. If you take payments via Tally/Stripe connection, then every conversion is valuable. And you should pick every as your account.

The click-through conversion window is a tricky one. I recently spent a day researching this topic and I didn't yet find high-quality information. My question is why not always set it to maximum of 90 days? Some sources say the Google Ads algorithm learns faster if you have a tighter window, but I didn't find official sources.

Tally Forms Google Ads Conversion Settings, Attribution, Average Days to Conversion, and Click-through Conversion Window

Tally Google Ads Custom Columns

If you have more than one conversion goal in Google Ads, I recommend creating custom columns for each. Looking purely at conversions column which may include Google Ads phone calls, purchases, appointments, sometimes weird stuff like Google Maps navigation instructions, etc with all those together is confusing.

You want to see each Google Ads conversion goal like Tally Form Submit, clearly and separately as its own column.

Tally forms Google Ads conversion - custom columns tutorial.

Tally Forms, Facebook Facebook / Meta Pixel and CAPI

Validating and testing

Use the Meta Pixel Helper Chrome Extension to make sure Tally Facebook Pixel events work correctly.

For more accurate testing, with CAPI and ad blockers and such go to Facebook Business Manager at business.facebook.com/events_manager2 → Data Sources → Test events

Screenshot - Facebook Business Manager Data Source Test Events to validate Tally Form Meta Pixel and Conversions API CAPI Tracking Events

❗ Make sure to disable ad blockers for your domain when testing with Pixel Helper or Test events (unless you specifically want to test CAPI-Pixel deduplication with ad blockers).

Meta Event Names?

When implementing Meta Pixel tracking for Tally forms, picking proper event names is important. Here are the recommended event names to choose from

Primary Events (Common)

  • Lead - Most common. If your Tally submission is a new lead for your business pick this.

    • “When a sign-up is completed.”

  • Contact - Better if Tally is more of a contact form than a lead form e.g. when visitors reach out for information. Works for inquiry forms or consultation requests.

    • “When a person initiates contact with your business via telephone, SMS, email, chat, etc.

Additional Events (Sometimes)

  • Purchase - If your Tally has Stripe and takes payments, use Purchase and plug in value and currency parameters.

Less Common but Optional:

  • SubmitApplication - Maybe for longer forms like job applications or program registrations

    • “When a registration form is completed.”

  • Subscribe - E.g. for newsletter signups or subscription-based services

    • ”When a person applies to a start a paid subscription for a product or service you offer.”

  • StartTrial - If offering free trials through your forms

    • ”When a person starts a free trial of a product or service you offer.”

Remember:

  • I recommend using standard events rather than custom conversions - they start showing faster. For custom events, you need to turn them into custom conversions manually

  • Use different conversions for different forms to distinguish different conversions, like a lead form and a newsletter form. Requires GTM triggers with filters using data layer variable based on Tally JavaScript message content

  • Custom conversion metrics won't show meaningful numbers until you actively use them in ad campaigns which is annoying because we’d love to use them as Tally page funnel micro conversions

Want a Pro to Track Tally in a way which makes competitors cry?

✌️That’d be conversiontracking.io.

📧 Get in touch here.

Next
Next

Google Analytics 4 AI Report