Web Design · 11 min read
Website Launch Checklist: 22 Things That Break Day One
Summary
The launch failures that cost real money aren't visual: staging noindex, forms that email nobody, GA4 pageviews mistaken for conversions. Test each one.
By Hyder Shah, Founder & CEO · Published July 13, 2026 · Updated July 13, 2026
A website launch does not fail loudly. Nobody calls to tell you the new site is broken. It looks great, the owner is happy, and then thirty days later the lead count is down and nobody can say why.
That is the shape of a launch failure on a service-business site: the site works, the plumbing behind it does not. The form posts and shows a thank-you page — and emails nobody. The tag fires — and records nothing Google Ads can bid on. The phone number sits in the header as plain text on a phone.
This is the launch checklist we'd hand a contractor before we let a service-business site go live, and the specific test that proves each item — not "check your forms work," but "submit a real form from a personal email and confirm the CRM record exists." If you are also changing URLs in this launch, read how to redesign a website without losing rankings first; redirect mapping is a separate job and this post does not cover it.
What breaks in the first 48 hours after a website goes live?
Six systems break, and 22 checks cover all of them: indexation flags, form delivery, analytics events, click-to-call, call-tracking number swap, and stale legacy details. None of them are visible from the homepage, which is exactly why they survive launch day.
We're ordering these by what they cost you, not by how often they happen — we don't have a launch-failure frequency dataset and we're not going to invent one. Every item has a verification step you can perform in under two minutes.
| Check | How you verify it | What it costs if you skip it |
| 1. noindex removed from every live template | View source on 5 different URL types, search for 'noindex' | Zero organic traffic, indefinitely |
| 2. robots.txt allows crawling | Open /robots.txt, confirm there is no 'Disallow: /' | Google cannot crawl the site at all |
| 3. Staging site is dead or password-protected | Google 'site:staging.yourdomain.com' | A duplicate site competing with your real one |
| 4. Canonical tags point at the live domain | View source, read the rel=canonical host | Google indexes staging URLs instead of yours |
| 5. Open Graph URLs use the live domain | Paste a link into Slack and look at the preview | Broken previews on every share |
| 6. SSL valid on both www and apex | Load both, check the padlock | A browser warning on your front door |
| 7. One canonical host, the other 301s | Type the other version, confirm the redirect | Split rankings and split analytics |
| 8. Contact form lands in a real inbox | Submit a test lead, wait, confirm it arrived | Every lead lost, silently |
| 9. Form email is not landing in spam | Check the junk folder on the receiving account | Leads sit unread for weeks |
| 10. Form creates a CRM record | Submit, then search the CRM by that test name | Leads pile up in an inbox nobody opens |
| 11. Autoresponder fires to the lead | Submit from a personal email, watch for the reply | The prospect thinks you ignored them |
| 12. Thank-you page or state actually loads | Submit and confirm the URL or DOM changes | Nothing to fire a conversion on |
| 13. GA4 tag present on every page | Open Realtime, click through 5 pages | A blind first month |
| 14. Form event marked as a key event | GA4 Admin, Events, toggle Mark as key event | You have pageviews, not conversions |
| 15. Google Ads conversion importing | Ads, Conversions, status reads Recording | Smart Bidding optimizing on nothing |
| 16. Phone number is a tel: link | Tap it on a real iPhone and a real Android | Mobile callers give up or mistype |
| 17. Dialer shows the correct digits | Tap the link, read the number before you dial | Calls routed to a dead line |
| 18. Call tracking swaps on the live site | Click a real ad, watch the number change | Paid calls credited to organic |
| 19. Schema phone matches the footer and GBP | Compare all three side by side | Local trust and NAP consistency damage |
| 20. Old phone and address purged sitewide | Site search plus a grep of the codebase | Calls going to the office you left |
| 21. XML sitemap lists live URLs only | Open /sitemap.xml and scan the hostnames | Crawlers chasing dead or staging URLs |
| 22. Sitemap submitted in Search Console | Sitemaps report shows Success | Slow discovery of a brand-new site |
Is your staging noindex still on the live site?
This is the single most expensive two-line mistake in web design: a noindex meta tag that was correct on staging, shipped to production, and never removed. The site is live, beautiful, and invisible to Google — sometimes for months, because nothing on the page tells you.
Verify it by viewing the page source (not the rendered inspector) on five different template types — homepage, a service page, a location page, a blog post, and the contact page. Search the source for "noindex" and for "X-Robots-Tag" in the response headers. One template can carry it while the others are clean.
The second failure mode is the opposite one, and it is subtler. Google's documentation on blocking indexing is explicit: "For the noindex rule to be effective, the page or resource must not be blocked by a robots.txt file." If the crawler is blocked, "the crawler will never see the noindex rule, and the page can still appear in search results." So a staging site that is both disallowed in robots.txt and tagged noindex can still get indexed — Google can never read the tag that would have removed it.
Google says the same thing about robots.txt itself: it "is not a mechanism for keeping a web page out of Google," and "a page that's disallowed in robots.txt can still be indexed if linked to from other sites." Password-protect staging. Do not rely on a disallow line.
If a staging site is already indexed, the fix has two halves. Use the Removals tool in Google Search Console for the emergency, then make it permanent — because Google's Removals documentation states a removal request "lasts only about six months," and that "blocking a URL does not prevent Google from crawling your page, only from showing it in Search results." Permanent means a 404/410, a password, or a crawlable noindex. Google's own instruction on that page: "Do not use robots.txt as a blocking mechanism."
Does your contact form actually deliver, and how do you prove it?
You prove it by submitting a real form from an email address that is not on your team, and then confirming the message exists in three places: the destination inbox, the spam folder if it is not in the inbox, and the CRM. A form that shows a thank-you page has proven nothing except that JavaScript ran.
The usual cause is authentication, not code. The form plugin sends mail as you@yourdomain.com from a server your SPF and DMARC records have never heard of, so Google Workspace quietly bins it. Nothing errors. The submission counter goes up. The inbox stays empty.
Run this test properly. Use a distinctive fake name — "Launch Test 3" — so you can search for it. Submit from a personal Gmail. Then check: did the notification arrive; did it land in spam; did the CRM create a record with the right owner and source; did the lead get the autoresponder; and did the thank-you state fire the conversion event.
This matters more than it looks. In a 2011 Harvard Business Review study, firms that contacted an online lead within an hour were nearly seven times as likely to qualify that lead — defined as having a meaningful conversation with a key decision maker — as firms that waited just one hour longer. A form that emails nobody is not a slow response. It is an infinite one. While you are in there, make sure the same form is not letting bots through: see how to kill contact form spam without killing real leads.
Is your GA4 conversion event configured, or just firing pageviews?
In GA4, an event that fires is not a conversion until you explicitly mark it as a key event. Google's documentation on key events says it plainly: "Any event you collect can become a key event. To measure a key event, create or identify an event that measures the action and then mark the event as a key event." Until you flip that toggle, your form submissions are just traffic.
This is the failure that makes month one unmeasurable. Everything looks installed. The tag is on every page, Realtime shows users, the reports fill up — and the Key events column reads zero, so you cannot tell whether the new site is beating the old one.
Verify it in four steps. Open DebugView and submit a form on the live site; confirm your form event appears with the right name. In Admin, confirm that event is toggled as a key event. Wait 24 hours and confirm the Key events column in the Landing pages report is non-zero. Then, if you run ads, confirm the Google Ads conversion built from that key event shows a status of Recording — otherwise Smart Bidding is optimizing against nothing.
Pick your analytics stack before launch, not after. We compare the realistic options in GA4 vs Plausible vs Fathom for service businesses.
Does your click-to-call link work on a real phone?
Test it on an actual iPhone and an actual Android, not in a desktop mobile emulator — an emulator will happily render a phone number that does nothing when a thumb hits it. The number must be a tel: link, and the digits that appear in the dialer must be the digits you want ringing.
Three things go wrong. The number is typed as plain text in the header, so tapping it does nothing. It is a tel: link, but the href carries the old number while the visible text shows the new one. Or the tel: string contains characters the dialer chokes on, so the call drops a digit.
Mobile is where this bill comes due. Zuko's form benchmarking database, covering over 93 million tracked sessions, puts desktop form completion at 54.48% versus 47.53% on mobile — mobile visitors are measurably less willing to fill in a form, which is exactly why an HVAC or plumbing site leans on the phone. If the tap does not dial, that visitor is not filling out your form instead. They are calling the next result.
Check the header, the footer, the sticky mobile call bar, every service page, and the thank-you page. They are frequently hardcoded in different components, and only one of them gets updated.
Is your call tracking swapping numbers on the live site?
Verify dynamic number insertion by clicking one of your own live ads on a phone and watching the number on the page actually change — not by trusting the tracking vendor's dashboard, which reports what it thinks it did, not what your production site rendered.
DNI is JavaScript. It runs after the page paints, it needs the right pool assigned to the right source, and it breaks the moment a developer changes the class or ID the script targets. A launch is exactly when that happens. When it fails, every paid call gets attributed to organic — and you cut the ad budget that was actually working.
There is one number the swap must never touch: the NAP number in your footer, your LocalBusiness schema, and your Google Business Profile. Those three must match each other and stay static. Google's guidance for AI features is blunt on the underlying principle — "make sure your structured data matches the visible text on the page." A swapped tracking number in schema is a self-inflicted consistency problem. How dynamic number insertion works without breaking local SEO covers the setup in detail.
Which old details are still hiding in your footer and schema?
Grep the codebase for the old phone number, the old address, the old email domain, and the staging hostname — all four survive launches, and all four hide in components nobody reads. A visual review of the homepage will not find any of them.
The usual suspects: the old suite number in the footer, an info@ address that forwards to a person who left, a copyright year that is two years stale, a LocalBusiness schema block copied from the previous site with the previous hours, and OG image URLs still pointing at staging.
Verification is mechanical. Search your repository for the old number in every format it might appear — with dashes, with dots, with parentheses, and as raw digits in a tel: href. Then run one page through Google's Rich Results Test and read the parsed schema fields against what is visible on the page. If the schema says one thing and the page says another, fix the schema.
If your site was built on a template you inherited, the odds of a stale schema block are high. A technical SEO audit of a service-business site catches these in an afternoon, and our technical SEO service exists mostly because this class of bug is invisible until it costs you.
What do you check on day 7 and day 30?
On day 7, confirm indexation is happening: Search Console shows the sitemap as Success, key pages return "URL is on Google" in the URL Inspection tool, and the Pages report is not filling up with "Excluded by noindex tag." On day 30, confirm the money is moving: key events counted, calls answered, forms in the CRM.
Submit the sitemap and then be patient about it. Google's sitemap documentation caps a single sitemap at "50MB (uncompressed) or 50,000 URLs," and is careful to note that "submitting a sitemap is merely a hint: it doesn't guarantee that Google will download the sitemap or use the sitemap for crawling URLs on the site." A sitemap speeds discovery. It does not buy indexation.
Day 30 is also the first honest read on speed. Google's Core Web Vitals thresholds are an LCP of 2.5 seconds or less, an INP of 200 milliseconds or less, and a CLS of 0.1 or less — each measured at the 75th percentile of real-user page loads, split by mobile and desktop. Lab scores from launch week are a guess; the field data at day 30 is the truth.
- Day 1: all 22 checks above, done on a real phone and a real desktop, by someone who is not the developer who built it
- Day 7: sitemap Success, key URLs indexed, no unexpected noindex exclusions, GA4 key events counting, call tracking swapping
- Day 30: field Core Web Vitals at the 75th percentile, key events versus the pre-launch baseline, lead volume versus the old site, every form-to-CRM path retested
The whole point of the protocol is that it is falsifiable. "The forms work" is an opinion. "I submitted as Launch Test 3 from a Gmail account at 9:14am and the record exists in the CRM with source = Organic" is a fact. Launch on facts.
If you have already launched and you are not sure which of these 22 checks passed, that is what an audit is for. We build conversion-focused websites with this protocol baked in, and if you just want to know what is currently broken on a site you already own, Get my free audit and we will tell you which items are failing right now.
Where does this fit in your stack?
If you're running a US service business, the playbook in this post pairs with our full services lineup and applies cleanly across our supported industries and US locations. If you want help implementing it, book a free strategy call — we'll review your current setup and prioritize the next three moves.
For the deeper engagement details, see our website design service. New to the terminology here? Our SEO & marketing glossary defines every acronym in this post.
Want this built for your vertical? See SEO for HVAC Companies, SEO for Plumbing Companies, SEO for Dental Practices, SEO for Law Firms.
What are the most common questions about this topic?
Common questions readers send us about this topic.
What should you check before launching a website?
Before you go live, check the things that silently cost leads: no noindex tag on any live template, robots.txt not disallowing everything, a canonical host with the other version redirecting, SSL valid on both, a contact form that delivers to a real inbox and creates a CRM record, GA4 installed with the form event marked as a key event, and a tel: link that dials the correct number on a real phone. Design review comes last, not first.
My staging site got indexed by Google. What do I do?
Use the Search Console Removals tool for the immediate emergency, then make it permanent. Google states a removal request "lasts only about six months" and that blocking a URL "does not prevent Google from crawling your page, only from showing it in Search results." Permanent removal means a 404 or 410, password protection, or a noindex tag Google can actually crawl. Google's own guidance on that page is explicit: do not use robots.txt as the blocking mechanism.
Why can't I just block staging with robots.txt?
Because Google says robots.txt "is not a mechanism for keeping a web page out of Google." A disallowed URL can still be indexed if another site links to it. Worse, robots.txt and noindex cancel each other out: Google's documentation says that if a page is blocked by robots.txt, "the crawler will never see the noindex rule, and the page can still appear in search results." Password-protect staging instead. It is the only method that actually works.
How do I verify my contact form is actually sending?
Submit a real form from an email address outside your organization, using a distinctive fake name you can search for. Then confirm four things: the notification arrived in the destination inbox, it is not sitting in spam, the CRM created a record with the correct source, and the lead received the autoresponder. If the notification is missing, check SPF and DMARC on the sending domain before you touch the form code — authentication failures are the usual cause.
How do I confirm GA4 is tracking form submissions?
Open DebugView, submit a form on the live site, and confirm your form event fires with the expected name. Then check GA4 Admin to confirm that event is marked as a key event — Google's documentation is clear that an event only becomes a key event when you mark it as one. Wait 24 hours and confirm the Key events column in the Landing pages report shows a non-zero number. If you run ads, confirm the imported conversion reads Recording.
How do I test click-to-call on mobile?
Use a real iPhone and a real Android, not a desktop emulator. Tap the phone number in the header, the footer, the sticky call bar, and on a service page. The dialer should open pre-filled, and the digits it shows must match the number you want ringing. Two common failures: the number is plain text and does nothing when tapped, or the tel: href still contains the old number while the visible text shows the new one.
How soon should I submit my sitemap after launch?
Submit it in Search Console the day you go live, then check the Sitemaps report for a Success status within a week. Keep expectations calibrated: Google's documentation says "submitting a sitemap is merely a hint: it doesn't guarantee that Google will download the sitemap or use the sitemap for crawling URLs on the site." A single sitemap is capped at 50,000 URLs or 50MB uncompressed. It speeds discovery. It does not buy indexation.
What should you do the day after a website launch?
Re-run the same tests, because caching, DNS propagation and CDN rules often change what visitors see hours after go-live. Submit a fresh test lead and confirm it reaches the CRM. Check GA4 Realtime from a phone on cellular data, not office wifi. Click one of your own ads and confirm the call-tracking number swaps. Then search Google for site:yourdomain.com to see whether anything unexpected — like staging URLs — has already been picked up.
About the author
Hyder Shah
Founder & CEO, Foundgrove
Hyder Shah is the founder of Foundgrove, an SEO and GEO agency for US service businesses. See our editorial policy for how these guides are researched and reviewed.
Related reading
Other tactical pieces from the Foundgrove blog.
- Web Design · 8 min read
Redesign Your Website Without Losing Google Rankings
Most redesigns that tank traffic changed URLs with no redirect map. Here are the artifacts to demand from your designer before launch day.
Read the web design playbook → - SEO · 13 min read
SEO Checklist: 25 Things Every Service Business Website Needs
The 25-item SEO checklist for service businesses in 2026 — technical, on-page, off-page, and AI-search. With verification steps for each item.
Read the seo playbook → - SEO · 12 min read
Technical SEO Audit for Service Business Websites (2026)
Run a technical SEO audit on a small service site: fix Search Console indexation errors, validate schema, and pass Core Web Vitals first.
Read the seo playbook → - SEO · 12 min read
Google Search Console for Service Businesses: A 2026 Guide
Google Search Console shows the real queries you rank for, which pages get clicks, and what blocks indexing—use it to mine quick on-page wins, free.
Read the seo playbook → - Conversion · 8 min read
Contact Form Spam Is Poisoning Your Smart Bidding
Bot form submissions fire your conversion tag, so Google bids toward the traffic that makes bots. Here is the fix ladder, cheapest real-lead cost first.
Read the conversion playbook → - Conversion · 8 min read
Does Call Tracking Hurt Your Local SEO? The NAP Answer
Dynamic number insertion is safe for local SEO — until you hard-code a rented tracking number into your GBP, schema, or citations. Here is the exact rule.
Read the conversion playbook →
Want help applying this to your business?
Book a free 30-minute call. We'll review your current acquisition stack and show you the three highest-leverage moves for your industry and state. Or read how our website design service works.