I usually ship internal tools in Python + Vue, so I’m picky about structure and speed. A regional contractor asked me to “fix” their marketing site—broken hero on tablets, service pages that read like internal notes, a scrapbook-style projects grid, and a contact flow that hid the two qualifiers that actually matter: budget and timeline. Two sprints of band-aids later, we started over on the BuildGo WordPress Theme. Below is the complete field report—what I set up, which parts needed tuning, how it performed, and what I’d choose differently next time. The theme is GPL-licensed, which meant I could audit and customize with a child theme without ceremony.
Environment. PHP 8.1+, OPcache on, HTTP/2. Server or plugin full-page cache; object cache if available. Permalinks set to /post-name/. Media policy from day one: WebP only, dimensions declared for every image, and fixed aspect ratios (hero 16:9, service cards 4:3, galleries 4:3).
Theme & child theme. Install BuildGo (parent) → create/activate a child theme immediately. I added a tiny CSS enqueue in the child to confirm override order so all polish lived in one place. PHP overrides stayed minimal; structure came from templates and CSS tokens.
Plugins (lean). Elementor (Pro only if you truly need its widgets), one caching/performance plugin I already understand, the builder’s native forms to avoid duplicate scripts, basic security hardening, and automated backups.
Demo import (no bloat). I imported only: one homepage, one Service template, one Project template, header, footer, and a blog template. I deleted everything I wouldn’t use. Demo bloat is how fresh installs become slow.
Global tokens. Colors: BrandPrimary/Accent plus neutrals; Type scale on an 8-point rhythm; Spacing 8/16/24/32/48. I mapped buttons, headings, and cards to tokens so late-stage brand tweaks propagated instantly.
Images. Heroes exported at ~1600px WebP (≈75–80% quality). Gallery items ~1200px WebP. Every image got explicit width/height attributes. CLS dropped to background noise.
Above-the-fold discipline. One crisp hero + one line that earns the scroll. No autoplay video; no auto-advancing carousels. Credential icons as SVG.
CSS/JS delivery. Critical CSS per major template (home, service), defer everything else. Disable unused builder experiments and overlapping widget packs. Fonts: one family, two weights; preload the primary text face.
Caching/headers. Public TTL 1–7 days with purge on updates; long-lived cache for fonts, images, CSS/JS.
Outcome. On a mid-range VPS + ordinary CDN, mobile LCP landed ~2.1–2.3s, CLS ≈ 0, and TBT stayed low after pruning duplicates. Behavior followed: bounce down on services, deeper scroll, and more quote starts before any ad spend.
BuildGo didn’t require heroics; it rewarded discipline. It ships with components that match how contractors actually sell: outcome-first hero, service decks that read like scopes, project pages with fast facts and honest galleries, and a quote path that qualifies without friction. Keep the stack lean, decide image ratios early, bind everything to tokens, and commit to one CTA per view. With that posture, BuildGo delivers a site that feels intentional, stays fast on phones, and—most importantly—converts.
Further exploration inside the same catalog: if you want to compare sister patterns or plan a multi-site sprint, browse Best WordPress Themes, and for a clean starting point or quick reference keep gplpal bookmarked.