The standard
161 checks before your site goes live
This is the document every JuicedWebsites build is walked through before handover, published in full. Every item names the threshold it passes at and the tool that proves it, so you can re-run any of it yourself.
No email gate and no form. Take it to whoever else is quoting you and ask which of these they run.
- Checks
- 161
- Sections
- 15
- Measured twice
- Staging + live
- Signed at handover
- Every build
14 pages, printable, with a signature page. Last reviewed 2026-08-10.
A threshold, not an adjective
“The site is fast” is not a check. “LCP under 2.5s on emulated slow 4G” is. Every item here is written so it can be failed.
A named tool on every line
Lighthouse, axe-core, the Rich Results Test, a real handset. You can run any of them, or have someone else run them, and get the same answer.
Nothing skipped quietly
An item that does not apply is marked not applicable with the reason. An item that fails is fixed before launch or written down with a date.
What gets checked
- 01Speed and Core Web Vitals12
- 02Page weight and asset discipline9
- 03The phone, which is where your customer actually is11
- 04Browsers and devices8
- 05On-page SEO12
- 06Technical SEO and crawlability13
- 07Structured data and AI answers10
- 08Content and copy11
- 09Getting the call12
- 10Forms and lead capture10
- 11Accessibility14
- 12Security, privacy and legal11
- 13Analytics and measurement9
- 14Hosting, domain and email9
- 15What you get at handover10
01
Speed and Core Web Vitals
12 checks
Google ranks on how fast the page is for real visitors, not on how fast it feels on our machine. Every number here is measured on throttled hardware.
Largest Contentful Paint
Under 2.5s on emulated slow 4G with 4× CPU throttling · verified: Lighthouse, median of three runs
Cumulative Layout Shift
0.00 — nothing on the page moves after it paints · verified: Lighthouse, plus a manual scroll on a cold load
Interaction to Next Paint
Under 200ms on the slowest interaction on the page · verified: Chrome DevTools Performance panel
Total Blocking Time
Under 200ms · verified: Lighthouse, median of three runs
First Contentful Paint
Under 1.8s throttled · verified: Lighthouse, median of three runs
Lighthouse performance score
90 or better on mobile emulation, every indexable page · verified: Lighthouse CLI against the production URL
Time to First Byte
Under 600ms from a cold edge cache · verified: curl timing against the live domain
The LCP element is identified and is text or the hero image
Never a decorative background · verified: Lighthouse LCP trace
No render-blocking scripts above the fold
Zero blocking third-party requests before first paint · verified: DevTools Network waterfall
Fonts are self-hosted or preloaded, with a fallback that matches
No invisible text during load, no reflow when the face lands · verified: Visual check on a throttled first load
Analytics loads after the page, never before it
Deferred to idle time after window load · verified: DevTools Network waterfall
Scores re-measured on production, not on a staging build
Same URL the public gets · verified: Lighthouse against the live domain post-launch
02
Page weight and asset discipline
9 checks
Most contractor sites are slow because of what was loaded, not how it was coded. This is the section that keeps that from happening.
Total page weight on the homepage
Under 1MB on first load, images included · verified: DevTools Network panel, cache disabled
JavaScript shipped to the browser
Under 150KB compressed, and every kilobyte accounted for · verified: Build output plus a bundle inspection
No page builder, no theme framework, no plugin stack
Custom code only · verified: View source on any page
Every photo converted to AVIF or WebP with a fallback
No unconverted JPEG or PNG in the page load · verified: DevTools Network panel, filtered to images
Images sized to the box they render in
No image served more than 2× its displayed width · verified: Lighthouse 'properly size images' audit
Responsive image sets for anything full-width
A phone never downloads the desktop photo · verified: Network panel at a 390px viewport
Below-the-fold images lazy-loaded
Only above-the-fold imagery loads eagerly · verified: Network waterfall on initial paint
Every image has explicit width and height
Space is reserved before the file arrives · verified: Source inspection, confirmed by CLS of 0
No unused CSS or JS shipped
Under 20KB of unused bytes on any route · verified: DevTools Coverage panel
03
The phone, which is where your customer actually is
11 checks
He is one-handed, outdoors, on a bad signal, and he is comparing you to two other numbers. Every check here is run on a real handset, not a resized desktop window.
Every tap target is at least 48 by 48 CSS pixels
Buttons, links, phone numbers, form fields, menu items · verified: Lighthouse tap-target audit plus a manual pass
At least 8px of space between adjacent tap targets
No accidental taps on the wrong button · verified: Manual pass on a real handset
Call button pinned within thumb reach
Reachable one-handed on a 6.1in screen without a grip change · verified: Manual pass on a real handset
No horizontal scroll at any width from 320px up
Zero sideways movement on any page · verified: Responsive mode sweep, 320px to 1920px
No pinch-zoom required to read anything
Body text at 16px minimum, never below · verified: Manual pass on a real handset
Phone numbers are tap-to-call links
Every visible number, on every page, in the header and footer · verified: Tap each one on a real handset
Address links open the customer's map app
Works on both iOS and Android · verified: Tap on both platforms
Forms bring up the right keyboard
Numeric pad for phone, email keyboard for email · verified: Manual pass on a real handset
Tested on real iOS Safari, not Chrome device emulation
Emulation runs a different engine and has missed real bugs · verified: WebKit, then a physical device
Usable on a slow connection
Readable and callable within 3s on emulated slow 4G · verified: Throttled load with the network panel open
Works in landscape and with the on-screen keyboard open
Nothing is covered, clipped, or pushed off screen · verified: Manual pass on a real handset
04
Browsers and devices
8 checks
A site that only works in the browser it was built in is not finished. This is the matrix every build is walked through before launch.
Safari on iOS, current and one version back
Full pass on a physical device · verified: Manual
Chrome on Android, current
Full pass on a physical device · verified: Manual
Chrome, Edge and Firefox on desktop, current
Full pass · verified: Manual
Safari on macOS, current
Full pass · verified: Manual
Small phone, 320px to 390px wide
No clipping, no overflow, no unreachable buttons · verified: Physical device plus responsive sweep
Tablet, portrait and landscape
Layout holds at both orientations · verified: Physical device or emulation
Large desktop, 1920px and wider
Content stays in a readable column, no stretched lines · verified: Manual
Reduced-motion preference respected
All non-essential animation stops when the OS asks it to · verified: OS accessibility setting, then reload
05
On-page SEO
12 checks
This is the part most template sites skip entirely, and it is the reason they never rank for anything but their own business name.
One H1 per page, and it names the service and the place
Never a logo, never a tagline, never two H1s · verified: Heading outline inspection on every page
Heading levels descend without skipping
H1, then H2, then H3 — no jumps · verified: Accessibility tree inspection
Unique title tag on every page
Under 60 characters, service and location first · verified: Crawl of every indexable URL
Unique meta description on every page
Under 155 characters, written to earn the click · verified: Crawl of every indexable URL
A page for every service you sell
Not one bullet on a combined services page · verified: Service list checked against the sitemap
A page for every town you actually drive to
Distinct content per town, never a find-and-replace · verified: Manual read of each page
No two pages competing for the same phrase
One target phrase per URL · verified: Keyword map reviewed against the sitemap
Internal links connect services to the towns that buy them
No page more than two clicks from the homepage · verified: Crawl depth report
Descriptive alt text on every meaningful image
Decorative images marked as decorative, not stuffed · verified: Crawl plus manual read
URLs are readable and stable
Words, hyphens, lowercase, no IDs or dates · verified: Sitemap review
Descriptive link text throughout
No 'click here' and no bare URLs in body copy · verified: Crawl of outgoing link text
Enough on the page to be worth ranking
Every service page answers the question it targets in full · verified: Manual read against the target phrase
06
Technical SEO and crawlability
13 checks
Google has to be able to find, fetch and index every page. These are the failures that quietly keep a site invisible for months.
XML sitemap generated from the real route list
Every indexable URL present, nothing stale · verified: Fetch the sitemap and diff it against the crawl
Sitemap declared in robots.txt and submitted to Search Console
Submitted by hand, confirmed accepted · verified: Google Search Console
robots.txt allows everything that should be indexed
No accidental site-wide disallow · verified: Fetch /robots.txt on production
No staging or preview URL is crawlable
Previews carry noindex or auth · verified: Fetch a preview URL and check the headers
Self-referencing canonical on every page
Prevents preview and parameter URLs duplicating production · verified: Source inspection on every indexable URL
One hostname, everything else redirects to it
www and non-www resolve to a single canonical host · verified: curl both, follow the redirect chain
HTTPS everywhere, HTTP redirects permanently
301, no mixed content warnings anywhere · verified: curl plus a console check on every page
Every URL returns the status code it should
200 for real pages, 301 for moved, 404 for missing · verified: Full crawl of the site
A real 404 page that keeps the visitor
Branded, with navigation and the phone number on it · verified: Visit a URL that does not exist
No redirect chains and no loops
One hop maximum · verified: Crawl with redirect tracing
Old URLs redirected if we are replacing an existing site
Every ranking URL mapped to its new home before cutover · verified: Crawl of the old site, mapped one to one
Pagination and filters cannot generate infinite URLs
No crawl traps · verified: Crawl with parameter discovery on
Every page rendered and indexed after launch
Confirmed in Search Console, not assumed · verified: URL Inspection on a sample of every page type
07
Structured data and AI answers
10 checks
Search engines and AI assistants read a machine-readable copy of your business. If it is missing or wrong, you get left out of answers you should be in.
LocalBusiness or the correct trade-specific type
Valid, with no errors and no warnings that matter · verified: Google Rich Results Test and Schema.org validator
Name, address, phone and hours match everywhere
Identical across the schema, the footer and the contact page · verified: Side-by-side comparison
Service schema on every service page
Correctly typed and linked to the business · verified: Rich Results Test on each page
Service area declared
Every town you cover, matching the town pages · verified: Schema inspection
FAQ schema where there are real questions and answers
Emitted from the same content the visitor sees · verified: Rich Results Test, plus a visual diff
Breadcrumb schema matching the visible navigation
No invented hierarchy · verified: Rich Results Test
No review or rating schema until there are real reviews
Zero exceptions — inventing it risks a manual penalty · verified: Schema inspection
Answers written in the format AI assistants extract
Question, then a direct answer in the first sentence · verified: Manual read of every answer block
Key facts stated in plain text, not only in images
Hours, service area and pricing readable without OCR · verified: Text-only render of each page
Baseline AI visibility recorded before launch
Measured so the change after launch is provable · verified: aivisibilitymetrics.com, a tool we built and run
08
Content and copy
11 checks
The words do the selling. Every page is written from one call with you and comes back for your approval before it is built.
Every page approved by you before it goes public
In writing, on a staging link · verified: Approval recorded against the staging URL
Services described the way you describe them
Your trade vocabulary, not generic marketing language · verified: Read-back on the review call
Real photos of your trucks, crews and finished work
No stock photography of models in clean hard hats · verified: Visual audit of every image on the site
Licence and insurance details stated where a buyer looks
Licence number visible, current, and correct · verified: Checked against your paperwork
Service area stated in plain language
The towns you drive to, named · verified: Confirmed against your list
Hours, emergency availability and response time stated
Accurate on the day of launch · verified: Confirmed with you at handover
Every price or claim on the site is one you stand behind
Nothing written that you would not say on the phone · verified: Line-by-line read on the approval call
No placeholder text anywhere
Zero lorem ipsum, zero 'coming soon', zero sample content · verified: Full-text search of the built site
Spelling and grammar checked
US spelling throughout, consistent · verified: Automated pass plus a manual read
Business name, phone and address identical site-wide
Character for character, including formatting · verified: Full-text search across every page
Nothing on the site contradicts anything else on it
Hours, coverage and services agree on every page · verified: Cross-page consistency pass
09
Getting the call
12 checks
A site that ranks and never rings is a failure. These are checked on the live site, on a real phone, before handover.
Phone number visible without scrolling on every page
Above the fold on both phone and desktop · verified: Manual pass on both
Call button in the thumb zone on mobile
Present on every page, never scrolls out of reach · verified: Manual pass on a real handset
Every call link dialed and answered as a test
Rings the phone you actually answer · verified: Live test call before handover
One clear next step per page
No page leaves a visitor without an obvious action · verified: Page-by-page review
Quote form reachable from every page
One tap or one click, always · verified: Navigation audit
Emergency or after-hours path is obvious
Where it applies to your trade · verified: Manual review
Trust signals near every call to action
Licence, insurance, years in business, service area · verified: Page-by-page review
Google reviews shown live on the page
Real current rating, not a screenshot · verified: Compare the page against your Google listing
No dead ends
Every page links onward to a service, a town or the form · verified: Crawl for pages with no outbound internal links
Nothing interrupts a visitor before they have read anything
No entry popups, no chat bubble ambush, no auto-play sound · verified: Cold visit in a clean browser profile
Click-to-text where you offer it
Opens the messaging app with the number prefilled · verified: Tap on iOS and Android
Every conversion path walked end to end on the live site
Call, text, form — all three, after launch · verified: Manual test, results confirmed with you
10
Forms and lead capture
10 checks
Every extra field costs you leads, and a form that silently fails costs you all of them. Both are checked.
Quote form is four fields
Name, phone, address, what's wrong · verified: Form inspection
Test submission received end to end
Lands where you will actually see it · verified: Live submission before handover, confirmed by you
Notification reaches you within one minute
Email, text or both, whichever you asked for · verified: Timed test submission
Leads are stored, not only emailed
A dropped notification can never lose the lead · verified: Submit, then confirm the stored record
Spam protection that does not punish real people
No CAPTCHA puzzle in front of a paying customer · verified: Submit as a human, then as a bot
Validation messages are specific and readable
Says which field and why, never just 'error' · verified: Submit deliberately bad input
Errors do not clear what was already typed
Nothing retyped after a failed submission · verified: Trigger a validation error and check the fields
Confirmation screen tells them what happens next
Who calls, and how soon · verified: Complete a real submission
Form works with the keyboard alone
Tab order is sane, focus is always visible · verified: Keyboard-only pass
Form works with JavaScript disabled or failed
Degrades to something that still submits, or fails loudly · verified: Disable JS and submit
11
Accessibility
14 checks
Measured against WCAG 2.2 level AA. Some of your customers are older, some are on a cracked screen in the sun, and some use a screen reader. All of them can hire you.
Lighthouse accessibility score
100, every indexable page · verified: Lighthouse CLI
Automated audit with no violations
Zero errors at WCAG 2.2 AA · verified: axe-core
Body text contrast
4.5:1 minimum against its background · verified: Contrast checker on every text and background pair
Large text and UI component contrast
3:1 minimum · verified: Contrast checker
Every interactive element reachable by keyboard
Nothing reachable only by mouse · verified: Keyboard-only pass of every page
Focus is always visible
A clear indicator on every focusable element · verified: Tab through every page
Tab order follows the visual order
No jumps backward or into hidden content · verified: Keyboard-only pass
Skip-to-content link present
First tab stop on every page · verified: Tab once from a fresh load
Screen reader pass on the main paths
Homepage, a service page, and the quote form · verified: VoiceOver on macOS and iOS
Every form field has a real label
Placeholder text is never the only label · verified: Accessibility tree inspection
Landmarks and regions correctly marked
Header, nav, main, footer all present once · verified: Accessibility tree inspection
Images carry alt text, decorative ones marked empty
No image announced as its filename · verified: Screen reader pass
Page language declared
Set on the html element · verified: Source inspection
Nothing conveyed by color alone
Errors, links and states carry a second signal · verified: Grayscale render of every page
12
Security, privacy and legal
11 checks
The parts that only matter on the day they go wrong. Checked before handover so that day does not arrive.
Valid SSL certificate with auto-renewal
No expiry date you have to remember · verified: Certificate inspection plus renewal confirmation
Security headers set
HSTS, X-Content-Type-Options, Referrer-Policy, frame protection · verified: Response header inspection
No secrets, keys or credentials in the shipped code
Zero · verified: Automated secret scan of the repository
Dependencies free of known vulnerabilities
No high or critical advisories at launch · verified: Dependency audit
Form endpoints rate-limited
A bot cannot flood your inbox · verified: Repeated submission test
No console errors or warnings on any page
A clean console on every route · verified: DevTools console sweep
Privacy policy present and accurate
Describes what is actually collected, nothing more · verified: Read against the real data flow
Terms of service present
Linked in the footer on every page · verified: Footer audit
Cookie and tracking position stated honestly
If nothing is tracked, no banner is shown · verified: Cookie inspection on a clean profile
Accessibility statement where you want one
Optional, offered on every build · verified: Confirmed with you
Licence numbers and legal business name correct
Matches your registration exactly · verified: Checked against your paperwork
13
Analytics and measurement
9 checks
Without this there is traffic and nothing else. You get the logins, not a monthly PDF of numbers you cannot check.
Analytics installed and firing on every page
Confirmed receiving data before handover · verified: Live event check in the dashboard
Calls tracked as a conversion
Every tap-to-call link, on every page · verified: Test tap, confirmed in the dashboard
Form submissions tracked as a conversion
Fires on success, not on click · verified: Test submission, confirmed in the dashboard
Text and email clicks tracked
Labeled by where on the page they happened · verified: Test click, confirmed in the dashboard
Search Console verified and the sitemap submitted
Verified on the domain, not on a single URL · verified: Google Search Console
Google Business Profile connected where you have one
Website field pointing at the new site · verified: Profile inspection
Baseline numbers recorded on launch day
Speed, indexed pages and AI visibility, dated · verified: Written into the handover document
Analytics does not slow the site down
Loaded after the page, never blocking it · verified: Network waterfall plus a before-and-after Lighthouse run
You have your own logins
Owner access, not view-only under our account · verified: Confirmed by you signing in at handover
14
Hosting, domain and email
9 checks
The plumbing. Most of it is invisible until a domain expires or your quotes start landing in spam.
Domain registered in your name
You are the registrant, not us · verified: WHOIS record
Domain auto-renew on, with a reminder to you
Expiry date recorded in the handover document · verified: Registrar settings
DNS records documented before any change
A copy of the old zone kept, so a cutover is reversible · verified: Exported zone file
Email unaffected by the website cutover
MX records untouched, mail tested after the switch · verified: Send and receive a test message post-cutover
SPF and DMARC records present
So the site's form notifications are not filtered as spam · verified: DNS inspection plus a deliverability test
Hosting on a CDN with automatic scaling
A storm week cannot take the site down · verified: Deployment configuration review
Uptime monitoring active with alerting
We find out before you do · verified: Monitor configured and test-alerted
Automatic backups with a tested restore
Restore actually performed once, not assumed to work · verified: Test restore before handover
Rollback to the previous version available
Any deploy reversible in minutes · verified: Deployment history review
15
What you get at handover
10 checks
Ownership does not depend on staying a client. This is handed over on launch day whether you stay on the retainer or not.
Domain registrar login, in your name
Transferred to your account · verified: You sign in and change the password
Hosting account access
Owner-level, not a shared seat · verified: You sign in and change the password
The source code
The complete site, yours to take anywhere · verified: Repository access or a delivered archive
Every photo and every piece of copy
Full resolution originals, not the compressed web versions · verified: Delivered file bundle
Analytics and Search Console access
Owner-level on both · verified: You sign in
This checklist, completed and signed
Every item marked, dated, with the measured numbers filled in · verified: Countersigned at handover
The launch-day measurements
Speed scores, indexed page count and AI visibility baseline · verified: Written into the signed copy of this document
A written record of what changed
Old URLs, new URLs and every redirect, if we replaced a site · verified: Delivered redirect map
How to text a change, and what counts as one
In writing, with the number · verified: Handover document
A walkthrough of the finished site
One call, as long as you want it to be · verified: Scheduled at handover
Questions
About the checklist
What should be checked before a website goes live?
Fifteen areas, and speed is only one of them: Core Web Vitals, page weight, mobile and touch targets, the browser matrix, on-page SEO, crawlability and indexing, structured data, content accuracy, conversion paths, forms, accessibility to WCAG 2.2 AA, security and legal, analytics, hosting and DNS, and the handover package itself. JuicedWebsites runs 161 individual checks across those 15 areas before any contractor site is handed over, then re-runs the measurements on the live site after launch.
Why does a launch checklist need a threshold for every item?
Because a check without a number cannot be verified or disputed. “The site is fast” is an opinion; “Largest Contentful Paint under 2.5 seconds on emulated slow 4G, measured in Lighthouse, median of three runs” is a claim the client can re-run himself and hold the builder to. Every item on this checklist names both the threshold and the tool for exactly that reason.
Can I use this checklist with a different web designer?
Yes, and that is the intended use. It is published in full with no email gate so a contractor can take it to whoever is quoting him and ask which items they run. Any competent builder should be able to answer for most of it. The ones who cannot are the reason the document exists.
Are the checks run again after the site is live?
Yes. Every measurement is taken twice — once on the staging link the client approves, and once on the production URL after launch — because a build that scores well on staging and badly in production has not actually been tested. The launch-day numbers are written into the signed copy the client keeps.
What happens if a check fails?
It is fixed before launch, or it is written down as an open item with a date and carried into the signed record. Items that do not apply to a particular build are marked not applicable with the reason next to them. A blank box never means “probably fine”.
The checklist is stage 04 of a five-stage build. See how the rest of it runs, or open the sites it was run on.
Order your site
No call, no quote, no proposal.
$1,000 covers the build and the first 3 months. Pay, fill in one form, and it's booked against this month's capacity. Bigger job than that? Text your trade and towns and we'll quote it by hand.
You own the site from day one. The monthly cancels any month.
Or text us — bigger job, or a question first.Or call the same number and talk it through.No discovery call. No calendar link. No sales pipeline.