Houston BPI Conference.
Click here for details about the Houston BPI Conference.
Click here for details about the Houston BPI Conference.
Click here for details about the TRAPS Conference.
Click here for details about the CA City Manager Conference.
Click here for details about the NY Assoc of Towns Conference.
Click here for details about the NC GFOA Conference.
Click here for details about the NCAZO Mid Winter Workshop.
Click here for details about the VLGMA Winter Conference.
Click here for details about the GFOAA Conference.
Click here for details about the NIGP Leadership Summit.
Click here for details about the CSMFO Conference.
Click here for details about the CA Public Works officers institute.
Click here for details about the Arizona GFOA (Cleargov match) Conference.
tag * ppcUrlCookiePart1 and ppcUrlCookiePart2 must be called — see bottom of script * Update ppcUrlCookiePart1 and ppcUrlCookiePart2 to match your querystring and form field names */ // Leave this as true to always use querystring values if they exist; // if no querystring, will attempt to get cookie values var ppcUseLatestValues = true; // Function to get cookie value function getCookie(param_name) { var i, x, y, cookie = document.cookie.split(";"); for (i = 0; i < cookie.length; i++) { x = cookie[i].substr(0, cookie[i].indexOf("=")); y = cookie[i].substr(cookie[i].indexOf("=") + 1); x = x.replace(/^\s+|\s+$/g, ""); if (x == param_name) { return unescape(y); } } } // Function to create cookie function setCookie(param_name, value, exdays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value = escape(value) + ((exdays == null) ? "" : "; domain=opengov.com; path=/; expires=" + exdate.toUTCString()); document.cookie = param_name + "=" + c_value; } // Function to check if cookie exists and, if not, grab value from URL and store it function checkCookie(param_name, param_url_name) { var param_value = getCookie(param_name); if ((param_value != null && param_value !== "" && param_value !== "undefined") && ppcUseLatestValues === false) { // cookie exists and we don't want to overwrite } else { var pageURL = window.location.search.substring(1); var URLVariables = pageURL.split('&'); for (var i = 0; i < URLVariables.length; i++) { var parameterName = URLVariables[i].split('='); if (parameterName[0] == param_url_name) { param_value = parameterName[1].split("#")[0]; } } if (param_value && param_value !== "undefined") { setCookie(param_name, param_value, 365); } } } // Store UTM & gclid cookies from querystring function ppcUrlCookiePart1() { var param_names = [ 'utm_source;utm_source', 'utm_medium;utm_medium', 'utm_campaign;utm_campaign', 'utm_adgroup;utm_adgroup', 'utm_term;utm_term', 'utm_content;utm_content', 'gclid;gclid' // ✅ Corrected: looks for ?gclid= in URL ]; for (var i = 0; i < param_names.length; i++) { var param_object = param_names[i].split(";"); checkCookie(param_object[0], param_object[1]); } } // Grab cookie value for form injection function mGetCookie(param_name) { return getCookie(param_name); } // Fallback for non-Marketo forms (uses getElementsByName) function mCheckCookie(param_name, param_field_name) { var param_value = mGetCookie(param_name); if (param_value != null && param_value !== "" && param_value !== "undefined") { try { var obj1 = document.getElementsByName(param_field_name); obj1[0].value = param_value; return true; } catch (err) { return false; } } return false; } // Fallback injection for non-Marketo forms function ppcUrlCookiePart2() { var param_names = [ 'utm_source;utm_source', 'utm_medium;utm_medium', 'utm_campaign;utm_campaign', 'utm_adgroup;utm_adgroup', 'utm_term;utm_term', 'utm_content;utm_content', 'gclid;Google Click ID' ]; for (var i = 0; i < param_names.length; i++) { var param_object = param_names[i].split(";"); mCheckCookie(param_object[0], param_object[1]); } } // Helper to get gclid from either cookie or _gcl_aw function getGclid() { var direct = getCookie('gclid'); if (direct) return direct; var gclAw = getCookie('_gcl_aw'); if (!gclAw) return null; var parts = gclAw.split('.'); return parts.length >= 4 ? parts[3] : null; } // 🔒 Always attempt to set cookies if params exist (even if not passed through nav) ppcUrlCookiePart1(); // ✅ When Marketo form is ready, inject values into correct field names try { MktoForms2.whenReady(function (form) { // Delay slightly in case cookies are still being set setTimeout(function () { const formValues = { 'utm_source__c': mGetCookie('utm_source'), 'utm_medium__c': mGetCookie('utm_medium'), 'utm_campaign__c': mGetCookie('utm_campaign'), 'utm_term__c': mGetCookie('utm_term'), 'utm_content__c': mGetCookie('utm_content'), 'Google_Click_ID__c': getGclid() }; console.log('[Injecting values into Marketo form]', formValues); form.setValues(formValues); }, 250); // Delay just in case async scripts slow cookie creation }); } catch (err) { // If error on Marketo form, try regular fallback ppcUrlCookiePart2(); }