Website Audit · Hiring Campaign
mcdconcrete.com — Hiring Website Audit
Goal: hire qualified concrete workers and specialists (people with real concrete experience). Based on a read-only review of the live site, Google Tag Manager / GA4, Google Ads and Meta Ads Manager, last updated October 13, 2026. No changes were made to the site during this review.
9items already fixed
4high-priority open items
9medium-priority open items
0visual changes made
What the ads taught us
- Meta Instant Form is the efficient lead source. 329 leads at $3.72 each (Sep 13–Oct 12). The form asks about concrete experience up front, so these leads can be screened.
- Meta Website Clicks sends volume. 3,803 landing-page views at $0.23, but we cannot yet see how many visitors finish the long application, or whether they have concrete experience.
- Google Search converts best on local intent. 73 conversions at $36.53 each over the whole run. The “Cincinnati / Local” ad group did most of the work. Note: Google’s “Form” conversion is auto-detected, not tied to the confirmation page (see item 4).
- The gap: neither channel can be measured on qualified applicants, because the website application does not require a trade-experience answer.
Already fixed
- JobPosting schema (Google for Jobs eligibility) live on all three role pages: Concrete Carpenter, Concrete Finisher, General Laborer.
- The old /cincinnati-concrete-jobs/ URL no longer 404s; it now redirects to the online application.
- “We’re hiring” banner live across the site.
- Google Analytics 4 now receives page views and key events from the site (the Meta Conversions API setup had been routing them to a server that never forwarded them to GA4).
- Application submissions count once per real submission (job_application_submit).
- Phone-number clicks are tracked, once per click (phone_click).
- Both events are marked as GA4 key events.
- Meta Pixel PageView no longer fires twice.
- An unused second Meta pixel was paused.
Open findings
Type tells you who has to act: Metadata = SEO-layer only (Rank Math), no visual change. Content = visible change to a page, needs client approval first. Tracking = tag / analytics setup, no visible change.
| # | Priority | Finding | Why it matters | Recommended fix | Type |
|---|---|---|---|---|---|
| 1 | High | The application has no required trade-experience question. The only experience field is an optional “Additional experience/skills” box. | A 10-year finisher and a first-timer look identical on submission, so qualified applicants cannot be counted or prioritised. | Add required “years of concrete experience” and “which trades” questions (Meta’s Instant Form already asks). | Content |
| 2 | High | No meta description on the homepage, the application page, or any of the three role pages. | Google writes its own snippet, which rarely names the roles, pay or location. | Write a 150–160 character description for each page in Rank Math. | Metadata |
| 3 | High | The application page has no job-specific SEO copy. It reads as a generic form. | The page cannot rank for searches like “concrete jobs Cincinnati”. | Add an SEO title plus one short block of text: roles hiring, $21–$30/hr pay range, weekly pay, locations, links to the three role pages. | Metadata + Content |
| 4 | High | Google Ads counts auto-detected “Form” events, not confirmation-page completions. | Bidding is tied to a looser signal than a finished application. | Import the GA4 job_application_submit event and make it the primary conversion. | Tracking |
| 5 | Medium | The application form is long (roughly 300 input fields including employment history). | Mobile completion is a likely drop-off point. | Measure starts vs. completions first; shorten only where the data shows drop-off. | Content |
| 6 | Medium | Page titles are generic (the homepage reads “New Home – McD Concrete”). | Titles are the main ranking and click signal in search results. | Write titles that name the roles and the Cincinnati / Northern Kentucky area. | Metadata |
| 7 | Medium | /sample-page/ and /home-backup/ are live and set to index. | Test pages in search results dilute the site and can confuse applicants. | Set to noindex, or remove. | Metadata |
| 8 | Medium | Image alt text is missing on 8 of 11 homepage images and 5 of 8 application-page images. | Hurts image search and accessibility. | Add short descriptive alt text to each image. | Metadata |
| 9 | Medium | Role pages say “Cincinnati, OH”, but every job’s listed location is the Erlanger, KY address. | Searchers in Northern Kentucky (Hebron, Walton, Erlanger) are part of the audience. | Build one Northern Kentucky hiring hub page (roles, pay, location, apply link, links to the role pages). Do not duplicate the three role pages. | Content |
| 10 | Medium | A Spanish / English toggle exists, but the Spanish application flow and confirmation page were not confirmed to translate. | Spanish-language applicants are a core audience for the Spanish ads. | Build and test a full Spanish version: application, role pages, confirmation page and meta tags. | Content |
| 11 | Medium | The server-side tagging endpoint returns intermittent 503 errors. | Some Meta Conversions API events may be dropping. | In Google Cloud Run, set the tagging server’s minimum instances to at least 1 (3 recommended), confirm billing, then check the logs. | Tracking |
| 12 | Medium | About 1,200 GA4 sessions per week land in the “Unassigned” channel, and UTM tags are not yet applied to Google Ads. | Attribution by channel is incomplete. | Investigate after the server-side fix; apply the shared UTM standard to Google Ads (see below). | Tracking |
| 13 | Medium | No reviews from Indeed, Glassdoor or Google on the site. | Social proof matters to job seekers. | Display reviews on the site (design approval needed before any visual change). | Content |
| 14 | Low | Several H1 headings per page (a page-builder artifact). | Small ranking impact. | Tidy when pages are next edited. | Content |
| 15 | Low | One leftover direct page_view hit to an unknown Google tag (G-BZM8FWSD5J). | Harmless to reporting, but untidy. | Trace and remove in Tag Manager. | Tracking |
| 16 | Low | No call-level tracking. phone_click measures taps, not completed calls. | Calls from ads cannot be attributed. | Add call tracking (CallRail or similar). | Tracking |
| 17 | Low | Application page speed and sitemap submission not yet checked. | Slow mobile pages lose applicants. | Run PageSpeed Insights; confirm sitemap.xml is current in Search Console. | Metadata |
Suggested order of work
- Finish tracking: fix the 503 errors, apply UTM tags to Google Ads, switch the Google Ads conversion to the confirmation event.
- Metadata clean-up: meta descriptions, page titles, alt text, noindex the test pages (no visual change).
- Add the required experience question and start measuring started vs. completed applications.
- Northern Kentucky hub page.
- Spanish version of the site.
Shared UTM standard (all channels)
| Channel | utm_source | utm_medium | utm_campaign | utm_content |
|---|---|---|---|---|
| Google Ads | cpc | hiring_sep2026 | {adgroupid} (plus utm_term={keyword}) | |
| Meta | paid_social | hiring_sep2026 | website_role_specific_en / _es, instant_form_en / _es | |
| Indeed / Glassdoor | indeed / glassdoor | job_board | hiring_sep2026 | profile or posting name |
| QR / print / email | qr / flyer / email | offline / email | hiring_sep2026 | placement name |
Rules: all lowercase, underscores instead of spaces, campaign names as hiring_monthyear.