We Power More Effective and Accountable Government
Government that operates efficiently, adapts to change, and strengthens public trust. Some people say this is boring. We think it’s the core of our democracy.
People in the U.S. receive digitalservices via OpenGov
2,000+
Agencies choose our software tobetter serve their communities
500+
Years of local and state governmentexperience on the OpenGov team
Why are we so passionate about local and state government?
Public service is personal — because when government falls short, communities feel it. We feel it when roads don’t get fixed, permits take months, or help comes too late. At OpenGov, we work to do something about that. We build the technology that local and state governments need to lead with speed, clarity, and accountability. If you believe better government is possible, don’t wait. Do something.
Why are we so passionate about local and state government?
Public service is personal — because when government falls short, communities feel it. We feel it when roads don’t get fixed, permits take months, or help comes too late. At OpenGov, we work to do something about that. We build the technology that local and state governments need to lead with speed, clarity, and accountability. If you believe better government is possible, don’t wait. Do something.
With a vision to bring high-performance government to every community in America, our team is passionate about and proud of what we do. We hire the best people to share their talents with us—and, more importantly, our customers.
Want to join the mission?
With a vision to bring high-performance government to every community in America, our team is passionate about and proud of what we do. We hire the best people to share their talents with us—and, more importantly, our customers.
We started with a team of visionary Stanford entrepreneurs and a lawyer in a shipping container in Afghanistan. OpenGov CEO and Co-founder Zac Bookman was serving on the Anti-Corruption Task Force in Kabul, while back at home cities across California had gone bankrupt after the Great Recession in part due to old, broken systems.
Our mission to power more effective and accountable government inspired early customers and luminary investors like Marc Andreessen, John Chambers, Laurene Powell Jobs, Scott Cook, and others who saw the potential to strengthen our country and our society.
In 2024, OpenGov partnered with Cox Enterprises to realize a shared vision for high performance government for every community in the U.S. Today, OpenGov helps 2,000 communities leverage AI and automation to become more strategic, responsive, resilient, and efficient.
There has never been a better time to innovate for the public good.
OpenGov wasn't born in a boardroom.
We started with a team of visionary Stanford entrepreneurs and a lawyer in a shipping container in Afghanistan. OpenGov CEO and Co-founder Zac Bookman was serving on the Anti-Corruption Task Force in Kabul, while back at home cities across California had gone bankrupt after the Great Recession in part due to old, broken systems.
Our mission to power more effective and accountable government inspired early customers and luminary investors like Marc Andreessen, John Chambers, Laurene Powell Jobs, Scott Cook, and others who saw the potential to strengthen our country and our society.
In 2024, OpenGov partnered with Cox Enterprises to realize a shared vision for high performance government for every community in the U.S. Today, OpenGov helps 2,000 communities leverage AI and automation to become more strategic, responsive, resilient, and efficient.
There has never been a better time to innovate for the public good.
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();
}