Five elements appear on every page of the site. They are listed here because they are easy to treat as optional, and they are not.
Live chat
on every pageThe GoHighLevel chat widget loads site-wide, so it is present on every page including any added later. A visitor can start a conversation from anywhere on the site without hunting for a contact link.
Consent-aware: the widget does not load until the visitor accepts non-essential cookies, so it sets no tracking cookies beforehand. The visitor can change their mind at any time from the cookie settings link in the footer.
<script src="https://widgets.leadconnectorhq.com/loader.js" data-resources-url="https://widgets.leadconnectorhq.com/chat-widget/loader.js" data-widget-id="YOUR_WIDGET_ID"></script>
Contact form
on every pageMost people who are ready to enquire do it from the page they are already reading, not from a separate contact page. A form on every page means no visitor has to work out where to go next, and no page becomes a dead end. On the home and service pages it sits in the opening viewport; on every other page it closes the page.
The site uses a custom contact form that sends each submission to GoHighLevel by webhook. Each submission arrives in your GHL CRM as a lead with the page, campaign and keyword that produced it attached. Email and/or SMS notifications will be sent to the appropriate Restore Roofing contacts to notify them a new lead has been created in the GHL CRM. Pitch Peak Marketing will handle the qualification of the lead to ensure they are pushed to book an appointment. If and when a lead books an appointment, appointment and contact data for the lead will be pushed to Restore Roofing's AccuLynx CRM by webhook.
Number tracking pool
on every pageA number pool shows a different tracking number depending on where the visitor came from, so a call generated by Google Ads is attributed to Google Ads and a call from organic search to organic search. Without it every call looks identical and there is no way to tell which marketing is producing the phone leads.
It has to be site-wide because a call can begin on any page. Calls route to the same place they always did, and the swap is invisible to the caller.
<script src="https://backend.leadconnectorhq.com/appengine/loc/[YOUR_LOCATION_ID]/pool/[YOUR_POOL_ID]/number_pool.js"></script> <script src="https://backend.leadconnectorhq.com/appengine/js/user_session.js"></script>
Structured data
on every pageStructured data is machine-readable detail that tells Google what the business is and what each page contains, so the right information can be shown in search results. The business record applies site-wide and is identical on every page; the page-level types are added where they apply. The business details are kept identical to your Google Business Profile, because a mismatch weakens local search visibility rather than helping it.
| Applies to | Schema types |
|---|---|
| Every page | Organization, typed as RoofingContractor: business name, legal name, address, phone, email, opening hours, service area, logo and license numbers. WebSite, so Google reads the site as a single entity. |
| Every page, additionally | WebPage, plus BreadcrumbList so the trail from the home page can appear in search results. |
| Home | Organization, WebSite, WebPage, BreadcrumbList, FAQPage, and an ItemList of the services offered. |
| Service pages (7) | Service naming the service and the business providing it, WebPage, BreadcrumbList, FAQPage, and ImageObject for each gallery image. |
| Service area pages (10) | Service with areaServed set to that city, WebPage, BreadcrumbList, FAQPage, and ImageObject for local project photos. |
| Services and Service Areas hubs | CollectionPage with an ItemList linking every child page, BreadcrumbList. |
| About | AboutPage, Organization, BreadcrumbList. |
| Contact | ContactPage, Organization, BreadcrumbList. |
| Our Work | CollectionPage, ImageGallery, BreadcrumbList. |
| Reviews | WebPage, BreadcrumbList, and Review markup for each review. Star ratings appear in search results only once your genuine Google reviews are connected. |
| FAQ | FAQPage, BreadcrumbList. |
| Financing | WebPage, BreadcrumbList, and Offer markup if the lender's terms permit it. |
| Blog index | Blog and an ItemList of the posts, BreadcrumbList. |
| Blog posts | BlogPosting with author, publisher and date, BreadcrumbList. |
| Thank You | WebPage only. |
| Legal pages (4) | WebPage, BreadcrumbList. |
The business record and the page-level markup are generated by your SEO plugin, with the theme supplying the page-specific types such as the service, FAQ and gallery markup. Keeping one source for the business record is what prevents the conflicting duplicates that weaken local search visibility.
Project gallery
on every pageEvery page shows completed work relevant to that page: roof replacements on the replacement page, local projects on each city page, and so on. Before-and-after photos are the priority. A genuine pair of the same roof photographed before and after the work is the most persuasive image a roofing site can show: it is how visitors judge quality, and it is what makes a service page feel like evidence rather than a claim. Paired photos display in a drag-to-compare slider; single photos fill out the grid around them.
Images come from a single shared library, so a photo is uploaded once and appears wherever it is relevant. Every image needs descriptive alt text and a caption naming the city and the work. That is what makes the gallery useful to visitors and findable in image search.
Also on every page
chromeHeader: logo, phone number, navigation, and a persistent quote button. Footer: business name and address, phone, license numbers, service links, area links, legal links, cookie settings, and the Pitch Peak credit. Mobile: a fixed call and text bar, so the phone number is always one tap away.