istio-envoy
tcp/443 tcp/80
Open service 2a02:26f0:3500:14::1724:a24c:80 · plangrid-dev.planfront.net
2026-01-23 03:39
HTTP/1.1 301 Moved Permanently Location: https://plangrid-dev.planfront.net/ Server: istio-envoy Vary: Accept-Encoding Content-Length: 0 Date: Fri, 23 Jan 2026 03:39:38 GMT Connection: close
Open service 2a02:26f0:3500:14::1724:a258:80 · plangrid-dev.planfront.net
2026-01-23 03:39
HTTP/1.1 301 Moved Permanently Location: https://plangrid-dev.planfront.net/ Server: istio-envoy Vary: Accept-Encoding Content-Length: 0 Date: Fri, 23 Jan 2026 03:39:38 GMT Connection: close
Open service 23.53.43.89:443 · plangrid-dev.planfront.net
2026-01-23 03:39
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate,no-cache, no-store, must-revalidate
Content-Security-Policy: frame-ancestors 'self' *.zoom.us *.optimizely.com *.optimizelyedit.com go.pardot.com
Content-Type: text/html; charset=utf-8
ETag: W/"f5f48b72bb027e1a2d841e1c4717b024"
Expires: 0
Pragma: no-cache
Rerouted-From: plangrid-dev.planfront.net-dev
Rerouted-To: planweb-dev
Rerouting-Rule: default
Server: istio-envoy
Strict-Transport-Security: max-age=63072000; includeSubDomains
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Envoy-Upstream-Service-Time: 8
X-Frame-Options: SAMEORIGIN
X-Request-Id: 4ee511c8-7bbb-4dc9-9a4a-185fb7e84ce3
X-Runtime: 0.005745
X-Xss-Protection: 1; mode=block
Date: Fri, 23 Jan 2026 03:39:16 GMT
Content-Length: 34740
Connection: close
Set-Cookie: _planweb_session=QnhZY1ZBNWJsWnFWU08vY1N5OFZaWUNhbFRJUUhhK1VzSXJiL2tLQkhwbFR4b3dwUzJHR1kzVnc1NGlucUtodk02dmhEM0w5YlY4eDFkSFVnams2MDNYMGEybVlDSTdva1c4d1hPNHFuT1dkMm1GNURQcTFVYVkxNzMyWVBzUTIxeWdZczZjNE9HSzNsRjdJai8zcmJPTVloWUZJVE5NTFlKZXJyZ2EyTHpESXZaVndVbG1MQXVvb2FQTG9kOVZFLS1ORjVzaFp5NjRHQThxR2oxUmpreWd3PT0%3D--c4e61a7f98496a5bb89b49d66bb7cd04d5731fda; path=/; HttpOnly
Page title: PlanGrid - the construction app that works for you.
<!DOCTYPE html>
<html>
<head>
<!-- Segment snippet v4.1.0 -->
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on", "addSourceMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
function removeResetPasswordTokenFromPayload({ payload, next }) {
const re = /(reset-password)\/(.{8}-.{4}-.{4}-.{4}-.{12})$/g;
function replaceReferrer(obj) { obj.referrer = obj.referrer.replace(re, '$1/password-token'); }
function replacePath(obj) { obj.path = obj.path.replace(re, '$1/password-token'); }
function replaceUrl(obj) { obj.url = obj.url.replace(re, '$1/password-token'); }
if (payload.type() === "page")
{
if (payload.obj.context.page.path.match(re)) replacePath(payload.obj.context.page);
if (payload.obj.context.page.referrer.match(re)) replaceReferrer(payload.obj.context.page)
if (payload.obj.context.page.url.match(re)) replaceUrl(payload.obj.context.page)
if (payload.obj.properties.path.match(re)) replacePath(payload.obj.properties);
if (payload.obj.properties.referrer.match(re)) replaceReferrer(payload.obj.properties);
if (payload.obj.properties.url.match(re)) replaceUrl(payload.obj.properties);
}
next(payload);
};
analytics.addSourceMiddleware(removeResetPasswordTokenFromPayload);
analytics.load("65z751kouu");
analytics.page();
}}();
</script>
<title>PlanGrid - the construction app that works for you.</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Log in to your PlanGrid construction management app. Easily share plans, markups, photos, and reports with the entire project team no matter where you are.">
<link rel="canonical" href="https://app.plangrid.com/" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="8zkfPXhtlizmqCzjEZSujAwJK4QfFvfNx1hytObifdEt7ZVAvDYoj8Z5lHtssUhtWGpsEME+BLuov8bCt1WLcw==" />
<link href="" rel='preconnect' crossorigin>
<link href="https://photos.planfront-assets.net" rel='preconnect' crossorigin>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41152083-4', 'auto');
ga('send', 'pageview');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-145-974-4726"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-145-974-4726');
</script>
<link rel="stylesheet" media="screen" href="/assets/manifests/application-58b7d83492a8573f64a0b19c425dce7c1adec163c100f8da4fbaea7ba393f4a2.css" />
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="google
Open service 2a02:26f0:3500:14::1724:a24c:443 · plangrid-dev.planfront.net
2026-01-23 03:39
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate,no-cache, no-store, must-revalidate
Content-Security-Policy: frame-ancestors 'self' *.zoom.us *.optimizely.com *.optimizelyedit.com go.pardot.com
Content-Type: text/html; charset=utf-8
ETag: W/"98cb26b4a8f4f0a4701845e29081e095"
Expires: 0
Pragma: no-cache
Rerouted-From: plangrid-dev.planfront.net-dev
Rerouted-To: planweb-dev
Rerouting-Rule: default
Server: istio-envoy
Strict-Transport-Security: max-age=63072000; includeSubDomains
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Envoy-Upstream-Service-Time: 8
X-Frame-Options: SAMEORIGIN
X-Request-Id: 94b1fd9f-f093-41a8-8d44-b803fa033a48
X-Runtime: 0.005709
X-Xss-Protection: 1; mode=block
Date: Fri, 23 Jan 2026 03:39:17 GMT
Content-Length: 34740
Connection: close
Set-Cookie: _planweb_session=Y1FmRkxvNHdDSDdJR0k4Nm1sUkh2cjlVOXZ3MW9tcjZnNzZNcSs3a09ZQWRmM2QwRGt1TXhWTVpoZUM5WUthMnBIeExRWGcrV3JnZ0hoRE9NaU9DNDNpZFFSYzhaSUorbHNqK0RoYjVpbHVTbjNpdGFMbFdjWmdxaUlyMWJmcnRlM0U4WjFpMTByc20rTDhJaGtENUlkYlBoUCtOY1lMbTJ2d2xJRzRSQjhXOTlDZ1lNM3Z4RjFneDVuVWlTS1YyLS1mZlI3dVljelpFVVZ0cllvSkE1T3hBPT0%3D--201bb2ada7e503e897c0b92cb900a0c7cce2e88e; path=/; HttpOnly
Page title: PlanGrid - the construction app that works for you.
<!DOCTYPE html>
<html>
<head>
<!-- Segment snippet v4.1.0 -->
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on", "addSourceMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
function removeResetPasswordTokenFromPayload({ payload, next }) {
const re = /(reset-password)\/(.{8}-.{4}-.{4}-.{4}-.{12})$/g;
function replaceReferrer(obj) { obj.referrer = obj.referrer.replace(re, '$1/password-token'); }
function replacePath(obj) { obj.path = obj.path.replace(re, '$1/password-token'); }
function replaceUrl(obj) { obj.url = obj.url.replace(re, '$1/password-token'); }
if (payload.type() === "page")
{
if (payload.obj.context.page.path.match(re)) replacePath(payload.obj.context.page);
if (payload.obj.context.page.referrer.match(re)) replaceReferrer(payload.obj.context.page)
if (payload.obj.context.page.url.match(re)) replaceUrl(payload.obj.context.page)
if (payload.obj.properties.path.match(re)) replacePath(payload.obj.properties);
if (payload.obj.properties.referrer.match(re)) replaceReferrer(payload.obj.properties);
if (payload.obj.properties.url.match(re)) replaceUrl(payload.obj.properties);
}
next(payload);
};
analytics.addSourceMiddleware(removeResetPasswordTokenFromPayload);
analytics.load("65z751kouu");
analytics.page();
}}();
</script>
<title>PlanGrid - the construction app that works for you.</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Log in to your PlanGrid construction management app. Easily share plans, markups, photos, and reports with the entire project team no matter where you are.">
<link rel="canonical" href="https://app.plangrid.com/" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="t6Br7APT1mOEcPLI13+NB+IT/k+pJ9KQmcK2BzIBNXJoK07DF0FKVz2mSBoOwa7w2AVhG7EJAP9I4tDInffA3A==" />
<link href="" rel='preconnect' crossorigin>
<link href="https://photos.planfront-assets.net" rel='preconnect' crossorigin>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41152083-4', 'auto');
ga('send', 'pageview');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-145-974-4726"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-145-974-4726');
</script>
<link rel="stylesheet" media="screen" href="/assets/manifests/application-58b7d83492a8573f64a0b19c425dce7c1adec163c100f8da4fbaea7ba393f4a2.css" />
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="google
Open service 23.53.42.232:443 · plangrid-dev.planfront.net
2026-01-23 03:39
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate,no-cache, no-store, must-revalidate
Content-Security-Policy: frame-ancestors 'self' *.zoom.us *.optimizely.com *.optimizelyedit.com go.pardot.com
Content-Type: text/html; charset=utf-8
ETag: W/"39b063865a4729ffc252b4fa2e7088bf"
Expires: 0
Pragma: no-cache
Rerouted-From: plangrid-dev.planfront.net-dev
Rerouted-To: planweb-dev
Rerouting-Rule: default
Server: istio-envoy
Strict-Transport-Security: max-age=63072000; includeSubDomains
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Envoy-Upstream-Service-Time: 8
X-Frame-Options: SAMEORIGIN
X-Request-Id: 9121cff6-c76f-4e97-9870-44bc54820c0d
X-Runtime: 0.005633
X-Xss-Protection: 1; mode=block
Date: Fri, 23 Jan 2026 03:39:16 GMT
Content-Length: 34740
Connection: close
Set-Cookie: _planweb_session=YWpNYis2YnpnZ2dHWmdmOEczMTg1UVdGVHM0aWJaTW5OeE0xSFhoMFE1R3Q5VFg1S1JpUGNYaEFSZnozenBVdkxNcFBHUGtJN0YrNnhLVTlDSXJ4bHJwQzQ2RzFhQTZxVFozc3lvWFo1azN6V0tiaEhNeXFCSDNONlpJL2ZlbTE3T1BSdDVFZ1hBaUl2d05tQk5oRDdpN2JVVlFmMm5Qa2FZU3dKUTB4RmNBS0p0QitBUnJBbS84UzhVOTJVSnB1LS1pTkNmandwVzhtaE5mKzdvWVhnc1RnPT0%3D--a447d1aa5aecf1d5e73c170c7674013a72429482; path=/; HttpOnly
Page title: PlanGrid - the construction app that works for you.
<!DOCTYPE html>
<html>
<head>
<!-- Segment snippet v4.1.0 -->
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on", "addSourceMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
function removeResetPasswordTokenFromPayload({ payload, next }) {
const re = /(reset-password)\/(.{8}-.{4}-.{4}-.{4}-.{12})$/g;
function replaceReferrer(obj) { obj.referrer = obj.referrer.replace(re, '$1/password-token'); }
function replacePath(obj) { obj.path = obj.path.replace(re, '$1/password-token'); }
function replaceUrl(obj) { obj.url = obj.url.replace(re, '$1/password-token'); }
if (payload.type() === "page")
{
if (payload.obj.context.page.path.match(re)) replacePath(payload.obj.context.page);
if (payload.obj.context.page.referrer.match(re)) replaceReferrer(payload.obj.context.page)
if (payload.obj.context.page.url.match(re)) replaceUrl(payload.obj.context.page)
if (payload.obj.properties.path.match(re)) replacePath(payload.obj.properties);
if (payload.obj.properties.referrer.match(re)) replaceReferrer(payload.obj.properties);
if (payload.obj.properties.url.match(re)) replaceUrl(payload.obj.properties);
}
next(payload);
};
analytics.addSourceMiddleware(removeResetPasswordTokenFromPayload);
analytics.load("65z751kouu");
analytics.page();
}}();
</script>
<title>PlanGrid - the construction app that works for you.</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Log in to your PlanGrid construction management app. Easily share plans, markups, photos, and reports with the entire project team no matter where you are.">
<link rel="canonical" href="https://app.plangrid.com/" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="QgmWlN3J3dU5w8qY3bF6h/jSxIRokiwM19JCDUSZaX/HTejnFLvfvHWipkyvh9sVYoUBvaErlje8RWFWsdHUmQ==" />
<link href="" rel='preconnect' crossorigin>
<link href="https://photos.planfront-assets.net" rel='preconnect' crossorigin>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41152083-4', 'auto');
ga('send', 'pageview');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-145-974-4726"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-145-974-4726');
</script>
<link rel="stylesheet" media="screen" href="/assets/manifests/application-58b7d83492a8573f64a0b19c425dce7c1adec163c100f8da4fbaea7ba393f4a2.css" />
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="google
Open service 23.53.42.232:80 · plangrid-dev.planfront.net
2026-01-23 03:39
HTTP/1.1 301 Moved Permanently Location: https://plangrid-dev.planfront.net/ Server: istio-envoy Vary: Accept-Encoding Content-Length: 0 Date: Fri, 23 Jan 2026 03:39:37 GMT Connection: close
Open service 2a02:26f0:3500:14::1724:a258:443 · plangrid-dev.planfront.net
2026-01-23 03:39
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate,no-cache, no-store, must-revalidate
Content-Security-Policy: frame-ancestors 'self' *.zoom.us *.optimizely.com *.optimizelyedit.com go.pardot.com
Content-Type: text/html; charset=utf-8
ETag: W/"ddbb84b6f23e98fd2a144d0733f9e8f4"
Expires: 0
Pragma: no-cache
Rerouted-From: plangrid-dev.planfront.net-dev
Rerouted-To: planweb-dev
Rerouting-Rule: default
Server: istio-envoy
Strict-Transport-Security: max-age=63072000; includeSubDomains
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Envoy-Upstream-Service-Time: 8
X-Frame-Options: SAMEORIGIN
X-Request-Id: 5b0584df-3a67-4804-8b2b-f873cb978320
X-Runtime: 0.006088
X-Xss-Protection: 1; mode=block
Date: Fri, 23 Jan 2026 03:39:16 GMT
Content-Length: 34740
Connection: close
Set-Cookie: _planweb_session=UXV0cEI0SVRVSUNIZ3NMYmdIWEdVNkhKOXJ3bVZBSzNYVURKbjRNVHJRSHR0cjh4bGRIaFBHeU5iOGJtT1ZMUVlrZThrK3Qwem5kaXAwZTBDZDdVRkNIU0ZISEN4MzA4UHdRdWpuZDRtdVhGRGF3cnRVMVpKOTJ2cWpaOVNKR1pMUVJRTGVnODNOUEpHbUxwQ2FQSVE5VjdrVG5hZ2d3ZmYxYmxPa3Z6QmJISStNSytnWW5mbG5hRGtTN3dYS3ZzLS15MXNIaVNGUE9ORDFPZVpYT3JFSW5BPT0%3D--8e41bc82c703d8891f3e95c10e2e8cbfaa485300; path=/; HttpOnly
Page title: PlanGrid - the construction app that works for you.
<!DOCTYPE html>
<html>
<head>
<!-- Segment snippet v4.1.0 -->
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on", "addSourceMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
function removeResetPasswordTokenFromPayload({ payload, next }) {
const re = /(reset-password)\/(.{8}-.{4}-.{4}-.{4}-.{12})$/g;
function replaceReferrer(obj) { obj.referrer = obj.referrer.replace(re, '$1/password-token'); }
function replacePath(obj) { obj.path = obj.path.replace(re, '$1/password-token'); }
function replaceUrl(obj) { obj.url = obj.url.replace(re, '$1/password-token'); }
if (payload.type() === "page")
{
if (payload.obj.context.page.path.match(re)) replacePath(payload.obj.context.page);
if (payload.obj.context.page.referrer.match(re)) replaceReferrer(payload.obj.context.page)
if (payload.obj.context.page.url.match(re)) replaceUrl(payload.obj.context.page)
if (payload.obj.properties.path.match(re)) replacePath(payload.obj.properties);
if (payload.obj.properties.referrer.match(re)) replaceReferrer(payload.obj.properties);
if (payload.obj.properties.url.match(re)) replaceUrl(payload.obj.properties);
}
next(payload);
};
analytics.addSourceMiddleware(removeResetPasswordTokenFromPayload);
analytics.load("65z751kouu");
analytics.page();
}}();
</script>
<title>PlanGrid - the construction app that works for you.</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Log in to your PlanGrid construction management app. Easily share plans, markups, photos, and reports with the entire project team no matter where you are.">
<link rel="canonical" href="https://app.plangrid.com/" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="0JYWOz9w5DT5Ahj0gGQy5P8Ogi/wkyKo9YoLTx4kwCq8GIg+yJP/Z6SvZlik3t1cWeYhO7+THASs4Bo35pzjGg==" />
<link href="" rel='preconnect' crossorigin>
<link href="https://photos.planfront-assets.net" rel='preconnect' crossorigin>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41152083-4', 'auto');
ga('send', 'pageview');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-145-974-4726"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-145-974-4726');
</script>
<link rel="stylesheet" media="screen" href="/assets/manifests/application-58b7d83492a8573f64a0b19c425dce7c1adec163c100f8da4fbaea7ba393f4a2.css" />
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="google
Open service 23.53.43.89:80 · plangrid-dev.planfront.net
2026-01-23 03:39
HTTP/1.1 301 Moved Permanently Location: https://plangrid-dev.planfront.net/ Server: istio-envoy Vary: Accept-Encoding Content-Length: 0 Date: Fri, 23 Jan 2026 03:39:37 GMT Connection: close
Open service 2a02:26f0:3500:14::1724:a24c:80 · plangrid-dev.planfront.net
2026-01-05 03:21
HTTP/1.1 301 Moved Permanently Location: https://plangrid-dev.planfront.net/ Server: istio-envoy Vary: Accept-Encoding Content-Length: 0 Date: Mon, 05 Jan 2026 03:21:59 GMT Connection: close
Open service 2a02:26f0:3500:14::1724:a258:443 · plangrid-dev.planfront.net
2026-01-05 03:21
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate,no-cache, no-store, must-revalidate
Content-Security-Policy: frame-ancestors 'self' *.zoom.us *.optimizely.com *.optimizelyedit.com go.pardot.com
Content-Type: text/html; charset=utf-8
ETag: W/"5ee1e25ce06ea329334bbe39a4b8efaf"
Expires: 0
Pragma: no-cache
Rerouted-From: plangrid-dev.planfront.net-dev
Rerouted-To: planweb-dev
Rerouting-Rule: default
Server: istio-envoy
Strict-Transport-Security: max-age=63072000; includeSubDomains
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Envoy-Upstream-Service-Time: 8
X-Frame-Options: SAMEORIGIN
X-Request-Id: b43157a7-4ae8-4a70-bc9a-ed2759d901ab
X-Runtime: 0.005711
X-Xss-Protection: 1; mode=block
Date: Mon, 05 Jan 2026 03:21:55 GMT
Content-Length: 34740
Connection: close
Set-Cookie: _planweb_session=NEdBYm1ab2lFemxQSlg5enp2TnNRT0JvSktTb2JCazJtalloSGRFbDJjU0s0eFVFN3I0UE45ZUE1Z1l1YUR3d3A2UVR0K01uV216aW9qRmhTUWlUYnlZOUJMTDQ0UVUydUpxdWtqWUV1ZGtoTFRWb01kTU5PdTZMa3V5d1I0eVdHZG5QbXdYK0VkRmRhTGFQTnN3OHRqMTZ3NjBqMEd3dUJScENVVnMvejd5N3IxU3ZrRHM3NUU2cDk4ZFRkRTdMLS04MDRwL25RMGx1YmNrSWt4RVZ2bFV3PT0%3D--03dcec97c4b6c67661fb9c970632ac661b596025; path=/; HttpOnly
Page title: PlanGrid - the construction app that works for you.
<!DOCTYPE html>
<html>
<head>
<!-- Segment snippet v4.1.0 -->
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on", "addSourceMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
function removeResetPasswordTokenFromPayload({ payload, next }) {
const re = /(reset-password)\/(.{8}-.{4}-.{4}-.{4}-.{12})$/g;
function replaceReferrer(obj) { obj.referrer = obj.referrer.replace(re, '$1/password-token'); }
function replacePath(obj) { obj.path = obj.path.replace(re, '$1/password-token'); }
function replaceUrl(obj) { obj.url = obj.url.replace(re, '$1/password-token'); }
if (payload.type() === "page")
{
if (payload.obj.context.page.path.match(re)) replacePath(payload.obj.context.page);
if (payload.obj.context.page.referrer.match(re)) replaceReferrer(payload.obj.context.page)
if (payload.obj.context.page.url.match(re)) replaceUrl(payload.obj.context.page)
if (payload.obj.properties.path.match(re)) replacePath(payload.obj.properties);
if (payload.obj.properties.referrer.match(re)) replaceReferrer(payload.obj.properties);
if (payload.obj.properties.url.match(re)) replaceUrl(payload.obj.properties);
}
next(payload);
};
analytics.addSourceMiddleware(removeResetPasswordTokenFromPayload);
analytics.load("65z751kouu");
analytics.page();
}}();
</script>
<title>PlanGrid - the construction app that works for you.</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Log in to your PlanGrid construction management app. Easily share plans, markups, photos, and reports with the entire project team no matter where you are.">
<link rel="canonical" href="https://app.plangrid.com/" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="voxtEtrbFJaLiXGWlILeJaOJUnrnQZn2o7BIFzCgjkhg2zqhVHl1Srxq5PSKk7XkaUlJPCbXpeL+TDNcoPIlnA==" />
<link href="" rel='preconnect' crossorigin>
<link href="https://photos.planfront-assets.net" rel='preconnect' crossorigin>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41152083-4', 'auto');
ga('send', 'pageview');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-145-974-4726"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-145-974-4726');
</script>
<link rel="stylesheet" media="screen" href="/assets/manifests/application-440d8674f5426bbd37aa4f53f38024d26d0ac0f2f939f2701758e0adc15870b3.css" />
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="google
Open service 2.16.1.242:443 · plangrid-dev.planfront.net
2026-01-05 03:21
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate,no-cache, no-store, must-revalidate
Content-Security-Policy: frame-ancestors 'self' *.zoom.us *.optimizely.com *.optimizelyedit.com go.pardot.com
Content-Type: text/html; charset=utf-8
ETag: W/"50929526946fd299a4582cc6af2bbce9"
Expires: 0
Pragma: no-cache
Rerouted-From: plangrid-dev.planfront.net-dev
Rerouted-To: planweb-dev
Rerouting-Rule: default
Server: istio-envoy
Strict-Transport-Security: max-age=63072000; includeSubDomains
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Envoy-Upstream-Service-Time: 7
X-Frame-Options: SAMEORIGIN
X-Request-Id: 9556d716-2da7-41a4-bdf5-992849b4b103
X-Runtime: 0.005502
X-Xss-Protection: 1; mode=block
Date: Mon, 05 Jan 2026 03:21:56 GMT
Content-Length: 34740
Connection: close
Set-Cookie: _planweb_session=ODVPT2p6eDE0SUxUQnllZTFwWmIyYWJFQTYrMUZwd01rTWhENkZiQXRPZmEyTElTMFBFL2QxaWl4TWZPQWJYOWQ5VDkxUU9mNDNQWFpvOUc1WkF0QTdaVnBZbG0weGNXd0RWa3dSRlhTTFgxZEs3YzRkSE82Y01OMHRoYkRLT0o0UkEvWFp3T0R1OEtDZUtEQTdoY2k4YWIvUnQxdnZCcXNGWnVFWlRIWWVGWjc3bXFHWHV4UHJzdDFwRGgrakJKLS1nUFBIelUzWUE0K3p2c24zdE80TnBBPT0%3D--d7bc78427b7fcfe464003054571400e92ff63ad3; path=/; HttpOnly
Page title: PlanGrid - the construction app that works for you.
<!DOCTYPE html>
<html>
<head>
<!-- Segment snippet v4.1.0 -->
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on", "addSourceMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
function removeResetPasswordTokenFromPayload({ payload, next }) {
const re = /(reset-password)\/(.{8}-.{4}-.{4}-.{4}-.{12})$/g;
function replaceReferrer(obj) { obj.referrer = obj.referrer.replace(re, '$1/password-token'); }
function replacePath(obj) { obj.path = obj.path.replace(re, '$1/password-token'); }
function replaceUrl(obj) { obj.url = obj.url.replace(re, '$1/password-token'); }
if (payload.type() === "page")
{
if (payload.obj.context.page.path.match(re)) replacePath(payload.obj.context.page);
if (payload.obj.context.page.referrer.match(re)) replaceReferrer(payload.obj.context.page)
if (payload.obj.context.page.url.match(re)) replaceUrl(payload.obj.context.page)
if (payload.obj.properties.path.match(re)) replacePath(payload.obj.properties);
if (payload.obj.properties.referrer.match(re)) replaceReferrer(payload.obj.properties);
if (payload.obj.properties.url.match(re)) replaceUrl(payload.obj.properties);
}
next(payload);
};
analytics.addSourceMiddleware(removeResetPasswordTokenFromPayload);
analytics.load("65z751kouu");
analytics.page();
}}();
</script>
<title>PlanGrid - the construction app that works for you.</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Log in to your PlanGrid construction management app. Easily share plans, markups, photos, and reports with the entire project team no matter where you are.">
<link rel="canonical" href="https://app.plangrid.com/" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="EOLr4Jnm6f8wYRygXQv2R6Io046TckoJ+AqJaRAJC3+vwELHIcjwNdm9idePHopdJGugGYRC/8czjgmEtCGa9w==" />
<link href="" rel='preconnect' crossorigin>
<link href="https://photos.planfront-assets.net" rel='preconnect' crossorigin>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41152083-4', 'auto');
ga('send', 'pageview');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-145-974-4726"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-145-974-4726');
</script>
<link rel="stylesheet" media="screen" href="/assets/manifests/application-440d8674f5426bbd37aa4f53f38024d26d0ac0f2f939f2701758e0adc15870b3.css" />
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="google
Open service 2.16.1.138:80 · plangrid-dev.planfront.net
2026-01-05 03:21
HTTP/1.1 301 Moved Permanently Location: https://plangrid-dev.planfront.net/ Server: istio-envoy Vary: Accept-Encoding Content-Length: 0 Date: Mon, 05 Jan 2026 03:21:58 GMT Connection: close
Open service 2.16.1.242:80 · plangrid-dev.planfront.net
2026-01-05 03:21
HTTP/1.1 301 Moved Permanently Location: https://plangrid-dev.planfront.net/ Server: istio-envoy Vary: Accept-Encoding Content-Length: 0 Date: Mon, 05 Jan 2026 03:21:58 GMT Connection: close
Open service 2.16.1.138:443 · plangrid-dev.planfront.net
2026-01-05 03:21
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate,no-cache, no-store, must-revalidate
Content-Security-Policy: frame-ancestors 'self' *.zoom.us *.optimizely.com *.optimizelyedit.com go.pardot.com
Content-Type: text/html; charset=utf-8
ETag: W/"59038d9b1a19fda05f50d37470c53777"
Expires: 0
Pragma: no-cache
Rerouted-From: plangrid-dev.planfront.net-dev
Rerouted-To: planweb-dev
Rerouting-Rule: default
Server: istio-envoy
Strict-Transport-Security: max-age=63072000; includeSubDomains
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Envoy-Upstream-Service-Time: 6
X-Frame-Options: SAMEORIGIN
X-Request-Id: 2aa25925-1f40-4f9a-aed2-c8dd27b1b82f
X-Runtime: 0.004212
X-Xss-Protection: 1; mode=block
Date: Mon, 05 Jan 2026 03:21:55 GMT
Content-Length: 34740
Connection: close
Set-Cookie: _planweb_session=YzRKS05OSlRzbVFHSm5ZdjRCY1hYWGtoTkFhRjI0Y1kxMWpZMS9hRkh6KzUvTDhXMXhlN2VSM1hocEswZ05kUldlZm9JUHBwaWJNYTlSVmNOdlE0MjJwUTR0cnR6ZDA5dER2eXdXSkpCNFlmbjJXQ0FKVlJNUDVXVFhiMWJNc0ViemZwdzk4R0JyYnNDWXZidUJXQjRqRlo3dE10Syt2N2FVbmYzQ1plUGVHMmllbFdoUk5kMFI3bGkxSU5HMmJULS1lakFhSEcyZmJpQjhtV0dmOUhKWVNRPT0%3D--cf24547d4beedcc6ddd283a5f2529e30fbd94727; path=/; HttpOnly
Page title: PlanGrid - the construction app that works for you.
<!DOCTYPE html>
<html>
<head>
<!-- Segment snippet v4.1.0 -->
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on", "addSourceMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
function removeResetPasswordTokenFromPayload({ payload, next }) {
const re = /(reset-password)\/(.{8}-.{4}-.{4}-.{4}-.{12})$/g;
function replaceReferrer(obj) { obj.referrer = obj.referrer.replace(re, '$1/password-token'); }
function replacePath(obj) { obj.path = obj.path.replace(re, '$1/password-token'); }
function replaceUrl(obj) { obj.url = obj.url.replace(re, '$1/password-token'); }
if (payload.type() === "page")
{
if (payload.obj.context.page.path.match(re)) replacePath(payload.obj.context.page);
if (payload.obj.context.page.referrer.match(re)) replaceReferrer(payload.obj.context.page)
if (payload.obj.context.page.url.match(re)) replaceUrl(payload.obj.context.page)
if (payload.obj.properties.path.match(re)) replacePath(payload.obj.properties);
if (payload.obj.properties.referrer.match(re)) replaceReferrer(payload.obj.properties);
if (payload.obj.properties.url.match(re)) replaceUrl(payload.obj.properties);
}
next(payload);
};
analytics.addSourceMiddleware(removeResetPasswordTokenFromPayload);
analytics.load("65z751kouu");
analytics.page();
}}();
</script>
<title>PlanGrid - the construction app that works for you.</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Log in to your PlanGrid construction management app. Easily share plans, markups, photos, and reports with the entire project team no matter where you are.">
<link rel="canonical" href="https://app.plangrid.com/" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="mODaSBnHTaqpxaybl8kho6ZWn3u9y9VnvqHBl6LaJCYJnRTMNkLidZSCU44TI9zjqBlLfTJWAsO/aRgOz+llhQ==" />
<link href="" rel='preconnect' crossorigin>
<link href="https://photos.planfront-assets.net" rel='preconnect' crossorigin>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41152083-4', 'auto');
ga('send', 'pageview');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-145-974-4726"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-145-974-4726');
</script>
<link rel="stylesheet" media="screen" href="/assets/manifests/application-440d8674f5426bbd37aa4f53f38024d26d0ac0f2f939f2701758e0adc15870b3.css" />
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="google
Open service 2a02:26f0:3500:14::1724:a24c:443 · plangrid-dev.planfront.net
2026-01-05 03:21
HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate,no-cache, no-store, must-revalidate
Content-Security-Policy: frame-ancestors 'self' *.zoom.us *.optimizely.com *.optimizelyedit.com go.pardot.com
Content-Type: text/html; charset=utf-8
ETag: W/"dcc3b491ccdcb50637dda9d18c4814d1"
Expires: 0
Pragma: no-cache
Rerouted-From: plangrid-dev.planfront.net-dev
Rerouted-To: planweb-dev
Rerouting-Rule: default
Server: istio-envoy
Strict-Transport-Security: max-age=63072000; includeSubDomains
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Envoy-Upstream-Service-Time: 7
X-Frame-Options: SAMEORIGIN
X-Request-Id: 82cecb40-a62a-9469-94ec-61eca9ebf8ff
X-Runtime: 0.004595
X-Xss-Protection: 1; mode=block
Date: Mon, 05 Jan 2026 03:21:55 GMT
Content-Length: 34740
Connection: close
Set-Cookie: _planweb_session=VVFHaVVDenZIdUdjTk9OVE4xZjhKOEE4Qnp2YTYwZE5UWlVaS0p5NVNFNTFyQXJTSHVDSHcwVTlOS29ESjIxV0crMzEwcVBVSDI0ZUp5cFYxZGo5bnF3SUZXV0ZkRllva2dMUXQrak9VWmRJYWE2YkoyR2c1VWhRaUJ0WWRhOW41cFpCR3JXYTFudUxEUitYNUhWdDBqd2w5NGg2SVhzRjBpWElqcTExdE1scDZ4YzQxRFVIdEdyVXNBTzNlVzJQLS1NUFZEUUFBMmpYLzdhaVdBWmM0UC9nPT0%3D--87d449c2ec70e8070426586668cb76c3c026963f; path=/; HttpOnly
Page title: PlanGrid - the construction app that works for you.
<!DOCTYPE html>
<html>
<head>
<!-- Segment snippet v4.1.0 -->
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on", "addSourceMiddleware"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
function removeResetPasswordTokenFromPayload({ payload, next }) {
const re = /(reset-password)\/(.{8}-.{4}-.{4}-.{4}-.{12})$/g;
function replaceReferrer(obj) { obj.referrer = obj.referrer.replace(re, '$1/password-token'); }
function replacePath(obj) { obj.path = obj.path.replace(re, '$1/password-token'); }
function replaceUrl(obj) { obj.url = obj.url.replace(re, '$1/password-token'); }
if (payload.type() === "page")
{
if (payload.obj.context.page.path.match(re)) replacePath(payload.obj.context.page);
if (payload.obj.context.page.referrer.match(re)) replaceReferrer(payload.obj.context.page)
if (payload.obj.context.page.url.match(re)) replaceUrl(payload.obj.context.page)
if (payload.obj.properties.path.match(re)) replacePath(payload.obj.properties);
if (payload.obj.properties.referrer.match(re)) replaceReferrer(payload.obj.properties);
if (payload.obj.properties.url.match(re)) replaceUrl(payload.obj.properties);
}
next(payload);
};
analytics.addSourceMiddleware(removeResetPasswordTokenFromPayload);
analytics.load("65z751kouu");
analytics.page();
}}();
</script>
<title>PlanGrid - the construction app that works for you.</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Log in to your PlanGrid construction management app. Easily share plans, markups, photos, and reports with the entire project team no matter where you are.">
<link rel="canonical" href="https://app.plangrid.com/" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="A+UXvjWv1z5itDplZd85U/9e0Ms/AbBCbHDuXsbMf+YKo/h3jIBruLGrgnSznuIY2P5Nl5oEQ4q9HvNpuqlS5w==" />
<link href="" rel='preconnect' crossorigin>
<link href="https://photos.planfront-assets.net" rel='preconnect' crossorigin>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41152083-4', 'auto');
ga('send', 'pageview');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-145-974-4726"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-145-974-4726');
</script>
<link rel="stylesheet" media="screen" href="/assets/manifests/application-440d8674f5426bbd37aa4f53f38024d26d0ac0f2f939f2701758e0adc15870b3.css" />
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="google