01Discovery & Scoping 6 items
-
Client brief / questionnaire completed — goals, audience, competitors, non-negotiables ⓘ
How: Send the standard intake questionnaire (Fluent Forms) and log responses; attach the completed form to the project record.
-
Business info collected for schema: legal name, address, phone, email, socials, logo ⓘ
How: Store this in the project record now; you will paste it directly into SEOPress Pro > Business Info once the site is built.
-
Domain, hosting, and DNS access confirmed and documented ⓘ
How: Confirm VPS/panel login and DNS zone access; create a subdomain or staging path on the VPS for this project immediately.
-
Competitor sitemap and content review completed ⓘ
How: Pull 3–5 competitor sitemaps and note their page types/keywords in the project notes.
-
Content inventory of existing site completed (redesigns only) ⓘ
How: Export the current XML sitemap and Search Console top-pages report before touching anything.
-
Scope, timeline, and investment range confirmed in writing ⓘ
How: Log the agreed scope in the project record; this is the reference point if the client asks for extras mid-build.
02SEO & AEO Strategy 6 items
-
Primary + secondary keyword mapped to each planned page ⓘ
How: Build the keyword map in a spreadsheet first; it becomes the input for SEOPress Pro meta title/description on every page.
-
Search intent classified per page — informational, commercial, navigational ⓘ
How: Tag each row in the keyword map as Blog or Landing Page — this decides which Spectra Pro template to build from.
-
Non-competitive, long-tail keywords prioritised for new/low-authority domains ⓘ
How: Favour 3–5 word phrases with clear intent over single competitive head terms in the keyword map.
-
AEO strategy defined: which pages need a direct-answer lede and FAQ schema ⓘ
How: Mark each key page in the keyword map as "needs FAQ block" — this is built with Spectra Pro's FAQ block, mirrored in SEOPress Pro schema.
-
Internal linking map planned across the whole site, not just per-page ⓘ
How: Note in the keyword map which 2–3 other pages each new page should link to, before writing any copy.
-
llms.txt content plan drafted for this project ⓘ
How: Confirm SEOPress Pro's llms.txt module is enabled sitewide (SEO > PRO > llms.txt) — new pages are picked up automatically, no manual edit needed per page.
03Information Architecture & UX 5 items
-
Full sitemap (page hierarchy) finalised and client-approved ⓘ
How: Sketch the page tree and get written sign-off before creating any pages in WordPress.
-
URL slugs are short, lowercase, hyphenated, and keyword-relevant ⓘ
How: Set the permalink slug manually on each WordPress page — do not leave it as the auto-generated numeric/default slug.
-
Breadcrumb structure planned and matches the sitemap hierarchy ⓘ
How: Enable Astra Pro's built-in breadcrumb module (or SEOPress Pro breadcrumbs) sitewide so the markup and visible trail always match.
-
Primary navigation and footer menu structure defined
How: Build menus in Appearance > Menus; assign via Astra Pro's header/footer builder, not hardcoded in a template.
-
301 redirect map prepared for any changed or removed URLs (migrations only) ⓘ
How: Build the old-URL-to-new-URL map in a spreadsheet, then enter it into SEOPress Pro's Redirections module before old pages go offline.
04Design 5 items
-
Brand tokens applied consistently — colour, type scale, spacing
How: Set brand colours, fonts, and container widths once in Astra Pro's Customizer global settings, not per-block.
-
Designs reviewed at mobile, tablet, and desktop breakpoints
How: Use Spectra Pro's responsive preview toggle on every section while building, not just at the end.
-
Text/background colour contrast checked against WCAG 2.2 AA (4.5:1 body, 3:1 large text) ⓘ
How: Check every text/background colour pair from the Astra Pro palette with a contrast checker before locking the style guide.
-
Hero and CTA hierarchy reviewed — one clear primary action per page
How: Build hero CTAs with Spectra Pro's Button block; keep exactly one primary-style button per hero.
-
Image assets exported optimised and compressed before handoff to development
How: Compress and export images before uploading to the WordPress Media Library — don't rely solely on a plugin to fix oversized originals after the fact.
05Development 8 items
-
Semantic HTML5 used throughout — header, nav, main, section, footer ⓘ
How: Astra Pro and Spectra Pro output semantic markup by default — avoid wrapping everything in generic Custom HTML/div blocks that flatten this structure.
-
Exactly one H1 per page, sequential heading order with no skipped levels ⓘ
How: Check heading levels in Spectra Pro's Heading block settings for each section — WordPress page titles are hidden sitewide, so the in-content H1 is the only H1.
-
Meaningful images have descriptive alt text; decorative images/icons are alt="" or aria-hidden
How: Fill in the Alt Text field in the WordPress Media Library on upload — don't leave it blank and don't stuff it with keywords.
-
All forms validated client- and server-side, with spam protection (honeypot/captcha)
How: Build the form in Fluent Forms with its built-in validation and spam-filtering (Akismet/honeypot) enabled — never a plain static HTML form.
-
Custom 404 page built and linked back into the site
How: Build via Astra Pro's custom 404 template option or SEOPress Pro's 404 monitor page, linking back to key pages.
-
HTTPS enforced sitewide, no mixed-content warnings
How: Issue an SSL certificate on the VPS (Certbot/Let's Encrypt), force HTTPS at the server/.htaccess level, then update the WordPress site URL to https://.
-
URLs are clean — no session IDs, tracking parameters, or query strings in canonical paths
How: Confirm permalinks are set to "Post name" structure in WordPress Settings > Permalinks.
-
Version control (Git) used for all custom code; no direct edits on production
How: Any custom PHP/CSS snippets go through Git on the VPS and are deployed to staging first, never edited live via FTP/file manager.
06On-Page SEO 7 items
-
Meta title unique per page, under 60 characters, contains primary keyword
How: Set in the SEOPress Pro metabox at the bottom of each page/post editor.
-
Meta description unique per page, under 160 characters, contains primary keyword
How: Set in the same SEOPress Pro metabox, directly under the meta title field.
-
H1 contains the primary keyword in full and matches page search intent
How: Set via the Spectra Pro Heading block set to H1 in the hero — not the (hidden) WordPress page title field.
-
Every H2/H3 contains the keyword or a natural variant — no generic headings
How: Review each Spectra Pro Heading block against the keyword map before publishing.
-
Internal links added contextually within body copy, not just in navigation
How: Link out from the Paragraph/Text block body copy to 2–3 related pages per the internal linking map from Phase 2.
-
Canonical tags set correctly — self-referencing unless intentionally pointing elsewhere
How: SEOPress Pro sets this automatically per page — only override it manually in the Advanced tab if there's a genuine duplicate-content reason.
-
XML sitemap generated, accurate, and free of noindexed or broken URLs
How: Confirm SEOPress Pro's XML sitemap module is active (SEO > XML Sitemap) and spot-check it at /sitemap.xml.
07Structured Data / Schema 7 items
-
Organization schema present sitewide
How: Fill in SEOPress Pro > Business Info once — it feeds Organization schema across every page automatically.
-
Person/author schema added on relevant content and about pages
How: Add via SEOPress Pro's Structured Data Types tab on the relevant page, or the author archive ProfilePage option.
-
Service schema added on service and commercial landing pages
How: Add via SEOPress Pro's Structured Data Types tab, selecting "Service" for each landing page.
-
FAQPage schema matches the visible on-page FAQ content word for word ⓘ
How: Build the visible FAQ with Spectra Pro's FAQ block, then copy the exact same questions/answers into SEOPress Pro's FAQ schema block — never paraphrase between the two.
-
BreadcrumbList schema matches the visible breadcrumb trail, if one exists
How: Use SEOPress Pro's breadcrumb + schema module together so both stay in sync automatically.
-
Article schema present on blog posts only where not already handled by the SEO plugin ⓘ
How: Leave Article schema to SEOPress Pro's automatic generation — do not also add it manually via a Custom HTML block.
-
Every schema block validated in Google's Rich Results Test with zero errors
How: Test the live (or staging, if publicly reachable) URL in Google's Rich Results Test before marking this done.
08AEO — AI Search Readiness 7 items
-
Every key page opens with a 1–2 sentence direct, quotable answer before any pitch copy ⓘ
How: Write this sentence first in the Spectra Pro hero Paragraph block, before the persuasive/marketing paragraph.
-
FAQ sections included on key pages, matched exactly to FAQPage schema
How: Same Spectra Pro FAQ block + SEOPress Pro schema pairing as Phase 7 — apply it to every key landing/blog page, not just the homepage.
-
Question-style headings used where the content is genuinely answering a question
How: Phrase Spectra Pro Heading blocks as real questions ("What is...", "How does...") only where the content actually answers that question.
-
llms.txt is live, valid Markdown, and starts with a single # H1 header ⓘ
How: Check SEOPress Pro > PRO > llms.txt tab — confirm the generated content starts with a single # heading, not a list or blockquote.
-
robots.txt allows known AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) unless intentionally blocked
How: Review SEOPress Pro's robots.txt editor (SEO > robots.txt) — confirm no blanket Disallow rules target these user-agents.
-
No content critical to understanding the page is rendered only via client-side JavaScript ⓘ
How: View source (not inspect element) on the published page and confirm headings/body copy are present in the raw HTML, not injected after load.
-
Accordions/tabs use CSS to hide content, not display:none injected only after a JS event
How: Spectra Pro's Accordion/FAQ blocks already render content in the DOM and only toggle visibility with CSS — confirm this is the block being used, not a custom JS-only accordion.
09Technical SEO & Crawlability 6 items
-
robots.txt reviewed line by line — no accidental blanket Disallow ⓘ
How: Open SEOPress Pro's robots.txt editor and read every line before go-live, especially if the site was cloned from staging.
-
No orphan pages — every published page is reachable via at least one internal link
How: Cross-check the sitemap against the internal linking map from Phase 2 before launch.
-
301 redirects tested and working for every changed/removed URL
How: Test each redirect in SEOPress Pro's Redirections module by visiting the old URL directly in an incognito window.
-
No conflicting or duplicate canonical tags across the site
How: Spot-check page source on a sample of pages for exactly one canonical tag each.
-
No near-duplicate pages competing for the same primary keyword
How: Re-check the keyword map from Phase 2 — flag and merge/differentiate any two pages targeting the same primary keyword.
-
Staging site is itself noindexed and not competing with production in search
How: Keep WordPress Settings > Reading > "Discourage search engines" checked on the VPS staging subdomain until launch.
10Performance & Core Web Vitals 7 items
-
LCP under ~2.5s on mobile and desktop ⓘ
How: Enable server-level caching on the VPS (e.g. LiteSpeed/Redis) and a caching plugin; test with PageSpeed Insights on the live URL.
-
CLS under 0.1 — no unexpected layout jumps during load ⓘ
How: Set explicit width/height on images in the Media Library and check Astra Pro's font-loading strategy is set to swap/optional, not blocking.
-
INP within a good range — interactions feel instant, not laggy ⓘ
How: Avoid stacking too many heavy Spectra Pro animation blocks on one page; test real taps on a mid-range phone, not just desktop.
-
Images lazy-loaded below the fold and served in modern formats (WebP/AVIF)
How: Enable WebP conversion and lazy-load in your caching/image-optimisation plugin on the VPS.
-
Web fonts subset, preloaded where critical, and never block first paint
How: Review Astra Pro's typography/font-loading settings — limit font weights actually used sitewide.
-
CSS and JavaScript minified; unused code removed
How: Enable minification in your caching plugin; disable unused Spectra Pro block CSS/JS via its Performance/Asset settings.
-
Caching and CDN configured at the hosting level
How: Configure server-level caching on the VPS directly (not only a plugin) and connect a CDN (e.g. Cloudflare) at DNS level.
11Accessibility (WCAG 2.2 AA) 5 items
-
All interactive elements are reachable and operable by keyboard alone
How: Tab through the whole page manually — Astra Pro and Spectra Pro blocks are keyboard-accessible by default if not overridden with custom JS.
-
Visible focus states present on every focusable element
How: Check Astra Pro's global focus-outline setting isn't disabled in custom CSS.
-
Every form field has a properly associated label
How: Fluent Forms generates proper <label> elements automatically — don't replace them with placeholder-only fields.
-
ARIA attributes used correctly and only where native HTML semantics aren't enough
How: Avoid adding ARIA roles on top of Spectra Pro blocks unless you've confirmed the default markup is insufficient.
-
prefers-reduced-motion respected for all non-essential animation
How: Check Spectra Pro's animation settings/global option for reduced-motion support before shipping heavy scroll animations.
12Content & Copy QA 5 items
-
All copy proofread for spelling, grammar, and factual accuracy
How: Read every page aloud once before publishing — catches more than silent reading.
-
No AI-sounding stock phrasing ("in today's digital landscape", "unlock", "seamless", "delve into", "game-changing") ⓘ
How: Search the page content for this phrase list before publishing and rewrite any hits in plain language.
-
No placeholder or Lorem Ipsum text remaining anywhere on the live site
How: Search the whole site for "lorem" and default Astra Pro/Spectra Pro demo text before launch.
-
Legal pages present and current — privacy policy, terms, cookie notice if applicable
How: Confirm these exist as real WordPress pages and are linked in the Astra Pro footer builder.
-
Third-party assets (fonts, images, icons) have correct licensing/attribution
How: Keep a licensing note in the project record for any stock imagery or premium icon sets used.
13Pre-Launch Technical QA 7 items
-
Cross-browser tested — Chrome, Safari, Firefox, Edge
How: Test the staging URL on the VPS directly in each browser, not just via responsive-mode emulation.
-
Cross-device tested — iOS, Android, tablet, desktop
How: Test on at least one real phone in addition to browser dev tools.
-
All forms tested end-to-end, including confirmation/notification email delivery
How: Submit every Fluent Forms form live, confirm the admin notification arrives, and confirm any FluentCRM automation/tag triggers correctly.
-
Full internal and external broken-link check completed
How: Run SEOPress Pro's broken link checker (or a crawler tool) across the whole site before go-live.
-
Favicon and social share (Open Graph/Twitter Card) images set for every page
How: Set the site favicon in Astra Pro's Customizer, and default/per-page OG images in SEOPress Pro's Social tab.
-
Staging-to-production migration follows the standard checklist, not a manual live edit
How: Use your standard VPS staging-to-production push (database + files), not hand-editing the live server.
-
Full backup taken immediately before go-live
How: Trigger a manual full backup (files + database) on the VPS right before cutover, in addition to any scheduled backups.
14Launch Day 7 items
-
DNS/hosting cutover scheduled at a low-traffic time, client informed in advance
How: Update DNS records pointing to the VPS at a quiet time; DNS propagation can take up to 24–48 hours.
-
SSL certificate verified live and valid on the production domain
How: Confirm HTTPS loads cleanly with no browser warnings on the live domain, not just the staging subdomain.
-
Search Console and Analytics installed and confirmed tracking correctly
How: Verify domain ownership in Search Console and confirm the tracking snippet fires on the live domain.
-
XML sitemap submitted in Google Search Console and Bing Webmaster Tools
How: Submit the SEOPress Pro-generated /sitemap.xml URL in both consoles.
-
Old URLs (migrations) confirmed redirecting correctly on the live domain
How: Re-test the SEOPress Pro redirect map on the live domain, not just staging — DNS changes can affect redirect behaviour.
-
Uptime monitoring enabled on the production site
How: Point an uptime monitor (e.g. UptimeRobot, or the VPS panel's own monitoring) at the live domain.
-
robots.txt reconfirmed live — not the staging version ⓘ
How: Visit /robots.txt on the live domain directly and confirm it matches SEOPress Pro's production settings, not a cached staging version.
15Post-Launch — First 30 Days 7 items
-
Indexing status monitored via Search Console's Coverage/Pages report
How: Check weekly for the first month; investigate any "Discovered — not indexed" pages.
-
Manual search test — brand name and a few key pages confirmed appearing in results
How: Search Google directly for the brand name and 2–3 key page titles once indexed.
-
Schema re-validated live via Rich Results Test, not just on staging
How: Re-run the Rich Results Test on the production URLs after go-live.
-
llms.txt and robots.txt re-verified on the live production domain
How: Visit both files directly on the live domain and confirm they match SEOPress Pro's intended production configuration.
-
Core Web Vitals field data checked once available (CrUX report, ~28 days of traffic)
How: Check the live domain in PageSpeed Insights again once enough real-user data has accumulated.
-
Client handover document delivered — credentials, maintenance plan, support contacts
How: Send credentials securely (not by plain email) and log the handover date in the project record.
-
First monthly maintenance report scheduled
How: Set up the recurring report reminder/automation in FluentCRM against this client's contact record.
16Ongoing Maintenance Cadence 5 items
-
Weekly: uptime and security monitoring reviewed
How: Check the VPS panel and uptime monitor dashboard weekly, not only when something looks wrong.
-
Monthly: Core Web Vitals and SEO ranking review
How: Pull PageSpeed Insights and Search Console data monthly; log trends in the project record.
-
Monthly: backup verified as restorable, not just taken ⓘ
How: Restore the latest VPS backup to a throwaway environment monthly and confirm the site loads correctly.
-
Quarterly: full content, schema, and llms.txt audit for accuracy and drift
How: Re-check SEOPress Pro schema and llms.txt output quarterly against what's actually live on the page.
-
Quarterly: dependency/plugin/CMS version updates applied on staging first
How: Update WordPress core, Astra Pro, Spectra Pro, SEOPress Pro, Fluent Forms, and FluentCRM on staging, test, then push to production on the VPS.