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.