Hi all,
My goal is to track the very first web page that a user visits, and store those utm values throughout all of the future visits until a lead form is submitted.
That way, if a person is retargeted, I can still attribute the very first visit as the source of the customer.
Right now, I am using this code that is provided by the Forms tool:
- <script type="text/javascript">
- function ZFLead(){
- }
- ZFLead.utmPValObj = ZFLead.utmPValObj || {};
- ZFLead.utmPNameArr = new Array('utm_source','utm_medium','utm_campaign','utm_term','utm_content','utm_customVar1');
- ZFLead.prototype.zfutm_getLeadVal = function(pName){
- var qStr = '';
- try{
- qStr = window.top.location.search.substring(1);
- } catch (e){
- qStr = '';
- }
- var pNameTemp = pName + '=';
- var pValue = '';
- if ( typeof qStr !== "undefined" && qStr !== null && qStr.length > 0 ){
- var begin = qStr.indexOf(pNameTemp);
- if ( begin != -1 ){
- begin = begin + pNameTemp.length;
- end = qStr.indexOf( '&', begin );
- if ( end == -1 ){
- end = qStr.length;
- }
- pValue = decodeURIComponent(qStr.substring( begin, end ));
- }
- }
- if (pValue == undefined || pValue == ''){
- pValue = this.zfutm_gC(pName);
- }
- return pValue;
- };
- ZFLead.prototype.zfutm_sC = function( paramName,path,domain,secure ){
- var value = ZFLead.utmPValObj[paramName];
- if ( typeof value !== "undefined" && value !== null ){
- var cookieStr = paramName + "=" + encodeURIComponent( value );
- var exdate=new Date();
- exdate.setDate(exdate.getDate()+7);
- cookieStr += "; expires=" + exdate.toGMTString();
- cookieStr += "; path=/";
- if ( domain ) {
- cookieStr += "; domain=" + encodeURIComponent( domain );
- }
- if ( secure ) {
- cookieStr += "; secure";
- }
- document.cookie = cookieStr;
- }
- };
- ZFLead.prototype.zfutm_ini = function (){
- for (var i = 0; i < ZFLead.utmPNameArr.length ; i ++){
- var zf_pN = ZFLead.utmPNameArr[i];
- var zf_pV = this.zfutm_getLeadVal(zf_pN);
- if ( typeof zf_pV !== "undefined" && zf_pV !== null ) {
- ZFLead.utmPValObj[ zf_pN ] = zf_pV;
- }
- }
- for (var pkey in ZFLead.utmPValObj) {
- this.zfutm_sC(pkey);
- }
- };
- ZFLead.prototype.zfutm_gC = function( cookieName ){
- var cookieArr = document.cookie.split('; ');
- for ( var i = 0 ; i < cookieArr.length ; i ++ ){
- var cookieVals = cookieArr[i].split('=');
- if ( cookieVals[0] === cookieName && cookieVals[1] ) {
- return decodeURIComponent(cookieVals[1]);
- }
- }
- };
- ZFLead.prototype.zfutm_gC_enc = function( cookieName ){
- var cookieArr = document.cookie.split('; ');
- for ( var i = 0 ; i < cookieArr.length ; i ++ ){
- var cookieVals = cookieArr[i].split('=');
- if ( cookieVals[0] === cookieName && cookieVals[1] ) {
- return cookieVals[1];
- }
- }
- };
- ZFLead.prototype.zfutm_iframeSprt = function () {
- var zf_frame = document.getElementsByTagName("iframe");
- for(var i = 0; i < zf_frame.length; ++i){
- if((zf_frame[i].src).indexOf('formperma') > 0 ){
- var zf_src = zf_frame[i].src;
- for( var prmIdx = 0 ; prmIdx < ZFLead.utmPNameArr.length ; prmIdx ++ ) {
- var utmPm = ZFLead.utmPNameArr[ prmIdx ];
- var utmVal = this.zfutm_gC_enc( ZFLead.utmPNameArr[ prmIdx ] );
- if ( typeof utmVal !== "undefined" ) {
- if(zf_src.indexOf('?') > 0){
- zf_src = zf_src+'&'+utmPm+'='+utmVal;
- }else{
- zf_src = zf_src+'?'+utmPm+'='+utmVal;
- }
- }
- }
- if ( zf_frame[i].src.length < zf_src.length ) {
- zf_frame[i].src = zf_src;
- }
- }
- }
- };
- ZFLead.prototype.zfutm_DHtmlSprt = function () {
- var zf_formsArr = document.forms;
- for ( var frmInd = 0 ; frmInd < zf_formsArr.length ; frmInd ++ ) {
- var zf_form_act = zf_formsArr[frmInd].action;
- if ( zf_form_act && zf_form_act.indexOf('formperma') > 0 ){
- for( var prmIdx = 0 ; prmIdx < ZFLead.utmPNameArr.length ; prmIdx ++ ) {
- var utmPm = ZFLead.utmPNameArr[ prmIdx ];
- var utmVal = this.zfutm_gC( ZFLead.utmPNameArr[ prmIdx ] );
- if ( typeof utmVal !== "undefined" ) {
- var fieldObj = zf_formsArr[frmInd][utmPm];
- if ( fieldObj ) {
- fieldObj.value = utmVal;
- }
- }
- }
- }
- }
- };
- ZFLead.prototype.zfutm_jsEmbedSprt = function ( id ) {
- document.getElementById('zforms_iframe_id').removeAttribute("onload");
- var jsEmbdFrm = document.getElementById("zforms_iframe_id");
- var embdSrc = jsEmbdFrm.src;
- for( var prmIdx = 0 ; prmIdx < ZFLead.utmPNameArr.length ; prmIdx ++ ) {
- var utmPm = ZFLead.utmPNameArr[ prmIdx ];
- var utmVal = this.zfutm_gC_enc( ZFLead.utmPNameArr[ prmIdx ] );
- if ( typeof utmVal !== "undefined" ) {
- if(embdSrc.indexOf('?') > 0){
- embdSrc = embdSrc+'&'+utmPm+'='+utmVal;
- }else{
- embdSrc = embdSrc+'?'+utmPm+'='+utmVal;
- }
- }
- }
- jsEmbdFrm.src = embdSrc;
- };
- var zfutm_zfLead = new ZFLead();
- zfutm_zfLead.zfutm_ini();
- if( document.readyState == "complete" ){
- zfutm_zfLead.zfutm_iframeSprt();
- zfutm_zfLead.zfutm_DHtmlSprt();
- } else {
- window.addEventListener('load', function (){
- zfutm_zfLead.zfutm_iframeSprt();
- zfutm_zfLead.zfutm_DHtmlSprt();
- }, false);
- }
- </script>
I tested this code, and I noticed that if it overwrites the existing utm variables if the user follows a new link with new utm variables.
I don't know javascript very well.
I am thinking that the solution to this would be to add 5 "first visit" custom variables in the form
Check if "first visit" have values, if no update, current utm values to "first visit", if yes update the standard utm values as well.
Is this the right idea?
Recent Topics
Drop Down Menu - Adding up values
I have a form that has 22 drop down fields each having a value of 0-10 to choose from. Is it possible to have it add up the total value of those selected numbers and have it tally it up in another field at the end? So example: if each of the 22 fields
Is Zoho Assist Secure Connect even practical for 1 person shop?
I was gun ho with Zoho Assist to replace my existing Remote Access product I have been using but I need to implement MFA on each unattended connection. Right now each of these connections in my other product has a rotating token that I have enter off
Change Last Name to not required in Leads
I would like to upload 500 target companies as leads but I don't yet have contact people for them. Can you enable the option for me to turn this requirement off to need a Second Name? Moderation update (10-Jun-23): As we explore potential solutions for
[Webinar] Conversational AI: The new paradigm for agentic analytics
From hard coding to powerful agents, data and analytics is undergoing a tectonic shift, and conversational agents are at the forefront of this transformation. This goes beyond democratizing business intelligence; it's about accelerating the path from
Setting checkbox value on template in Sign from Creator
Good day, Please help me understand how do I set a tick from a checkbox in Creator into a checkbox on a Sign template. Below is the only values on the Sign template and the code from Creator, "field_boolean_data": {}, "field_date_data": {}, "field_radio_data":
Cliq iOS can't see shared screen
Hello, I had this morning a video call with a colleague. She is using Cliq Desktop MacOS and wanted to share her screen with me. I'm on iPad. I noticed, while she shared her screen, I could only see her video, but not the shared screen... Does Cliq iOS is able to display shared screen, or is it somewhere else to be found ? Regards
How to Delete, Disable, or Remove Streams from the Mail App?
Is there a way to remove Streams from the mail app sidebar? I get too many notifications, it doesn't add any value to Zoho's functionality (especially since you can just make comments inside an email), and is distracting. I do not want notifications/alerts
Remove the mandatory Name Card buttons (or at least make them optional)
Please remove the mandatory Name Card buttons (or at least make them optional) A recent change to the Name Card in Zoho SalesIQ (currently affecting WhatsApp) introduced mandatory buttons before a visitor can provide their name. I believe this change
Zoho Wont Login
Can anyone tell me why my password stops logging in all the time? Is it a ploy to make you change your password? I have to use OTP all the time. I dont want to change passwords all the time. Over the last couple of years I've found myself using Zoho (as
Frustrated with Zoho Assist QuickSUpport
Trialling Zoho Assist and I have a variety of clients. A lot are computer illiterate. Some have poor vision. The current support sessions are using apps which have desktop icons for the appropriate apps. I either connect on demand then the client approves
What's New in Zoho Inventory | April & May 2026
Hello users, We're excited to roll out the latest Zoho Inventory updates for April and May 2026. These enhancements are designed to make your daily operations smoother and more efficient, from advanced inventory management and flexible pricing to automated
Gemini Action - Add "inineData" Support
Thank you guys for adding a Gemini action. I like Gemini models for the "grunt work" of AI, as they have the cheapest tokens of the trustworthy providers One thing that's missing in the action, though, is the ability to pass file data. If you pass a base64-encoded
HR Helpdesk Cases
We have Zoho One Enterprise. I'm trying to find HR Helpdesk Cases, but my UI does not match the documentation. I'm not sure how to move forward.
CRM x WorkDrive: We're rolling out the WorkDrive-powered file storage experience for existing users
Release plan: Gradual rollout to customers without file storage add-ons, in this order: 1. Standalone CRM 2. CRM Plus and Zoho One DCs: All | Editions: All Available now for: - Standalone CRM accounts in Free and Standard editions without file storage
Zoho CRM Copilot Connector
Hello, Are there plans to release a connector for Zoho CRM and Copilot? I'm in the early research stages of potentially switching our CRM solution to Microsoft Dynamics because of its out of the box integration with Copilot. The advantage being that we
Zoho Projects - Will there ever be a send email feature in Zoho Project?
Hi team, Are there plans to or will there ever be a sendemail feature in Zoho Projects, brining it in line with other similar platforms like Asana, ClickUp and Monday? I know that you can add comments via email to a specific task, but I believe this only
Introducing Microsoft Word Integration in Zoho Contracts
We are excited to announce a new feature that brings contract authoring and negotiation in your familiar environment — the Microsoft Word Integration. What This Integration Brings The Microsoft Word Integration connects Zoho Contracts with the Microsoft
Share Video Response Card ion Zobot
I am using the zobot codeless bot builder in SalesIQ. I want to share a video but delay the next response card until after the video has finished playing or has been stopped. Is this possible?
Customer image field
I created a custom image field for estimates, and it works as expected. The only issue I have is that I want to be able to place the custom image field in the estimate invoice. Is there a way I can do that, the field does not give the option to display
Sub Folders
It would be great if there could be sub-folders in reports. We have a ton of individual reports and folders that would be easier to navigate this way
Goals API - Zoho People
Hi Team, I would like to get the API details for retrieving organisation-wise Goals from Zoho People. Currently, I am able to retrieve individual employee goals using the following API: https://people.zoho.com/api/v3/performance/goal/{emp_id} However,
Question and responses disapear
I have a form where several people have had issues where the questions, responses or submission simply disappear when trying to complete the form. It seems to be random with no pattern of question, browser or OS. Hopefully there is a fix in the platform
Unable to send message;Reason:553 Relaying disallowed. Invalid Domain
Hi, Now when I try to reply to an email, I see the Unable to send message;Reason:553 Relaying disallowed. Invalid Domain voicemessagedownloader.com error. I tested sending an email when I set it up in the past and it worked. I have checked the Zoho Organization
Guide customers to the right booking page with routing forms
Greetings from the Zoho Bookings team! We're excited to introduce Routing Forms in Zoho Bookings. Routing forms let you collect information from customers before they schedule an appointment and automatically direct them to the most appropriate booking
Analytics Dashboard User Filters Default Value
User Filters on Dashboard do not allow Unknown to be set as a default filter value. I have to include NULL values in my dashboard among other values but I can't include NULL/Unknown by default in Dashboard User Filters.
Horrible download speed
Using a trial of Zoho Assist and downloading a 316 MB file on a 500/500 fibre connection to a remote computer on the same network took 7 mins to complete. On AnyDesk it took 1 min or so.
How to Backup Zoho to PST?
I'm looking for a simple way to backup Zoho Mail emails to PST format. I tried the IMAP method with Outlook, but it seems slow and complicated for large mailboxes. I need a solution that can: Export Zoho emails to PST Preserve attachments and folder hierarchy
Zoho Books | Product updates | August 2026
Hello users, July has been an exciting month for Zoho Books! This month, we're excited to introduce HTML PDF Templates, Placeholders as Pills, expanded approval workflows for Sales Returns and Journals, and significant compliance updates across the India,
Action required: WhatsApp now uses BSUID as the primary identifier
Important If your support team uses WhatsApp to engage with customers, there is an important platform change you need to know about. BSUID support is now mandatory for all WhatsApp Business Platform partners and businesses. WhatsApp is introducing usernames,
Tip #83- Give Customers a Faster Way to Reach You with the Quick Support Plugin – 'Insider Insights'
Hello Zoho Assist Community! Think about the last time a customer needed urgent support. They emailed in, waited for a response, got a session link, couldn't find it in their inbox, called back, and by the time the session actually started, a good chunk
Final Notice: Migrate Your ASAP Mobile SDK by August 31
Alert August 31, 2026 is the deadline. After this date, older ASAP Mobile SDK versions will no longer work with the ASAP Help Widget. If your app hasn't been migrated to a supported SDK version, users will no longer be able to access the ASAP Help Widget
Approval Process configuration is now more flexible and fully customizable
Hello everyone! Zoho CRM's Approval Process is back with a better user experience that makes it easier to add rules to your processes. This enhancement includes some UI updates that help you create highly structured approval stages—and more. Let's look
Kaizen #255 - Building a Real-Time Operational Dashboard with Zoho CRM Queries
Hello Everyone, Welcome back to another edition of the Kaizen series, where we uncover powerful ways to extend and customize Zoho CRM. In the previous Query Kaizens, we explored how Queries can retrieve CRM data, invoke REST APIs, and even update CRM
【Zoho CRM】キオスクに「ループ機能」が追加|同じ処理を繰り返し実行可能に
ユーザーの皆さま、こんにちは。 コミュニティグループの中野です。 Zoho CRMのキオスクに、同じ処理を繰り返し実行できる「ループ機能」が追加されました。 これまでは、同じ処理を複数回実行したい場合、同じ設定を繰り返し作成する必要がありました。 ループ機能を使うと、処理を一度設定するだけで、指定した回数や 取得したデータ数に応じて自動的に繰り返すことができます。 目次 ループ機能とは 設定方法 注意点 1. ループ機能とは ループ機能を使うと、キオスク内の画面や処理を指定した条件に応じて繰り返し実行できます。
Es posible cambiar el lenguaje de los modulos del ASAP?
Es posible cambiar el lenguaje de estos textos? Tengo Zoho configurado en español pero aun así me muestra estos textos en ingles:
Where do I edit the "Welcome to [portal name]" message
I am looking for a way to edit the "Welcome to" part of the message that is seen on the landing page (ex: https://help.zoho.com/portal/en/home). When I use the French interface, it doesn't make sense... I want to change it from "Bienvenue chez" to" Bienvenue au". Thanks!
Zoho ERP | Product updates | July 2026
Hello users, We're back with another round of updates to help you streamline your operations. This month's release brings new features and enhancements designed to help you work more efficiently. Read on to discover everything that's new in Zoho ERP this
Automate Backups
This is a feature request. Consider adding an auto backup feature. Where when you turn it on, it will auto backup on the 15-day schedule. For additional consideration, allow for the export of module data via API calls. Thank you for your consideration.
Shared Snippets Everyone
Hi, Now that the Shared Snippets have been released and I think will be the most used feature implemented in 2023 :) Creating and Using Snippets in Ticket Responses - Online Help | Zoho Desk Maintain consistency in ticket responses with shared snippets
Multi-currency and Products
One of the main reasons I have gone down the Zoho route is because I need multi-currency support. However, I find that products can only be priced in the home currency, We sell to the US and UK. However, we maintain different price lists for each. There
Next Page