SEO has a noise problem: endless tactics, most of them marginal. This course covers the small number of things that reliably matter — what Google is doing, what it rewards, and the order to work in.
⏱ 6 min read
SEO — search engine optimisation — is the work of making a site more likely to appear when someone searches for what it offers. Not a trick, not a switch. It is the accumulation of decisions about what you publish, how it is built, and who else references it.
Google's pipeline has three stages, and almost every SEO problem is a failure at one of them.
| Stage | What happens | Typical failure |
|---|---|---|
| Crawling | Googlebot discovers URLs and fetches pages | Blocked in robots.txt; no links pointing at the page; server errors |
| Indexing | Google renders, understands and stores the page | noindex tag; duplicate content collapsed into a canonical; content too thin to bother with |
| Serving | Google selects and ranks results for a query | Content doesn't match intent; weak authority; a competitor simply answers better |
People skip to stage three and start rewriting titles for a page Google never indexed. Always work the pipeline forward: can it be crawled, is it indexed, does it deserve to rank? Search Console answers the first two in under a minute with URL Inspection.
Google uses a large number of signals, and nobody outside Google knows the full list or the weights. But the shape is stable and well documented:
SEO is slow. A new page on an established site can rank in days; a new site competing on commercial terms often takes six to twelve months to see meaningful movement. Anyone promising rankings on a timetable is either selling ads or guessing.
It also changes. Core updates land several times a year and reshuffle results. AI Overviews and AI Mode now sit above the classic list for many queries, which has pushed zero-click behaviour higher — one clickstream analysis put the share of Google searches ending with no external click at around two-thirds. That does not make SEO obsolete; it makes the click you do earn more valuable, and it makes being the cited source a goal in its own right. That is the subject of the companion AEO course.
Introducing How Search Works — Google Search Central. Gary Illyes on crawling, indexing and serving — the three stages, from the source. Open on YouTube ↗
SEO covers the unpaid results only. Paid search (Google Ads) buys placement instantly and stops the moment you stop spending. The two are complements: ads tell you within a week which phrases convert, which is the cheapest keyword research available, and SEO then makes those phrases pay for themselves indefinitely. A small budget on ads while SEO matures is often the sensible sequence rather than an either/or choice.
Most of the work in this course splits three ways. Content decisions — what to publish, what it says, who writes it — belong to whoever knows the business. Technical work belongs to whoever can deploy. Measurement belongs to whoever reports. On a one-person operation that is all the same person, which is fine as long as the three jobs get scheduled separately. Mixing them produces the classic failure mode: an afternoon that starts as a content plan and ends four hours into a plugin settings page.
⏱ 6 min read
Every query carries an intent — what the searcher is trying to accomplish. Match it and you have a chance. Miss it and no amount of on-page work saves you, because Google has already learned what kind of page satisfies that search.
| Intent | Example query | Page that wins |
|---|---|---|
| Informational | what is a canonical tag | Clear explainer, structured, skimmable |
| Commercial | best crm for small business | Comparison, criteria, honest trade-offs |
| Transactional | buy standing desk | Product or category page with price and stock |
| Navigational | shopify login | The official destination, nothing else |
| Local | web designer near me | Local business listing and a location page |
The fastest intent check is free: search the term and look at what ranks. Ten how-to articles means Google has decided this is informational, and your product page will not break in. This one habit prevents most wasted content work.
Start with what you already rank for. In Search Console, filter Performance to positions 8–20: those are queries where Google already considers you a candidate. Improving a page from 12th to 6th is far cheaper than creating a new one from nothing.
Then expand. Google's autocomplete, "People also ask", and "Related searches" are free and reflect real demand. Google Trends shows direction and seasonality. Paid tools — Semrush, Ahrefs — add volume estimates and difficulty scores; treat both as directional, never exact.
Three questions, in order. Can I win it? If the first page is all national brands with thousands of links, pick something narrower. Is it worth winning? Fifty searches a month from people ready to buy beats five thousand idle browsers. Does it fit a page I can actually build? If the answer needs a tool, a database, or expertise you lack, that is a real constraint.
Long-tail terms — longer, more specific phrases — are where new sites should start. "Wordpress maintenance for nonprofits in ohio" has less volume than "wordpress maintenance" and a far better chance of converting.
Do not build one page per keyword. Cluster variations that share intent onto a single strong page: "cost of a website", "how much does a website cost", "website pricing" all want the same page. Then add internal links between related clusters. Depth on a topic beats a thin page for every phrasing.
Every keyword tool sells a difficulty number. They are all proprietary, all mostly derived from the link profiles of the pages currently ranking, and none of them know your site. Use them to sort a list, never to make a decision. The more reliable test takes thirty seconds: search the term and ask whether you could plausibly write a better page than the ones on the first screen. If three of them are national brands with dedicated teams, you have your answer.
Separate the two in every report. Branded queries — people searching your company name — measure awareness and reputation, and they convert well for reasons that have nothing to do with SEO. Non-branded queries measure whether your SEO is finding new people. A campaign that grows only branded traffic has not grown your reach; it has captured demand someone else created. In Search Console, filter queries to exclude your brand name and watch that line specifically.
⏱ 6 min read
On-page SEO is everything you control on the page itself. Most of it is unglamorous and takes minutes.
The strongest single on-page element. It tells Google what the page is about and it is usually the headline in the results. Lead with the primary term, keep it roughly 50–60 characters so it does not truncate, make each one unique across the site, and write it for a human deciding whether to click. Google sometimes rewrites titles when yours is vague, keyword-stuffed, or ignores the query — a clear, specific title is the best defence.
Not a ranking factor. Still worth writing, because it is ad copy in the results and it moves click-through rate. Around 150–160 characters, describing what the reader gets, ideally echoing the query language they used.
One <h1> per page, describing the page. <h2> for main sections, <h3> beneath them — in order, without skipping levels for visual reasons. Headings are a structural outline, not styling. Phrase them the way people ask questions; it helps readers scan and it makes passages extractable, which matters more every year.
Short, lowercase, hyphenated, readable. /wordpress-maintenance/ not /?p=4471. Set the pattern once on a new site — changing URLs later means redirects, and redirects mean risk.
Descriptive filenames, real alt text describing the image for someone who cannot see it, modern formats (WebP), explicit width and height attributes so the layout does not jump, and lazy loading below the fold. Alt text is an accessibility requirement first and an SEO benefit second.
Links between your own pages do three jobs: they help Google find pages, they signal which pages you consider important, and the anchor text describes what the destination is about. Use descriptive anchors — "our maintenance plans" rather than "click here". A page with no internal links pointing at it is invisible to both crawlers and readers.
Introducing SEO Made Easy! — Google Search Central. Martin Splitt's short-format series on practical on-page fixes. Open on YouTube ↗
Readers and machines both weight the top of a page heavily. Get the point across before anyone scrolls: an H1 that names the topic, an opening paragraph that answers the implied question, and the primary term used naturally in the first sentence or two. Long scene-setting introductions are the most common on-page mistake in agency content, and they cost you both readers and extraction.
Use the primary term in the title, the H1, the first paragraph, one or two subheadings, and wherever it falls naturally in the body. That is the whole recipe. Density targets are a relic — pushing past roughly 2.5% reads as spam to humans and to quality systems alike. Natural variation and related terminology help more than repetition, because Google matches meaning rather than strings.
Meta keywords (ignored for well over a decade), exact-match domains as a trust signal, keyword-stuffed alt text, and hidden text of any kind. If a tactic exists purely to be read by a machine and never by a person, assume it is either neutral or a liability.
⏱ 6 min read
Google's guidance for the last several years reduces to one instruction: make content for people, not for search engines. That sounds like a platitude until you see what it rules out.
E-E-A-T stands for Experience, Expertise, Authoritativeness and Trustworthiness. It is not a score in the algorithm — it is the framework Google's human quality raters use to judge results, and those judgements train the systems that do rank pages. Treat it as a description of what Google is aiming at.
| Signal | What demonstrates it |
|---|---|
| Experience | First-hand use: your own photos, your numbers, what went wrong, what you'd do differently |
| Expertise | Named authors with real credentials and a bio that establishes why they can speak |
| Authoritativeness | Other credible sites citing, linking to, or quoting you on this subject |
| Trustworthiness | Accurate claims, dated updates, sources, contact details, clear ownership, sensible policies |
Trust is the load-bearing one. It matters most for what Google calls YMYL topics — "your money or your life" — finance, health, legal, safety. On those subjects, thin content by an anonymous author has essentially no path to ranking.
Content written to fill a keyword slot rather than answer a question. Summaries of other people's articles with nothing added. Pages that bury the answer to keep people scrolling. Keyword density chased above roughly 2.5%, which reads as spam to humans and machines alike. And unreviewed AI output published at volume — the problem is not that a model helped, it is that nobody with expertise checked whether it was right, useful, or original.
Google's stated position is that it rewards helpful content regardless of how it was produced. What it demonstrably does not reward is scaled, unreviewed, undifferentiated output. A workable rule: use AI for drafting, structuring, and research triage; add the experience, the specifics and the judgement yourself; and have a human who knows the subject sign off before publishing. If nothing on the page could only have come from you, it probably should not go up.
An existing page that already ranks is worth more attention than a new one. Refresh the facts, add the sections readers now expect, cut what aged badly, and update the date honestly. This is also the cheapest lever for AI visibility — freshness weighs heavily in what answer engines choose to cite.
"How long should a page be?" has one honest answer: long enough to answer the question completely and no longer. Longer pages correlate with better rankings largely because thorough pages tend to be longer, not because word count is rewarded. Padding a 600-word answer to 2,000 words makes it worse. Conversely, a genuinely complex topic covered in 400 words will lose to a page that actually explains it.
Three maintenance moves, all cheaper than publishing. Refresh pages that rank but have aged — update figures, add the sections readers now expect. Prune pages that get no traffic, serve no purpose and dilute the site — remove or noindex them. Consolidate several thin pages competing for the same intent into one strong page, redirecting the rest. An annual content audit doing all three usually produces more improvement than a quarter of new publishing.
⏱ 6 min read
Architecture is how your pages relate to each other. Get it right and crawlers and humans both find what they need; get it wrong and good pages sit stranded.
Aim for any important page to be reachable within three clicks of the homepage. Deeply buried pages get crawled less often and rank worse, not because of a depth penalty but because internal links are how importance is communicated and they thin out with distance.
The most reliable structure for content is a topic cluster: one broad hub page covering a subject, several specific pages covering its parts, all linked both ways. A hub on "WordPress maintenance" links out to pages on backups, security, updates and staging; each of those links back to the hub and sideways to siblings. The pattern tells Google the site has depth on the topic and gives readers a route through it.
Menus should reflect how customers think, not how the company is organised internally. Breadcrumbs help on any site more than two levels deep — they aid orientation, add internal links, and can appear in the results when marked up.
Duplication is rarely malicious. It comes from URL parameters, printer-friendly versions, http and https variants, www and non-www, product variants, and pagination. Google picks one version to index — the canonical — and you would rather choose it yourself with a rel="canonical" tag than leave it to guesswork. Search Console's URL Inspection shows which canonical Google actually chose, and that is the one that counts.
When a URL changes, redirect the old one to the closest equivalent with a 301 (permanent). Redirect to the relevant page, not the homepage — a homepage redirect is treated much like a soft 404. Avoid chains: A to B to C loses signal and slows crawling. Audit redirects after any migration, because this is where replatforming projects quietly lose traffic.
Thank-you pages, internal search results, tag archives, staging sites, cart and checkout URLs. Internal search pages in particular can create effectively infinite crawl space and waste crawl budget. Use noindex for pages that should exist but stay out of results, and robots.txt for URL patterns that should not be fetched at all.
Ecommerce and large content sites generate URLs faster than anyone intends. Filter combinations — colour, size, price, sort order — can produce thousands of near-identical pages from a handful of products. Internal search result pages can create effectively infinite URL space. Both waste crawl capacity and dilute signals.
The usual remedies: canonical faceted URLs to the main category, block obviously useless parameter patterns in robots.txt, and noindex internal search pages. On Shopify, watch collection URLs generated by filters; on WordPress, watch tag and date archives that nobody reads.
Replatforming is the highest-risk event in a site's life. The checklist that prevents most disasters: export every existing URL before you start, map each one to its replacement, implement 301s in a single hop, keep the old sitemap available briefly so Google rediscovers the redirects, verify the new site in Search Console before launch, and watch the Pages report daily for a fortnight afterwards. Losing thirty per cent of organic traffic to a redesign is entirely normal and entirely avoidable.
⏱ 6 min read
Technical SEO means making the site easy for search engines to access and understand. On a well-built WordPress or Shopify site, most of it is already handled. Here is the short list that genuinely matters.
A text file at your domain root telling crawlers which paths not to fetch. It controls crawling, not indexing — a blocked URL can still appear in results if other pages link to it, just without a useful description. Blocking CSS and JavaScript is a classic own goal: Google renders pages, and a page it cannot render is a page it cannot judge.
A list of URLs you want discovered, submitted through Search Console. Include canonical, indexable pages only — no redirects, no noindexed pages, no 404s. WordPress SEO plugins and Shopify generate these automatically. Sitemaps speed discovery; they do not force indexing.
Non-negotiable. Free through Let's Encrypt and included by every serious host. Check that http redirects to https once, with no chain, and that no assets load over http.
| Code | Meaning | SEO implication |
|---|---|---|
| 200 | OK | Normal. What indexable pages should return. |
| 301 | Moved permanently | Use for URL changes; passes signals to the new URL. |
| 302 | Temporary redirect | Fine for genuinely temporary moves; wrong for migrations. |
| 404 | Not found | Correct for genuinely removed pages. Not an error to fear. |
| 410 | Gone | A firmer 404. Speeds removal from the index. |
| 5xx | Server error | Serious. Sustained 5xx causes Google to crawl less. |
Google executes JavaScript, but rendering is queued and adds delay. If your primary content only exists after a client-side fetch, indexing gets slower and less reliable. Server-side rendering or static generation is the safer default for anything you need found. Test with URL Inspection's live test and read the rendered HTML — if the text is not there, Google may not have it either.
Structured data is machine-readable markup (use JSON-LD) describing what a page contains: an article, a product with a price, a local business with opening hours, an FAQ, a recipe. It does not directly raise rankings. It makes eligibility for rich results possible — stars, prices, FAQ dropdowns, breadcrumbs — which changes how much of the results page you occupy and how often you get clicked.
Two rules keep you out of trouble: mark up only what is visibly on the page, and validate with the Rich Results Test before shipping. Markup describing content a visitor cannot see is a guidelines violation, and it is one of the easier ones for Google to detect.
If you serve several languages or regions, hreflang annotations tell Google which version to show whom. It is fiddly and easy to get wrong — if you only have one language, skip it entirely.
Free covers more than people expect: Search Console for Google's own data, PageSpeed Insights for performance, the Rich Results Test for structured data, and your browser's developer tools for rendering and network questions. A crawler — Screaming Frog's free tier handles 500 URLs — finds broken links, redirect chains, missing titles and duplicate metadata faster than any manual review.
Paid platforms (Semrush, Ahrefs) add competitor visibility, link indexes and rank tracking. They are worth it when you manage several sites or need to show a client what competitors are doing. They are not necessary to do the work in this course well.
Some fixes are not plugin settings. Server response times, JavaScript rendering, hreflang implementation, large-scale redirect maps and CDN configuration all need someone who can deploy. Write the request as a problem with evidence — "this template returns 500 on mobile, here are five URLs and the Search Console screenshot" — rather than as a fix you have pre-diagnosed. You get a better answer, faster.
⏱ 6 min read
Page experience is a real but modest ranking input. Google's own framing is that it acts more like a tie-breaker between comparable pages than a lever that lifts weak content. It matters more for conversion than for rank — which is a better reason to fix it anyway.
| Metric | Measures | Good | Usual causes of failure |
|---|---|---|---|
| LCP | Time until the main content appears | ≤ 2.5s | Slow server, huge hero images, render-blocking CSS |
| INP | Responsiveness to every interaction | ≤ 200ms | Heavy JavaScript, long tasks, bloated third-party scripts |
| CLS | Unexpected layout shifting | ≤ 0.1 | Images without dimensions, injected ads, late-loading fonts |
INP replaced First Input Delay in March 2024 and is the strictest of the three. FID only measured the delay before the browser reacted to the first interaction; INP measures every interaction through to the visual response. Sites that scored well on FID routinely fail INP, and the fix is almost always less JavaScript rather than faster JavaScript.
PageSpeed Insights shows both. The lab score is a simulated run on a synthetic device — useful for diagnosis, not for judgement. The field data comes from the Chrome User Experience Report: real visits by real people on real connections. Field data is what Search Console reports and what relates to ranking. A site can score 98 in the lab and fail in the field.
Google indexes the mobile version of your site. If content is hidden, cut, or broken on mobile, that is the version being judged — the desktop layout does not rescue it. Test on an actual phone: tap targets big enough, text readable without zooming, no interstitial covering the content, forms that work with a thumb.
Compress and correctly size images, and serve WebP. Enable caching and a CDN. Remove plugins and third-party scripts you are not using — chat widgets, heat maps, old tag managers and abandoned analytics are the usual culprits. Load fonts locally with font-display: swap. On WordPress, a decent host plus one caching plugin usually beats five optimisation plugins fighting each other.
On a typical small-business site, the biggest performance problem is not the theme — it is the accumulated layer of scripts nobody owns. A chat widget, two analytics tools, a heatmap, a booking embed, a review widget, an abandoned A/B testing tool and three tracking pixels each cost load time and main-thread work, and INP punishes main-thread work specifically.
Audit them annually. Open the network panel, list every third-party domain the page contacts, and ask who asked for each one. Scripts that cannot be traced to a live business need should be removed, not deferred.
Uncompressed hero images remain the single most common LCP failure. Serve WebP, size the file to the largest dimension it will actually display at, set explicit width and height attributes, preload the hero image, and lazy-load everything below the fold. On WordPress a single image optimisation plugin handles most of this; on Shopify the theme usually does, provided nobody has uploaded a 4MB banner through the editor.
⏱ 6 min read
Off-page SEO is everything that happens elsewhere. Links from other sites remain one of the strongest signals Google has, because they are hard to fake at scale and they represent an independent vote.
Ten relevant links from real sites beat a thousand from directories nobody reads. Volume stopped being the game a long time ago.
Publish something worth citing — original data from your own work, a free tool, a genuinely thorough guide, a template people reuse. Be quoted — journalists need sources, and responding quickly and substantively to requests is one of the few reliable routes to high-authority coverage. Be where your customers are — industry associations, local business organisations, event sponsorships, supplier and partner pages. Reclaim mentions — find places your business is named without a link and ask.
Buying links. Private blog networks. Bulk directory submissions. Reciprocal link schemes. Comment-spam. All of it violates Google's spam policies, all of it is detectable, and the downside is a manual action that costs months to clear. The rule of thumb has not changed: if the only reason a link exists is SEO, it is a risk.
Increasingly, being mentioned matters even without a link. Corroboration across multiple credible sources is part of how both classic ranking and AI answer systems decide who is a legitimate authority on a subject. Consistent naming, an active presence where your industry talks, and being referenced by others compound over time in ways a link-buying campaign never does.
For any business with a physical location or a service area, reviews and directory consistency do heavy lifting. Google Business Profile reviews influence both local rankings and click-through. Name, address and phone should match exactly everywhere they appear — inconsistency is a genuine local ranking problem, not a myth.
Search Console's Links report shows what Google sees: top linking sites, most-linked pages, and the anchor text used. It is the only free first-party view of your link profile. Third-party tools have bigger indexes and better filtering, but they are estimates of a graph only Google can see fully.
Google's disavow tool tells Google to ignore specific inbound links. It exists for sites recovering from a manual action caused by their own link-buying, and it is dangerous in casual hands — disavowing legitimate links removes signals you were benefiting from. Google has said for years that it is generally able to ignore obvious spam links without help. Unless you have a manual action naming links, leave the tool alone.
The highest-authority links come from press coverage, and press coverage comes from having something to say. For a small agency that usually means original data from your own client work, a genuinely useful free tool, a strong opinion about something your industry is arguing over, or local relevance for a regional publication. Pitch a story, not a link request. The hit rate is low and the payoff per hit is large — which makes it a background activity rather than a weekly task.
⏱ 6 min read
Two things left: the local layer, and how to run the work so it compounds instead of scattering.
| Metric | Where | Read it as |
|---|---|---|
| Impressions and clicks | Search Console | Visibility and demand, 2–3 days delayed |
| Indexed page count | Search Console | Coverage health, not a growth metric |
| Organic sessions | GA4 | Traffic that arrived and loaded |
| Key events from organic | GA4 | The number that pays for the work |
| Core Web Vitals | Search Console (field) | Experience, trending over weeks |
Rankings are the weakest of these. They vary by person, place and device, and they are a proxy for the outcomes above. Track them if a client insists, but never lead with them.
Days 1–30 — foundations. Verify Search Console, install GA4 with one key event, submit a sitemap, fix indexing problems, get HTTPS and redirects clean, audit titles and descriptions on your top twenty pages, fix the worst Core Web Vitals failure.
Days 31–60 — content and structure. Pick one topic cluster and build it: one hub, three or four supporting pages, linked both ways. Improve three existing pages sitting at positions 8–20. Add structured data where it genuinely describes the page. Tidy internal links to your commercial pages.
Days 61–90 — authority and rhythm. Publish one genuinely citable asset. Pursue five relevant links or mentions. Get reviews flowing if you are local. Set the weekly Search Console routine and the monthly GA4 routine, and write down what you changed and when — a change log is what lets you attribute a result three months later.
Everything here also feeds visibility inside AI answers, because answer engines still retrieve from crawled, indexed, credible pages. What changes is the format of the win: a citation inside an answer rather than a click on a link. That is the AEO course, and it assumes exactly what you have just covered.
Lead with outcomes, then the leading indicators, then the work. Organic key events this month versus last. Clicks and impressions trend. What changed on the site and when. What is planned next. Resist ranking screenshots as the headline — they invite the client to fixate on a number that varies by device and location, and they set you up to explain volatility you cannot control.
Say plainly that early months produce indicators rather than revenue. A client who expects results in six weeks will cancel in eight; a client who expects indicators in six weeks and results in six months usually stays.
Work the same pipeline as always. Confirm the drop is real by comparing year over year. Establish whether it is sitewide or page-specific. Check indexing on affected URLs. Check your own change log for deploys and plugin updates. Only then consider whether a core update landed — and if one did, the response is still to improve the pages, because there is no switch to flip back.
⏱ ~6 min
Answer all ten, then score yourself. Explanations appear after scoring.
All consulted September 2026. Search and AI products change fast — check the primary documentation before acting on anything time-sensitive.