The Ops Atlas xOps School

Business & Growth Overlapping synonym Sources verified

SEO Operations

SEO Operations runs search engine optimisation as a managed programme: one intake for work, priorities set against policy and real capacity, repeatable production, and measurement that is honest about what search data cannot show.

Key takeaways

  • "SEO operations" is an informal label, used mostly in job titles; the practice behind it, running SEO as a programme, is real. This page owns the operating model and SEOps owns crawl, index and release engineering (an Atlas editorial split).
  • Send every request through one intake, apply policy gates (paid links, scaled content) before scoring, then cut the backlog to the real capacity of writers, SEOs and engineers.
  • Search Console is the first-party source, but its tables omit anonymized queries and long-tail rows: brand plus non-brand usually falls short of the total, and average position is the topmost position averaged over impressions.
  • Judge a change against a control group of similar pages; a plain before/after comparison mixes your change with seasonality, core updates and AI features.
  • AI Overviews and AI Mode are counted in the Web search type; since 2026-08-31 Search Console also has a generative AI report (impressions) and a site-level opt-out control (as of October 2026).
  • You are responsible for what an agency does on your site: keep ownership of accounts, give auditors read-only access, and reject guaranteed rankings and paid links.

SEO Operations is the way an organisation runs search engine optimisation (SEO) as a programme rather than a series of favours. Requests arrive through one intake, are checked against search policy, scored, and committed only when writers, SEOs and engineers have the days to do them. Work follows written procedures and is judged by measurement that knows the limits of search data.

When it works, anyone can see what the team is doing in search and why, and what last quarter’s work changed. When it fails, an agency reports rising “visibility” while sign-ups from search fall, and a template change ships that nobody in SEO saw.

For beginners, SEO and content leads, agencies and analysts. Sources last verified 2026-10-23.

Question Short answer
Goal A repeatable SEO programme whose contribution to the business is measured, not asserted
Primary users SEO managers and leads, content leads, marketing leaders, agency account and delivery teams, analysts
In scope Intake and prioritisation, search intent as a production input, content optimisation and internal linking as a process, SOPs, capacity, reporting and its data limits, policy governance, agency versus in-house
Handed off Crawling, indexing, rendering, structured data and SEO checks in CI → SEOps; the content lifecycle beyond search → ContentOps; Core Web Vitals measurement and fixes → WebOps; paid search → MarketingOps
Prerequisites SEOps for the technical basics; spreadsheet skills; basic statistics help
Key outputs Intake form, scored backlog, SOPs, measurement policy, monthly review, vendor policy, risk register
Term status Overlapping synonym: an informal label for running SEO as a programme; no standard definition (evidence below)

Most organisations already “do SEO”; the problem is unmanaged work. The “before” column is a composite of common failure patterns, not a report about any company.

Area Without an operating model With one
Requests Arrive by chat, meeting and email; loudest wins One intake; every item has an owner, a hypothesis and a size
Priorities Whatever a tool’s audit flagged red Scored by expected impact, confidence and effort, cut to capacity
Engineering work Tickets languish; SEO learns of template changes after release An agreed lane in the engineering plan and a release check owned with SEOps
Content Volume targets; old pages decay unowned Briefs from intent research, a refresh cycle, consolidation of overlaps
Reporting Rank-tracker screenshots, total traffic Non-brand clicks, conversions, tested changes, stated data gaps
Vendors Agency holds the accounts; nobody reads its changes You own accounts; read-only audits; change log; banned tactics written down

The cost is real but hard to see. Google warns that hiring an SEO can “risk damage to your site and reputation” and that “you are responsible for the actions of any companies you hire”.[1] Changes can take hours or several months to show,[2] so an unmanaged programme learns slowly from noisy data and confuses activity with results.

What SEO Operations is not: naming, the SEOps split and boundaries

Link to section “What SEO Operations is not: naming, the SEOps split and boundaries”

Is the term established? The practice is; the label is not. The US O*NET database lists “Search Marketing Strategists”, with SEO Consultant and SEO Strategist among reported job titles,[3] and Google publishes extensive guidance for site owners and for people who hire SEOs.[1] But “SEO operations” has no standard definition or standards body. Job titles using it mean different things: one agency’s “Head of SEO Operations” led the consulting team and owned work quality,[4] while a 2023 “SEO Operations Manager” posting described hands-on link building and keyword research.[5] Agencies also use “SEO ops” for maps of the tasks, tools and skills an enterprise SEO programme needs.[6] This page therefore classifies the label as an overlapping synonym for running SEO as a programme.

SEO Operations is also not:

  • Technical SEO. This page gets a canonical fix into the engineering plan and judges its effect; diagnosing and implementing it is on SEOps.
  • Paid search. Google says advertising “won’t have any effect on your site’s presence in our search results”.[1] Paid search campaigns are performance marketing (MarketingOps); AdOps covers ad serving and programmatic display.
  • Gaming an algorithm. Google’s spam policies now include attempts to manipulate generative AI responses in Search.[7]
  • A promise. “No one can guarantee a #1 ranking on Google.”[1]

No documented origin exists for “SEO operations”; it appears mostly in job titles and agency material (this Atlas’s reading of the evidence above). Milestones that shape how programmes run today:

  • 2015: Google rebranded Webmaster Tools as Search Console, noting users who were marketers and SEO experts as well as webmasters.[8]
  • October 2022: Google replaced its Webmaster Guidelines with Search Essentials;[9][1] their spam policies are the closest thing SEO has to a rulebook.
  • November 2023: Google Analytics 4 removed first-click, linear, time-decay and position-based attribution.[10]
  • 2024–2026: AI Overviews and AI Mode changed results pages;[11] on 2026-08-31 a generative AI report and an opt-out control reached all sites.[12][13]
  • Query, impression, click, CTR: what someone searched; a link to your site was shown (for most results, on the current results page, even if not scrolled into view); the person left Google for your page; clicks ÷ impressions.[14]
  • Average position: the topmost position of your site (or page) in results, averaged over impressions; Google calls it “a complex metric that can be misleading”.[14]
  • Anonymized queries: queries hidden from Search Console tables for privacy; they still count in chart totals.[15]
  • Brand / non-brand: queries that do or do not name you; non-brand is the usual measure of demand SEO captured.
  • Search intent: what the person wants. Google’s rater guidelines use Know (including Know Simple), Do, Website and Visit-in-person intents.[16]
  • Cannibalisation: several of your pages competing for one intent.
  • Content decay: a page losing clicks because it went stale or the results page changed.
  • Core update: a broad change to Google’s ranking systems, made several times a year; broad core updates are announced on the ranking-updates list, smaller ones are not.[17]
  • Manual action: a penalty applied after a human reviewer at Google finds pages that break spam policies.[18]
  • E-E-A-T: experience, expertise, authoritativeness and trust; reflected by Google’s systems, not a ranking factor itself.[19][2]
  • AEO / GEO: answer engine and generative engine optimisation; for its AI features Google calls this “still SEO”.[20]

A mental model: a portfolio of bets read through a fogged window

Link to section “A mental model: a portfolio of bets read through a fogged window”
  1. A portfolio of bets. Every item (a refresh, a template fix, a new guide) is a bet with a payoff, a confidence and a cost. You cannot know which will pay, so you size bets, cap risky exposure and keep a flow of small, testable ones.
  2. A fogged window. Results arrive through data that is delayed, partial (anonymized queries, row limits, declined consent) and moved by forces you do not control (seasonality, core updates, AI features). Clean the window where you can; state where you cannot.

Failed programmes forget one picture: they bet without measuring, or watch dashboards without a portfolio.

Figure 1. Where SEO Operations sits among its neighbours
technical ticketsindex health, release checksbriefs, refresh listCore Web Vitals reportsorganic leads and pipelinemetric definitionsno effect on organic rankingSEO Operations: intake,priorities, production,measurement, governanceSEOps: crawl, index, render,CI checksContentOps: content lifecycleWebOps: speed, Core WebVitals, uptimeMarketingOps: campaigns,leads, attributionAnalyticsOps: certifiedmetricsPaid search and otheradvertising
Diagram source (Mermaid)
flowchart TB
  SEOOPS["SEO Operations: intake, priorities, production, measurement, governance"]
  SEOPS["SEOps: crawl, index, render, CI checks"]
  CONTENT["ContentOps: content lifecycle"]
  WEB["WebOps: speed, Core Web Vitals, uptime"]
  MKT["MarketingOps: campaigns, leads, attribution"]
  ANALYTICS["AnalyticsOps: certified metrics"]
  ADS["Paid search and other advertising"]
  SEOOPS -->|"technical tickets"| SEOPS
  SEOPS -->|"index health, release checks"| SEOOPS
  SEOOPS -->|"briefs, refresh list"| CONTENT
  WEB -->|"Core Web Vitals reports"| SEOOPS
  SEOOPS -->|"organic leads and pipeline"| MKT
  ANALYTICS -->|"metric definitions"| SEOOPS
  ADS -.->|"no effect on organic ranking"| SEOOPS
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class SEOOPS core
  class SEOPS,CONTENT,WEB,MKT,ANALYTICS,ADS neutral

Text equivalent: SEO Operations, in the middle, swaps technical tickets for index health and release checks with SEOps, sends briefs to ContentOps, receives Core Web Vitals reports (WebOps) and metric definitions (AnalyticsOps), and passes organic leads to MarketingOps. A dotted line: advertising has no effect on organic ranking.

Neighbour Shared scope Their focus This page’s focus
SEOps Search Console, spam policies, Core Web Vitals Index coverage, crawl diagnostics, CI checks, staying compliant release by release Performance reporting and its limits, governance, which technical work gets done
ContentOps Briefs, refreshes, governance Content models, workflow, reuse, localisation, retirement Search inputs: intent, demand map, internal links, refresh priority
WebOps Core Web Vitals Measuring and fixing them (see its Core Web Vitals playbook) Reporting them alongside search results
MarketingOps Attribution, lead flow, search results pages Campaigns including paid search, scoring, the funnel contract Organic search as a source of demand
AnalyticsOps Dashboards, metric definitions Certifying metrics (see its certification playbook) Search-specific metric rules
MarTechOps Tags, consent mode Stack and tag infrastructure What consent loss does to organic numbers
AdOps Pages that carry both content and display ads Ad serving, programmatic supply chain Organic only

Core Web Vitals show the split: Google says good scores align “with what our core ranking systems seek to reward”;[21] WebOps fixes them, SEOps explains their search role, this page reports them beside search outcomes.

No official manifesto for SEO operations exists. The following charter is this Atlas’s proposal.

Mission. Grow the value the organisation gets from organic search, within search-engine policies, by running SEO as a measured portfolio of work the business can see and steer.

Non-goals. No promised rankings, no links bought to pass ranking credit, no pages made mainly for search engines, no numbers we cannot reproduce.

  1. People-first content, then SEO. Google says SEO “can be a helpful activity when it is applied to people-first content, rather than search engine-first content”.[19] Trade-off: you decline topics where you have nothing useful to say.
  2. Policy before priority. Items that conflict with spam policies are rejected before scoring, so a high score cannot smuggle them in.
  3. One backlog, real capacity. Commitments never exceed the days writers, SEOs and engineers actually have.
  4. Hypothesis, then evidence. Each item says what should change and how you will know.
  5. Own the accounts and the data. The organisation, not a vendor, owns Search Console, analytics and the change log.
  6. Report the fog. Every report states what data is missing and how big the gap is.
  7. Maintain what you publish. Each page has an owner and a review date.
Block What it is Why it matters
Search demand map Topics and queries by intent, each mapped to one target page Prevents cannibalisation and orphan topics
Page inventory Indexable pages with owner, intent, last substantive update Makes decay and ownership visible
Intake and backlog One form, one scored list, explicit cut line Turns requests into decisions
SOPs Procedures for briefs, refreshes, merges, technical hand-off, reporting Repeatable quality across people and vendors
Measurement policy Metric definitions, the brand rule, segments, gaps, test rules Ends arguments about whose number is right
Governance pack Banned tactics, vendor rules, access register, AI content rule Limits policy and legal risk

Titles vary; the jobs below exist in any working programme, even when one person holds several.

Activity SEO lead Content lead Engineering (with SEOps) Analyst Marketing leader
Intake and scoring A/R C C C I
Demand map and briefs A R I C I
Content refresh and consolidation A R C (redirects) C I
Technical items (templates, canonicals) A I R I I
Measurement policy and reports A I I R C
Policy and vendor governance R C C I A
Quarterly plan and budget R C C C A

R = responsible, A = accountable, C = consulted, I = informed. Key skills: intent analysis, editorial judgement, enough technical literacy to write a good ticket, basic statistics, and saying “not this cycle” with reasons.

Every item moves through the same states: proposed, gated (policy and duplicate check), scored, committed or parked, in production, shipped (dated and annotated), measuring (a fixed window of several weeks, given Google’s advice on timing[2]) and closed with a verdict: worked, no detectable effect, or harmed. “No detectable effect” still calibrates future confidence scores.

Cadence Who Inputs Outputs
Weekly triage (30 min) SEO, content and engineering leads New intake Gated, scored items
Cycle planning (2–4 weeks) Same plus analyst Backlog, capacity Committed list, cut line
Monthly review SEO lead, analyst, marketing leader Measurement pack Verdicts, decay list, risks
Quarterly planning Leadership Results, budget Themes, capacity split, vendors
Event-driven SEO lead, SEOps Traffic alert, core update, manual action Runbook

Escalation: policy questions go to the accountable marketing leader (and legal where law applies); a release that may harm search goes to its engineering owner through the gate defined with SEOps and ReleaseOps.

Reference architecture: the programme as a system

Link to section “Reference architecture: the programme as a system”

For a business function the architecture is a process: where work comes from, the gates it passes, its production lanes, and the loop that feeds results back.

Figure 2. Process architecture of an SEO programme
failspassescalibrate scores, updatedemand mapSignals: demand research,Search Console, requests,auditsOne intake formPolicy and duplicate gateRejected with reasonScore and cut to capacityContent lane: briefs, refresh,mergeTechnical lane: engineeringticketsEarned links and digital PRShip with date and annotationMeasure against controlMonthly review: verdicts
Diagram source (Mermaid)
flowchart TB
  IN["Signals: demand research, Search Console, requests, audits"]
  INTAKE["One intake form"]
  GATE{"Policy and duplicate gate"}
  REJ["Rejected with reason"]
  SCORE["Score and cut to capacity"]
  C["Content lane: briefs, refresh, merge"]
  T["Technical lane: engineering tickets"]
  L["Earned links and digital PR"]
  SHIP["Ship with date and annotation"]
  MEAS["Measure against control"]
  REV["Monthly review: verdicts"]
  IN --> INTAKE --> GATE
  GATE -->|"fails"| REJ
  GATE -->|"passes"| SCORE
  SCORE --> C
  SCORE --> T
  SCORE --> L
  C --> SHIP
  T --> SHIP
  L --> SHIP
  SHIP --> MEAS --> REV
  REV -.->|"calibrate scores, update demand map"| IN
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class INTAKE,SCORE,SHIP,MEAS,REV core
  class GATE decision
  class REJ risk
  class IN,C,T,L neutral

Text equivalent: Signals (demand research, Search Console, requests, audits) feed one intake form. A policy and duplicate gate rejects an item with a reason or passes it to scoring and the capacity cut. Work goes to the content, technical or earned-links lane, ships with a date, is measured against a control and judged at the monthly review, which feeds calibrated scores and an updated demand map back into the signals.

Three design choices carry most of the weight:

  • The gate comes before the score. Otherwise an attractive estimate (“500 city pages”) pushes people into tactics the spam policies name.[7]
  • The technical lane is a contract. Engineering agrees a standing share of capacity and SEOps defines release checks; without it, the backlog fills with tickets nobody builds.
  • Earned links are a lane, bought links are not. Paid placements are fine only when qualified with rel="sponsored" or rel="nofollow"; links that pass ranking credit for money are link spam.[7]

End-to-end workflow: a content refresh from signal to verdict

Link to section “End-to-end workflow: a content refresh from signal to verdict”
Figure 3. Handoffs in one content refresh
EngineeringContent leadSEO leadAnalystCheck dates, seasonality, cannibalisationDecay alert: guide lost 35% clicksBrief: intent, gaps, merge two pagesDraft for search reviewApproved, with redirect mapPublish merge, redirect old URLRedirect live, release notedShipped, with dateAnnotate, start 6-week windowVerdict versus control pages
Diagram source (Mermaid)
sequenceDiagram
  participant AN as Analyst
  participant SEO as SEO lead
  participant CL as Content lead
  participant EN as Engineering
  AN->>SEO: Decay alert: guide lost 35% clicks
  Note over SEO: Check dates, seasonality, cannibalisation
  SEO->>CL: Brief: intent, gaps, merge two pages
  CL->>SEO: Draft for search review
  SEO->>CL: Approved, with redirect map
  CL->>EN: Publish merge, redirect old URL
  EN->>CL: Redirect live, release noted
  CL->>SEO: Shipped, with date
  SEO->>AN: Annotate, start 6-week window
  AN->>SEO: Verdict versus control pages

Text equivalent: The analyst flags a guide that lost 35% of its clicks. The SEO lead checks dates, seasonality and cannibalisation, briefs the content lead, reviews the draft and approves it with a redirect map. The content lead has engineering publish the merge and redirect; engineering confirms. The SEO lead annotates the ship date and starts a six-week window; the analyst returns a verdict against control pages.

Happy path. The merge and redirect ship in one cycle and six weeks later the page beats its control group.

Exception paths. Seasonal: sixteen months of data show the same dip last year;[22] close the alert. Core update rolling out: wait at least a full week after it completes;[17] re-check. Redirect cannot ship: hold the merge too. No detectable effect: record it and lower confidence for similar refreshes.

  1. Every request uses the intake form; chat requests get a link to it.
  2. Gate within a week: spam policy conflict, duplicate page or queued item, legal or brand review. Rejections get a reason.
  3. Score passing items (see prioritisation).
  4. Cut to capacity at planning; parked items are re-scored when data changes.
  5. Accept only items with an owner, ship date, hypothesis and measurement window.

Playbook: keyword research and search intent as a production input

Link to section “Playbook: keyword research and search intent as a production input”

Keyword research feeds the demand map; it is not a deliverable in itself.

  1. Collect queries from your Search Console data, from customer language in sales and support, and from keyword tools.
  2. Treat volumes as rough: Keyword Planner shows estimates averaged over 12 months by default, including close variants;[23] Google Trends is a sample normalised to 0–100, with noise added and low-volume terms shown as zero.[24] Rank options with them, and do not turn them into point forecasts: if leaders need a forecast, give a range with stated assumptions and compare it with the verdicts each quarter.
  3. Classify intent (Know, Do, Website, Visit-in-person)[16] from the current results page, not just the words.
  4. Map each intent cluster to one page; two pages for one intent is a merge candidate.
  5. Write down why you can serve the intent better than current results. If you cannot, do not write the page.

Playbook: briefs, optimisation and internal linking

Link to section “Playbook: briefs, optimisation and internal linking”

A brief states the reader, intent, questions to answer, evidence and first-hand experience to show, and the pages that should link to it. Google’s “Who, How, and Why” questions (who made it, how, including automation, and why) make a good checklist.[19] On internal links, Google’s rule of thumb is: “Every page you care about should have a link from at least one other page on your site.”[25] Review against the brief, not a keyword-density score: Google has no preferred word count and ignores the meta keywords tag.[2][19]

Signal Likely action Check first
Clicks falling, content outdated Refresh substantially Seasonality; a core update in progress
Two pages ranking for one intent Consolidate into one, redirect the other Which page has the links and conversions
Page cannot meet any real need Prune or exclude from Search Whether it serves users who arrive directly
Impressions steady, clicks falling Rewrite title and snippet AI features or rich results on the results page

Google calls deleting content “a last resort”; wanting to delete whole sections suggests they were made for search engines first.[17]

Playbook: handing technical work to engineering

Link to section “Playbook: handing technical work to engineering”

Write tickets as engineers want them: template or URL pattern, evidence, expected behaviour, acceptance test, risk. SEOps owns diagnosis and release checks; this page owns getting the work into the plan. Agree in advance which search signals can block a release (ReleaseOps), not on launch day.

Count person-days per lane after meetings, maintenance and support. Two Atlas heuristics, not benchmarks: reserve a fixed share of content capacity for refreshes before planning new pages, because every page creates maintenance work; and if completed days fall below about 80% of committed days for three cycles, you are planning against imaginary capacity.

There is no standard for running an SEO programme. What exists:

Kind Example Status
Search-engine rules Google Search Essentials and spam policies[7] Mandatory to appear in Google; enforced by demotion or manual action
Search-engine guidance Helpful content, SEO Starter Guide, generative AI guidance[19][2][20] Recommendations from the engine itself
Rater guidelines Search Quality Evaluator Guidelines[16] Evaluate Google’s systems; ratings do not directly change rankings[26]
Prioritisation RICE: “total impact per time worked”[27] Product method, adapted here
Experimentation Page-bucket tests;[28] CausalImpact[29] Established statistics; tools differ
Law Consumer rules on fake reviews (for example the US FTC rule[30]) Mandatory in their jurisdiction

Prioritisation in practice. RICE uses impact steps of 3, 2, 1, 0.5 and 0.25 and confidence of 100%, 80% or 50%.[27] Artefact 2 adapts each field to SEO. The score ranks; it does not forecast (Lab 1).

Named tools are examples, not endorsements. Google says third-party tools “don’t have access to our internal ranking data” and that it does not evaluate them.[31]

Category Job Examples Selection criteria and risks
First-party search data Clicks, impressions, index status Google Search Console; Bing Webmaster Tools Row limits, anonymization
Web analytics Organic sessions and conversions Google Analytics 4 or similar Consent loss, attribution model
Demand research Query ideas, relative volume Keyword Planner, Google Trends, keyword tools Estimates differ; ranges, not point forecasts
Crawlers and auditors Broken links, orphan pages, missing tags Desktop or cloud crawlers Red flags are not priorities
Rank tracking Positions for a fixed query set Commercial trackers Results vary by time, place and device;[32] trends only
Workflow Intake, backlog, briefs Issue trackers, shared docs Link items to ship dates and outcomes
Warehouse and BI Long history, joins, segments BigQuery bulk export, BI tools Bulk export excludes anonymized queries[33]

Automate data work (API pulls, decay alerts, orphan-page checks, report assembly); keep judgement human.

Generative AI fits inside the policy. Google says AI can help with research and structure, but generating many pages without added value may violate the scaled content abuse policy, and all AI-generated content, including titles, meta descriptions, structured data and alt text, should be fact-checked by a person.[26] Scaled content abuse applies “no matter how it’s created”.[7] A workable rule: AI drafts and suggests; a named human approves and owns every published page.

On AI search features, Google says (as of October 2026) there are no extra requirements, no special files or schema, and that llms.txt files neither help nor harm in Google Search.[11][20]

What Search Console data can and cannot tell you

Link to section “What Search Console data can and cannot tell you”

Search Console’s documented limits:

  • Anonymized queries. Queries not issued by “more than a few dozen users over a two-to-three month period” are hidden from tables but counted in chart totals. When you filter by query, they disappear, so “contains brand” plus “does not contain brand” adds up to less than the total.[15]
  • Row limits. The interface table and export show up to 1,000 rows; the API returns up to 25,000 rows per request and, per Google’s 2022 explanation, up to 50,000 rows per day per site per search type.[15][34] The BigQuery bulk export gives all available rows except anonymized queries.[33]
  • Aggregation. By property, several results from your site for one query count as one impression at the topmost position; by page, each URL counts separately. CTR and position are “generally higher when aggregating by property”.[35]
  • Average position: a knowledge panel at position 6 can be more prominent than a link at 3, so watch changes, not absolutes.[14]
  • Time. Data usually arrives in two to three days; days are labelled in Pacific Time; the newest data can be preliminary.[36][35] Search Console keeps 16 months, so store your own history if you need longer.[37][22]
  • AI features. AI Overviews and AI Mode count in the Web search type; an AI Overview occupies one position shared by its links, and an AI Mode follow-up is a new query.[11][14] The generative AI performance report (all sites since 2026-08-31) shows impressions by page, country, device and date; its help page describes no clicks metric.[12]
  • Other engines. Search Console covers Google only. Bing Webmaster Tools reports Bing clicks, impressions and CTR;[38] its AI Performance report (public preview since February 2026) counts citations in Copilot and Bing’s AI summaries.[39] An Atlas rule for multi-market programmes: report each engine that matters, regional ones included, from its own data, side by side, not summed.

Search Console stops at the click; outcomes live in analytics and CRM systems, which see a different slice of reality.

Figure 4. From search demand to revenue, and where the data leaks
Searches for your topicsImpressionsClicks to your siteOrganic sessions in analyticsConversionsPipeline or revenueLeak: anonymized queries,row limitsLeak: AI answers, rich results,zero-clickLeak: declined consent,blocked scriptsLeak: attribution modelchoices
Diagram source (Mermaid)
flowchart TB
  Q["Searches for your topics"]
  IMP["Impressions"]
  CLK["Clicks to your site"]
  SES["Organic sessions in analytics"]
  CONV["Conversions"]
  REV["Pipeline or revenue"]
  L1["Leak: anonymized queries, row limits"]
  L2["Leak: AI answers, rich results, zero-click"]
  L3["Leak: declined consent, blocked scripts"]
  L4["Leak: attribution model choices"]
  Q --> IMP --> CLK --> SES --> CONV --> REV
  IMP -.-> L1
  CLK -.-> L2
  SES -.-> L3
  CONV -.-> L4
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  class Q,IMP,CLK,SES,CONV,REV core
  class L1,L2,L3,L4 risk

Text equivalent: Searches lead to impressions, clicks, sessions, conversions and revenue. Data leaks at impressions (anonymized queries, row limits), clicks (AI answers, rich results), sessions (declined consent) and conversions (attribution choices).

Practical rules:

  1. Right number, right question. Search Console for visibility and clicks; analytics for behaviour and conversions. Google cites privacy, processing, time lag, time zones and JavaScript-only tracking as reasons they differ.[36]
  2. Know your channel definition. GA4’s default “Organic Search” channel includes visits from AI Overviews and AI Mode, while visits from assistants such as ChatGPT, Gemini or Copilot fall in a separate “AI Assistant” channel; the default channel group cannot be edited (as of October 2026).[40] Report assistant referrals next to organic search, not inside it.
  3. Know your consent gap. Analytics misses users who decline cookies; modelling fills it only above documented thresholds (for example, 1,000 events a day with analytics storage denied for 7 days).[41]
  4. Know your attribution model. GA4 offers data-driven and last-click models; an allocation rule is not proof of cause[10] (see MarketingOps on attribution).
  5. Segment brand from non-brand, and report the share that could not be segmented, as Lab 2 shows.

A before/after chart of one page is common and weak evidence: seasonality, core updates, competitors and AI features move the same line.

Compare groups of similar pages instead: change one, leave a control alone. User-level A/B tests do not work for SEO because a crawler is effectively one visitor, so specialist tools split pages into similar buckets and forecast what the changed group would have done without the change.[28] The idea comes from counterfactual methods such as CausalImpact, a Bayesian structural time-series model.[29] Lab 3 shows a simple version. Variants on separate URLs follow Google’s testing rules: no cloaking, rel="canonical" to the original, 302 not 301, and end promptly.[42]

Expect fewer clicks per impression on some queries. In a Pew Research Center analysis of the browsing of 900 US adults in March 2025, users clicked a traditional result in 8% of visits to results pages with an AI summary versus 15% without one, and clicked a link inside the summary in 1% of visits.[43] Google said the study used “a flawed methodology and skewed queryset that is not representative of Search traffic” and that it had not seen significant drops in aggregate web traffic;[44] Google also says clicks from results pages with AI Overviews are “higher quality”.[11] Both are claims about averages; your site’s effect depends on your queries: track CTR by intent group, watch the generative AI report, and value clicks by conversion.

Since 2026-08-31 owners can exclude a site from AI Overviews, AI Mode and Discover’s generative AI features in Search Console. That removes links and grounding there; Google says it is not a ranking signal elsewhere and does not affect AI training, which Google-Extended governs.[13] It is a business decision with a measurable cost, not a technical toggle.

Reference implementation: operating artefacts

Link to section “Reference implementation: operating artefacts”

A minimal working set for a team of three to ten people. Adapt the fields; keep the gates.

Example status: YAML syntax-checked by the validator; field names are this page’s proposal.

# seo-intake.yaml - one file (or form submission) per request
id: SEO-2026-118
requested_by: product-marketing
date: 2026-10-20
title: Refresh "CRM pipeline stages" guide and merge the duplicate article
lane: content            # content | technical | links | reporting
target_pages:
  - https://www.example.com/guides/sales-pipeline-stages
  - https://www.example.com/blog/pipeline-stages-explained   # merge, then redirect
intent: Know             # Know | Do | Website | Visit-in-person
hypothesis: >
  One stronger page for the intent will recover the 35% click loss since June
  without losing the conversions the blog post currently drives.
evidence:
  - Search Console pages report, last 3 months vs previous period
  - both URLs receive impressions for the same top 20 queries
policy_check:
  spam_policies_reviewed: true
  paid_or_exchanged_links: false
  ai_generated_drafting: assisted   # none | assisted | generated
  legal_review_needed: false
estimates:
  reach_monthly_impressions: 42000
  impact: 2            # 0.25, 0.5, 1, 2, 3
  confidence: 0.8      # 0.5, 0.8, 1.0
  effort_days: {content: 3, seo: 1, engineering: 0.5}
measurement:
  metric: non-brand clicks to the surviving URL
  control: 20 guides in the same section, untouched this cycle
  window_weeks: 6
owner: content-lead
Field How to estimate Guardrail
Reach Monthly impressions of affected pages (Search Console), or estimated searches for new pages New-page estimates come from ranges in tools; mark them low confidence
Impact 3 = transforms the page’s usefulness; 1 = clear improvement; 0.25 = cosmetic No impact score above 1 without a stated reason
Confidence 1.0 = tested on similar pages; 0.8 = documented by Google or strong evidence; 0.5 = hunch Hunches can be tested cheaply first
Effort Person-days across all lanes, including review and redirects Engineering days count even if “small”
Gate (before scoring) Spam policies, duplicates, legal and brand review A failed gate is a rejection, not a low score

Artefact 3: the weekly non-brand query pull

Link to section “Artefact 3: the weekly non-brand query pull”

Example status: JSON syntax-checked; fields checked against the Search Analytics API reference (updated 2026-08-11); not sent (needs a verified property and OAuth with the webmasters.readonly scope).[34]

{
  "startDate": "2026-10-12",
  "endDate": "2026-10-18",
  "dimensions": ["query", "page"],
  "type": "web",
  "dimensionFilterGroups": [
    {
      "groupType": "and",
      "filters": [
        {
          "dimension": "query",
          "operator": "excludingRegex",
          "expression": "(?i)\\bacme(crm)?\\b"
        },
        {"dimension": "country", "operator": "equals", "expression": "gbr"}
      ]
    }
  ],
  "aggregationType": "auto",
  "rowLimit": 25000,
  "startRow": 0,
  "dataState": "final"
}

POST it to the property’s searchAnalytics/query method (a Domain property’s site URL is sc-domain:example.com). The brand rule is the one stored in the measurement policy and reused in Lab 2: RE2 is case-sensitive unless the expression starts with (?i),[45] and \b stops “acme” matching inside other words. The query filter drops anonymized queries, so the result is a lower bound; pull the unfiltered total too, so reports can show the gap.[15]

SEO VENDOR AND ACCESS POLICY (one page)
1. Ownership: our organisation owns Search Console, analytics, tag manager and
   the domain. Vendors get named user accounts, never shared logins.
2. Audits: prospective vendors get a Search Console restricted user (view
   only), never owner, until a contract is signed.
3. Changes: every change a vendor makes is logged (date, URL or template, why)
   and reviewed by our SEO lead before release.
4. Tag manager: vendors get Edit or Approve rights, never Publish; our owner
   reviews and publishes every container version.
5. Banned: guaranteed rankings; links that pass ranking credit in exchange for
   money, goods or services; link exchanges of any size (house rule); private
   blog networks; doorway or scaled pages without user value; fake or
   incentivised reviews.
6. Required: vendors cite official search-engine documentation or their own test
   data for recommendations, and label AI-drafted content.
7. Offboarding: remove the vendor's accounts and verification tokens within one
   working day of contract end; review the change log.

Sources for each line: Google advises read-only Search Console access for audits and says you should never have to link to an SEO;[1] a former verified owner can regain access until their token is removed;[46] in Tag Manager, Edit and Approve cannot publish, and only Publish pushes changes live;[47] buying or selling links for ranking purposes is link spam, and Google names “excessive” link exchanges, so banning all exchanges is stricter than Google;[7] the US FTC’s Consumer Reviews and Testimonials Rule (in effect since 2024-10-21) covers buying and selling fake reviews, and courts can impose civil penalties for knowing violations.[30] Other jurisdictions differ; ask counsel.

Three labs on synthetic data, Python 3.8+ standard library only: no accounts, cost or personal data. Each was run on 2026-10-23 exactly as printed (Python 3.8.10, Ubuntu Linux); expected outputs are copied from those runs.

Lab 1 (beginner): score and cut a backlog to capacity

Link to section “Lab 1 (beginner): score and cut a backlog to capacity”

Objective. Apply policy gates before scoring, rank with a RICE-style score, and commit only what capacity allows. Prerequisites. Python 3.8+. Time. 20 minutes. Risk. None.

  1. Create ~/seo-ops-labs/lab1 and save this as backlog.csv:
id,title,lane,reach,impact,confidence,effort_days,notes
S-101,Refresh pricing guide (stale 2024 figures),content,42000,2,0.8,3,
S-102,Merge three overlapping onboarding articles,content,18000,1,0.8,4,
S-103,Fix internal links to orphaned integration pages,seo,9000,1,1.0,1,
S-104,Template: add product FAQ section to category pages,eng,120000,0.5,0.5,6,
S-105,Buy 40 guest-post links from vendor list,links,60000,2,0.5,2,paid links
S-106,New comparison page for top competitor query,content,15000,2,0.5,5,
S-107,Rewrite title tags on 25 low-CTR pages,seo,80000,0.5,0.8,2,
S-108,Fix canonical tags on faceted category URLs,eng,95000,1,0.8,4,
S-109,Generate 500 city landing pages with AI,content,200000,1,0.5,3,scaled ai pages
S-110,Annual refresh of top 10 how-to guides,content,30000,1,0.8,6,
  1. Save the script as triage.py.

Example status: verified by execution on 2026-10-23 (Python 3.8.10, standard library).

"""Score an SEO backlog, apply policy gates, and cut it to team capacity."""
import csv
import sys

CAPACITY = {"content": 10, "seo": 4, "eng": 5}  # person-days available this cycle
BLOCKED = {
    "paid links": "link spam policy (paid links must not pass ranking credit)",
    "scaled ai pages": "scaled content abuse: near-identical pages, no user value",
}


def load(path):
    with open(path, newline="") as f:
        return list(csv.DictReader(f))


def main(path):
    items, rejected = [], []
    for row in load(path):
        reason = BLOCKED.get(row["notes"].strip())
        if reason:
            rejected.append((row["id"], reason))
            continue
        reach, impact = float(row["reach"]), float(row["impact"])
        conf, effort = float(row["confidence"]), float(row["effort_days"])
        row["score"] = reach * impact * conf / effort
        items.append(row)
    items.sort(key=lambda r: r["score"], reverse=True)
    left = dict(CAPACITY)
    print(f"{'id':6} {'lane':8} {'score':>8} {'days':>4}  decision")
    for r in items:
        lane, days = r["lane"], float(r["effort_days"])
        if lane not in left:
            decision = "no capacity defined for lane"
        elif days <= left[lane]:
            left[lane] -= days
            decision = "COMMIT"
        else:
            decision = f"next cycle ({lane}: {left[lane]:g} day(s) left)"
        print(f"{r['id']:6} {lane:8} {r['score']:8.0f} {days:4g}  {decision}")
    for rid, reason in rejected:
        print(f"{rid:6} rejected before scoring: {reason}")
    print("unused days:", ", ".join(f"{k}={v:g}" for k, v in left.items()))


if __name__ == "__main__":
    main(sys.argv[1] if len(sys.argv) > 1 else "backlog.csv")
  1. Run python3 triage.py backlog.csv.

Expected output:

id     lane        score days  decision
S-101  content     22400    3  COMMIT
S-108  eng         19000    4  COMMIT
S-107  seo         16000    2  COMMIT
S-103  seo          9000    1  COMMIT
S-104  eng          5000    6  next cycle (eng: 1 day(s) left)
S-110  content      4000    6  COMMIT
S-102  content      3600    4  next cycle (content: 1 day(s) left)
S-106  content      3000    5  next cycle (content: 1 day(s) left)
S-105  rejected before scoring: link spam policy (paid links must not pass ranking credit)
S-109  rejected before scoring: scaled content abuse: near-identical pages, no user value
unused days: content=1, seo=1, eng=1

Validation. The two highest-reach items (S-109, S-105) never reach scoring: the gate decides. S-109 is rejected for being 500 near-identical pages, not for using AI. S-104 waits because engineering has one day left. Troubleshooting. KeyError: 'notes' means a missing column; ValueError means a stray space or thousands separator. Extension. Set CAPACITY["eng"] = 0: every technical item waits forever. Teardown. rm -r ~/seo-ops-labs/lab1.

Lab 2 (intermediate): read a Search Console export without fooling yourself

Link to section “Lab 2 (intermediate): read a Search Console export without fooling yourself”

Objective. Split brand from non-brand, measure how much of the total the rows do not explain, and compute an impression-weighted position. Prerequisites. Lab 1’s setup. Time. 25 minutes. Risk. None.

  1. In ~/seo-ops-labs/lab2, save the query rows as queries.csv and the chart totals as totals.json:
query,clicks,impressions,position
acme crm,4200,9800,1.1
acme crm login,3100,5200,1.0
acme pricing,900,2600,1.4
crm for small business,610,41000,7.9
best crm software,240,52000,11.6
crm pipeline template,520,8800,4.2
what is a crm,380,30500,6.8
crm vs spreadsheet,150,4100,5.5
acme vs examplesoft,300,1900,2.3
sales pipeline stages,410,12600,5.1
{"clicks": 12600, "impressions": 236000}
  1. Save the script as read_export.py.

Example status: verified by execution on 2026-10-23 (Python 3.8.10, standard library).

"""Read a Search Console query export honestly: brand split, missing rows, position."""
import csv
import json
import re
import sys

BRAND = re.compile(r"\bacme(crm)?\b", re.IGNORECASE)  # same rule as the API pull


def main(rows_path, totals_path):
    with open(rows_path, newline="") as f:
        rows = list(csv.DictReader(f))
    with open(totals_path) as f:
        totals = json.load(f)
    seg = {"brand": [0, 0, 0.0], "non-brand": [0, 0, 0.0]}
    for r in rows:
        key = "brand" if BRAND.search(r["query"]) else "non-brand"
        clicks, impr = int(r["clicks"]), int(r["impressions"])
        seg[key][0] += clicks
        seg[key][1] += impr
        seg[key][2] += float(r["position"]) * impr
    row_clicks = sum(s[0] for s in seg.values())
    row_impr = sum(s[1] for s in seg.values())
    for name, (clicks, impr, pos_x_impr) in seg.items():
        print(f"{name:9} clicks={clicks:6} impressions={impr:7} "
              f"ctr={clicks / impr:6.2%} weighted_position={pos_x_impr / impr:5.1f}")
    gap_clicks = totals["clicks"] - row_clicks
    gap_impr = totals["impressions"] - row_impr
    print(f"rows sum   clicks={row_clicks:6} impressions={row_impr:7}")
    t_clicks, t_impr = totals["clicks"], totals["impressions"]
    print(f"chart total clicks={t_clicks:6} impressions={t_impr:7}")
    print(f"not in rows: {gap_clicks} clicks ({gap_clicks / totals['clicks']:.1%}), "
          f"{gap_impr} impressions ({gap_impr / totals['impressions']:.1%})")
    naive = sum(float(r["position"]) for r in rows) / len(rows)
    print(f"unweighted mean of row positions={naive:.1f} (do not report this)")
    share = seg["non-brand"][0] / row_clicks
    print(f"non-brand share of itemised clicks={share:.1%}")


if __name__ == "__main__":
    main(*(sys.argv[1:] or ["queries.csv", "totals.json"]))
  1. Run python3 read_export.py queries.csv totals.json.

Expected output:

brand     clicks=  8500 impressions=  19500 ctr=43.59% weighted_position=  1.2
non-brand clicks=  2310 impressions= 149000 ctr= 1.55% weighted_position=  8.4
rows sum   clicks= 10810 impressions= 168500
chart total clicks= 12600 impressions= 236000
not in rows: 1790 clicks (14.2%), 67500 impressions (28.6%)
unweighted mean of row positions=4.7 (do not report this)
non-brand share of itemised clicks=21.4%

Validation. Brand gives 8,500 of 10,810 itemised clicks, so a sitewide total mostly measures brand demand. 14.2% of clicks are in no row, so the non-brand share is of itemised clicks. The unweighted mean position (4.7) flatters; weighting by impressions approximates Search Console’s average (8.4 for non-brand).[14] Troubleshooting. If “acme vs examplesoft” is a competitor query, add a segment and write the rule into the measurement policy. Extension. Run it on your own export (confidential business data). Teardown. rm -r ~/seo-ops-labs/lab2.

Lab 3 (advanced): measure a change with a control group

Link to section “Lab 3 (advanced): measure a change with a control group”

Objective. See how a before/after comparison misleads; estimate the effect against a control group with a placebo check. Prerequisites. Lab 1’s setup. Time. 30 minutes. Risk. None.

  1. In ~/seo-ops-labs/lab3, save this generator as make_data.py: 56 days of clicks for a changed and a control page group, with a weekday pattern, falling demand and a true +8% effect from day 28.

Example status: verified by execution on 2026-10-23 (Python 3.8.10, standard library).

"""Generate 56 days of synthetic daily clicks for a test and a control page group."""
import csv
import math

with open("daily.csv", "w", newline="") as f:
    w = csv.writer(f)
    w.writerow(["day", "period", "control_clicks", "test_clicks"])
    for day in range(56):
        weekly = 1 + 0.15 * math.sin(2 * math.pi * day / 7)   # weekday pattern
        season = 1 - 0.004 * day                              # demand slowly falling
        noise_c = 1 + 0.03 * math.sin(day * 12.9898)          # deterministic noise
        noise_t = 1 + 0.03 * math.sin(day * 78.233)
        lift = 1.08 if day >= 28 else 1.0                     # true effect: +8%
        control = round(1000 * weekly * season * noise_c)
        test = round(950 * weekly * season * noise_t * lift)
        w.writerow([day, "pre" if day < 28 else "post", control, test])
  1. Save the analysis as measure.py, then run python3 make_data.py && python3 measure.py daily.csv.

Example status: verified by execution on 2026-10-23 (Python 3.8.10, standard library).

"""Compare a naive before/after with a control-adjusted estimate of a page change."""
import csv
import sys


def total(rows, period, column, days=None):
    picked = [r for r in rows if r["period"] == period]
    if days is not None:
        picked = [r for r in picked if int(r["day"]) in days]
    return sum(int(r[column]) for r in picked)


def main(path):
    with open(path, newline="") as f:
        rows = list(csv.DictReader(f))
    t_pre, t_post = total(rows, "pre", "test_clicks"), total(rows, "post", "test_clicks")
    c_pre = total(rows, "pre", "control_clicks")
    c_post = total(rows, "post", "control_clicks")
    naive = t_post / t_pre - 1
    adjusted = (t_post / t_pre) / (c_post / c_pre) - 1
    print(f"test pages    pre={t_pre} post={t_post} naive change={naive:+.1%}")
    print(f"control pages pre={c_pre} post={c_post} change={c_post / c_pre - 1:+.1%}")
    print(f"control-adjusted effect on test pages={adjusted:+.1%}")
    # Placebo check: pretend the change happened halfway through the pre-period.
    a, b = set(range(0, 14)), set(range(14, 28))
    test_ratio = (total(rows, "pre", "test_clicks", b)
                  / total(rows, "pre", "test_clicks", a))
    ctrl_ratio = (total(rows, "pre", "control_clicks", b)
                  / total(rows, "pre", "control_clicks", a))
    print(f"placebo effect inside the pre-period={test_ratio / ctrl_ratio - 1:+.1%}"
          " (should be near 0)")


if __name__ == "__main__":
    main(sys.argv[1] if len(sys.argv) > 1 else "daily.csv")

Expected output:

test pages    pre=25191 post=23958 naive change=-4.9%
control pages pre=26538 post=23413 change=-11.8%
control-adjusted effect on test pages=+7.8%
placebo effect inside the pre-period=+0.2% (should be near 0)

Validation. The naive comparison says the change lost 4.9%; against the control it gained +7.8%, close to the true +8%. The near-zero placebo shows the groups moved together beforehand. Troubleshooting. A large placebo means the groups are not comparable; rebuild them by traffic, template and seasonality. Limits. One ratio has no uncertainty interval; for big decisions use more pages and a method with intervals.[29] Extension. Set lift to 1.0: the adjusted effect falls to about zero (−0.2%). Teardown. rm -r ~/seo-ops-labs.

All four are illustrative scenarios, not reports about real organisations.

Scenario Context Operating approach Trade-off Success measure
B2B software, content-led 400 guides, half stale; writers measured on new posts Decay list; refresh capacity; merges; briefs Fewer new posts Non-brand clicks and sign-ups versus control
Retailer, template-led 80,000 URLs; gains need engineering Engineering lane; acceptance tests; SEOps release checks; page-bucket tests SEO waits for release trains Tested lift per template change
Multi-market publisher with an agency Agency runs six countries, holds the accounts Vendor policy, ownership transfer, shared change log Short-term friction No shared logins; every change logged
Local services firm Ten pages, one marketer Google says a small local business can do much itself;[1] a quarterly checklist Risk of neglect Enquiries from search tracked
KPI Definition / formula Source Pitfall Cadence
Non-brand clicks Clicks from queries not matching the brand rule Search Console API Excludes anonymized queries: a lower bound Weekly
Unsegmented share (Chart total clicks − sum of itemised clicks) ÷ chart total Search Console Rising share hides changes Monthly
Organic conversions Key events in the Organic Search channel Analytics Consent loss; model choice Monthly
AI-assistant referrals Sessions and conversions in GA4’s AI Assistant channel Analytics Not organic search; reported separately Monthly
Value per organic click Organic conversion value ÷ Search Console clicks Both Mixes two sources; trend only Quarterly
Commitment completion Items shipped ÷ items committed per cycle Backlog Gaming by committing small items Per cycle
Verdict rate Closed items with a measured verdict ÷ items shipped Backlog “No effect” is still a verdict Monthly
Decay backlog Pages flagged for refresh and not yet handled Inventory Grows silently Monthly
Policy incidents Manual actions, rejected vendor tactics, AI content defects Search Console, logs Zero is the target, not a quota Monthly

Worked calculation (illustrative). From Lab 2: unsegmented share = (12,600 − 10,810) ÷ 12,600 = 14.2%. The honest statement is “non-brand clicks were at least 2,310 (21.4% of itemised clicks); 14.2% could not be segmented”. If analytics records organic sign-ups worth 9,200 that week, value per organic click = 9,200 ÷ 12,600 ≈ 0.73; track its trend, not its level, because the systems count differently.[36]

Vanity traps. Rank screenshots (results vary by time, place and device[32]), total impressions, third-party “visibility scores” (no access to Google’s data[31]), pages published.

  • Search policy: link spam, scaled content abuse, doorways and cloaking can demote or remove pages.[7] In the version updated 2026-08-28, the site reputation policy works differently inside the European Economic Area: affected pages “may be categorized as separate from the main domain” instead of receiving a manual action.[7]
  • Consumer law covers fake reviews and testimonials; the US FTC rule is one example.[30] This page is not legal advice.
  • AI content: human fact-check before publishing; consider telling readers how automation was used.[26]
  • YMYL topics (health, finance, safety) get extra review; Google gives strong E-E-A-T more weight there.[19]
  • Access: few named owners; vendors are users; leavers’ tokens removed.[46] Tag manager is the larger exposure: a Publish right pushes container changes, including scripts, live on every page that loads the container, a security and privacy risk far beyond search, so keep Publish in-house.[47]

Costs are people, tools and vendors. Two unit measures help: cost per shipped item (cycle cost ÷ items shipped) and cost per measured gain (cost of tested items ÷ conversions gained versus control). The hidden cost is maintenance: content made to chase volume becomes a liability you may later have to prune.[17] Sustainability mostly means not publishing pages nobody needs; hosting impacts belong to WebOps and GreenOps.

Each quarter, run the governance checklist, reconcile report totals with Search Console, match the vendor change log to releases and re-read the spam policies (last updated 2026-08-28 when checked).[7]

Symptom Likely cause Diagnosis Remediation Prevention
Report totals disagree with Search Console Filters drop anonymized queries; different aggregation Compare unfiltered chart total; check aggregation type[35] Show both numbers and the gap Measurement policy
Clicks fall, impressions stable Titles/snippets, rich results, AI features Query-level CTR by intent[22] Rewrite titles; test CTR watch on top queries
Backlog grows, nothing technical ships No engineering lane Committed vs shipped by lane Agree capacity with engineering Lane in the plan
Sudden sitewide drop Technical error, manual action, security issue Page indexing, Manual actions, Security issues reports[22] Fix and request review if needed Release checks with SEOps
Agency reports growth, sign-ups fall Vanity metrics; brand mixed with non-brand Segment brand; check conversions Change reporting contract Vendor policy

Worked runbook: organic clicks fell by a third

Link to section “Worked runbook: organic clicks fell by a third”
Figure 5. Diagnosing an organic traffic drop
yesnoyesnoyesnoyesnoyesnoyesnoClicks down 33%Data anomaly?Seasonal or demand shift?Manual or security action?Indexing errors or site move?Core update running?Impressions flat?Fix trackingDemand fell: no page fix,reset targetsFix, request reviewHand to SEOpsWait a week, compareTest titles, snippetsSelf-assess pages
Diagram source (Mermaid)
flowchart TB
  S["Clicks down 33%"]
  D1{"Data anomaly?"}
  D2{"Seasonal or demand shift?"}
  D3{"Manual or security action?"}
  D4{"Indexing errors or site move?"}
  D5{"Core update running?"}
  D6{"Impressions flat?"}
  A1["Fix tracking"]
  A2["Demand fell: no page fix, reset targets"]
  A3["Fix, request review"]
  A4["Hand to SEOps"]
  A5["Wait a week, compare"]
  A6["Test titles, snippets"]
  A7["Self-assess pages"]
  S --> D1
  D1 -->|"yes"| A1
  D1 -->|"no"| D2
  D2 -->|"yes"| A2
  D2 -->|"no"| D3
  D3 -->|"yes"| A3
  D3 -->|"no"| D4
  D4 -->|"yes"| A4
  D4 -->|"no"| D5
  D5 -->|"yes"| A5
  D5 -->|"no"| D6
  D6 -->|"yes"| A6
  D6 -->|"no"| A7
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  class D1,D2,D3,D4,D5,D6 decision
  class A1,A2,A5,A6,A7 core
  class S,A3,A4 risk

Text equivalent: After clicks fall 33%, ask in order and stop at the first yes: data anomaly (fix tracking); seasonal dip or demand shift (no page fix, reset targets); manual action or security issue (fix, request review); indexing errors or a site move (hand to SEOps); core update rolling out (wait a week after it ends, compare); impressions flat (test titles and snippets). If all are no, self-assess the pages.

Illustrative incident. Monday 09:00: the weekly report shows non-brand clicks down 33%.

  1. Data (15 min). Search Console’s data anomalies notes and the analytics tag; Google lists logging errors as a possible cause.[22] Normal.
  2. Seasonality and demand (15 min). 16 months, year on year, and the lost queries in Google Trends to see whether demand fell across the web.[22] No dip last year; demand steady.
  3. Penalties and security (10 min). Manual actions and Security issues reports: clean.[18]
  4. Technical (30 min). No site move or URL change was planned (moves cause fluctuations while Google recrawls[22]). Page indexing shows 1,200 product guides newly excluded by noindex since Thursday’s release. Hand to SEOps and engineering with the URL pattern and release ID; they follow SEOps’ runbook and roll the template back the same day.
  5. Recovery. Annotate; recovery depends on recrawling, so expect days to weeks.[2]
  6. Post-incident. Add a noindex check for that template to the SEOps release gate; log detection time in the monthly review.

For a small drop (position 2 to 4), Google advises against radical changes to pages that already perform well.[22]

Anti-pattern or myth Why it fails Instead
“Publish more pages” as the target Invites thin and scaled content; maintenance debt Target useful coverage of the demand map
Changing dates to look fresh Google names it a warning sign[19] Update substantively or leave it
Disavowing links routinely “most sites will not need” it; misuse can harm[48] Only after a manual action or clear risk
Buying “AEO/GEO” hacks or llms.txt services Google Search ignores llms.txt; optimising for AI features is SEO[20] Same fundamentals, measured
Tool audit = roadmap Third-party tools lack Google’s data[31] Gate and score every finding
Agency owns the accounts You stay responsible for its actions[1] Ownership and access policy

Use a formal model when organic search is a material source of customers, more than two or three people (or a vendor) touch search work, technical changes need engineering capacity, or leadership asks what SEO returns.

Do not build one when one person can follow Google’s starter guidance;[1] customers do not come from search; or the real problem is elsewhere: no useful content, a broken site (WebOps, SEOps), or no content process (ContentOps). The hidden responsibility is permanent: someone owns the backlog, measurement policy and vendor access every quarter.

Decision framework: in-house, agency or hybrid

Link to section “Decision framework: in-house, agency or hybrid”
Figure 6. Choosing who runs the SEO programme
noyesyesnoyesnoyesnoyesnoIs organic search a materialchannel?Checklist only: one owner,quarterly reviewDo most gains needengineering or deep productknowledge?Fund a full in-house team?Fund one senior in-houselead?Fund in-house writers?In-house writers; agency forgapsHybrid: in-house lead,specialist vendorsIn-house teamAgency, with your accountsand policyAgency or fractionalconsultant, overseen by anamed internal owner
Diagram source (Mermaid)
flowchart TB
  Q1{"Is organic search a material channel?"}
  N1["Checklist only: one owner, quarterly review"]
  Q2{"Do most gains need engineering or deep product knowledge?"}
  Q3{"Fund a full in-house team?"}
  Q4{"Fund one senior in-house lead?"}
  Q5{"Fund in-house writers?"}
  IC["In-house writers; agency for gaps"]
  H["Hybrid: in-house lead, specialist vendors"]
  I["In-house team"]
  AG["Agency, with your accounts and policy"]
  FR["Agency or fractional consultant, overseen by a named internal owner"]
  Q1 -->|"no"| N1
  Q1 -->|"yes"| Q2
  Q2 -->|"yes"| Q3
  Q2 -->|"no"| Q5
  Q5 -->|"yes"| IC
  Q5 -->|"no"| AG
  Q3 -->|"yes"| I
  Q3 -->|"no"| Q4
  Q4 -->|"yes"| H
  Q4 -->|"no"| FR
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class Q1,Q2,Q3,Q4,Q5 decision
  class I,H,IC,AG,FR core
  class N1 neutral

Text equivalent: Not a material channel: a checklist with one owner. Material, but gains do not need engineering or product knowledge: in-house writers, with an agency for specialist gaps, if you can fund them; otherwise an agency in your accounts under your policy. Gains need them: a full in-house team if you can fund one; a hybrid if you can fund only a senior lead; otherwise an agency or fractional consultant overseen by a named internal owner.

The tree is an editorial, coarse filter: no independent study comparing agency and in-house outcomes was found. Work closest to engineering and product is hardest to outsource; vendors add specialist and market depth (Google lists expertise in specific markets among useful SEO services[1]). In every branch you keep the accounts and the policy. The table shows the reasoning for one branch: a mid-sized software company whose gains need engineering and which can fund one senior SEO but not a full team. Hybrid wins because it keeps most in-house access and continuity and adds depth one lead cannot cover.

Criterion (weight) In-house Agency Hybrid
Access to engineering and product (30%) 5 2 4
Specialist depth and market breadth (20%) 2 5 4
Cost predictability at small scale (20%) 2 4 3
Continuity and knowledge retention (20%) 5 2 4
Speed to start (10%) 2 5 3
Weighted score (out of 5) 3.5 3.3 3.7

Illustrative scores for that company. In-house = 0.3×5 + 0.2×2 + 0.2×2 + 0.2×5 + 0.1×2 = 3.5. With a full team, in-house would score higher on specialist depth.

This is the Atlas’s proposed model, not an industry standard.

Level Observable behaviour Exit criteria
1. Ad hoc Requests by chat; rank screenshots; vendor owns accounts One intake; organisation owns Search Console and analytics
2. Managed Scored backlog; SOPs for briefs and refreshes Policy gate in use; brand/non-brand reporting with stated gaps
3. Measured Every shipped item has a hypothesis and verdict window Most shipped items closed with a verdict; control groups for major changes
4. Integrated Engineering lane; SEOps release checks; refresh capacity reserved No surprise template regressions for two quarters
5. Learning Confidence scores calibrated from past verdicts Playbooks retired when evidence changes
Window Actions Milestone
Days 1–30 Move account ownership in-house; vendor and access policy; intake form; store 16 months of data All requests through intake
Days 31–60 Demand map for top topics; page inventory; scoring rubric; measurement policy; first cycle cut to capacity First monthly review
Days 61–90 Engineering lane; first control-group test; decay list; quarterly plan First verdicts; plan approved

Quick win: separating brand from non-brand often changes the story leadership hears.

Quick start

  • Organisation is a verified owner of every Search Console property; vendors are users
  • Intake form live; chat requests redirected to it
  • One brand regex agreed, stored in the measurement policy and used in every report
  • 16 months of data exported to your own storage

Before committing a cycle

  • Every item passed the policy and duplicate gate
  • Every item has an owner, hypothesis, measurement window
  • Committed days ≤ available days per lane

Before publishing a page

  • One target intent; no existing page serves it
  • Human fact-check, including titles, descriptions and alt text
  • At least one internal link to it from a relevant page
  • Date changes only for substantive updates

Quarterly governance

  • Access review (people and vendors; leftover verification tokens)
  • Spam policy and Search Console changes reviewed
  • Ten shipped items sampled for hypothesis and verdict

One-page SEO charter

Programme: Organic search for <product/site>        Owner: <name>    Review: <quarter>
Mission: <one sentence on the value organic search should create>
Scope: <sites, markets, languages>   Out of scope: <technical owner, paid search owner>
Outcomes (12 months): <non-brand clicks to X pages>, <organic conversions>, <verdict rate>
Capacity: content <n> days/cycle, SEO <n>, engineering <n> (agreed with <team>)
Policies: vendor and access policy v<n>; AI content rule; measurement policy v<n>
Non-goals: guaranteed rankings, paid links, pages without a user need
Risks: <top three>   Escalation: <name> for policy, <name> for releases

Monthly review form

Period: <month>     Prepared by: <analyst>     Data gaps this month: <unsegmented %>
1. Outcomes: non-brand clicks, organic conversions, value per click (trend)
2. Verdicts: items closed (worked / no effect / harmed) with links to evidence
3. Decay: pages added to and removed from the refresh list
4. Incidents: drops, manual actions, policy issues, release regressions
5. Market: core updates, AI feature changes, Search Console changes
6. Decisions needed: <capacity, vendor, policy>

The intake form and vendor policy are in the reference implementation.

Approach Best when Weak when
SEO as a campaign (project bursts) Launches, migrations, one-off fixes Content decays between bursts
SEO as a programme (this page) Search is a lasting channel Small sites: overhead outweighs value
SEO embedded in product teams Template-heavy sites with strong engineering No one owns cross-team priorities
SEO folded into ContentOps Publishers where content is the product Technical debt has no owner

Do we need a separate team? Usually not; an SEO lead can own the backlog, measurement policy and vendor access.

Why does our brand plus non-brand not equal total clicks? Query filters remove anonymized queries, which still count in the chart total.[15]

Should we block AI features to protect clicks? Only after measuring: exclusion removes your links from those features entirely and, Google says, does not affect AI training.[13] Compare the generative AI report with conversions first.

How long before we see results? Hours to several months, says Google; wait a few weeks before assessing.[2]

Is AI-written content against the rules? Not by itself. Pages generated mainly to manipulate rankings without adding value are, however they were made.[7][26]

  • Established: page-bucket experiments, counterfactual models,[28][29] warehouse reporting from the bulk export.[33]
  • Changing quickly (as of October 2026): generative AI reporting and controls;[12][13] browser agents acting for users, which Google’s guide treats as optional.[20]
  • Open question: what clicks are worth as AI answers absorb simple queries. Evidence is one panel study and a disputed response;[43][44] measure your own.
Stage Do this Output
Prerequisites Read Google’s SEO Starter Guide and the SEOps page Shared vocabulary
1-day primer Read this page’s measurement part; run Lab 2 on your own export A brand rule and a gap figure
1-week practice Build the intake form and score your current backlog (Lab 1) A committed cycle
30 days Run the 30-day roadmap; write the vendor policy Access register, measurement policy
Advanced Run a control-group test (Lab 3); study CausalImpact A tested verdict
Portfolio project A one-quarter plan with capacity, gates and tests for a real site A plan a leader could approve
  • Decide: is organic search material enough for a programme, and who runs it?
  • Do: one intake; policy gate before scoring; cut to capacity; engineering lane; refresh share; verdicts.
  • Measure: non-brand clicks (a lower bound), unsegmented share, organic conversions, verdict rate, decay backlog.
  • Avoid: guaranteed-ranking vendors, paid links, scaled pages, date-only refreshes, rank screenshots as evidence.
  • Next action: move account ownership in-house and write the brand rule this week.

A judgement call: 2,000 AI-drafted location pages or 60 refreshes?

Link to section “A judgement call: 2,000 AI-drafted location pages or 60 refreshes?”

Situation (illustrative). A home-services company has a quarterly target of +20% organic leads. The growth team proposes 2,000 AI-drafted city pages (“Plumber in <city>”) with the same services text, ready in two weeks. The SEO lead proposes refreshing 60 decaying service guides and adding real local detail (technicians, response times, prices) for the 40 cities the company serves. Assumptions: similar cost; 40 real cities; fixed target.

Why the first option is attractive. Fast, large and easy to report.

Why it is probably wrong. Pages “generated for the primary purpose of manipulating search rankings and not helping users” are scaled content abuse whether or not AI wrote them,[7] and near-identical city pages for places the company does not serve resemble doorway abuse, a separate policy on the same page whose examples include pages “targeted at specific regions or cities that funnel users to one page”.[7] The downside is not just zero gain: it is demotion risk for the whole site and a large pruning job later.[17] The second option is slower and smaller on paper, but each page serves a real need and can be tested against a control group.

Decision. Refresh the 60 guides and build 40 genuinely local pages, test them in two waves, and report the expected shortfall against the target early. Uncertainty. The refresh may not reach +20% in one quarter; say so, rather than buying the number with risk.

You should now be able to separate SEO Operations from SEOps, design intake, gate and scoring, state Search Console’s data limits, judge a change against a control group, choose a sourcing model and write a vendor policy.

1. A stakeholder asks why brand plus non-brand clicks are 15% below the total. What do you say?

Query filters exclude anonymized queries, which are counted in the chart total but never shown as rows. The gap is expected; report it as the “unsegmented share” and treat non-brand clicks as a lower bound.

2. Where does a request for 300 AI-drafted comparison pages go first, and why?

To the policy gate, before scoring. Scaled content abuse is judged by purpose and value, not by tool; a high reach estimate must not carry the item past the gate.

3. A refreshed page gained 10% clicks in six weeks. Is the refresh a success?

Not yet. Compare with a control group of similar pages over the same weeks; if controls also rose 10%, the refresh had no detectable effect. Also check whether a core update or seasonal change overlapped.

4. An agency asks for owner access to Search Console to run an audit. What do you grant?

A restricted user, not owner. Google advises read-only access for audits; a restricted user has view rights on most data, while a full user can take some actions and owners can add and remove users.

5. Clicks fell 30% but impressions are flat. Name two likely causes and one test.

Titles or snippets that no longer attract clicks, or results-page changes such as AI Overviews or competitors’ rich results. Test rewritten titles on one group of pages against a control group.

6. Why is the unweighted mean of row positions misleading?

It treats a query with 100 impressions like one with 50,000. Search Console averages the topmost position over impressions, so weight by impressions, and watch trends rather than absolute values.

SEO Operations is not a discipline with its own standard; it is what SEO looks like when an organisation runs it deliberately. The work is unglamorous: one intake, a gate that says no, a backlog that respects capacity, and reports that admit what the data hides. Its value shows up as fewer wasted quarters, not a sudden jump. AI answers are changing search fast; the programmes that cope are those that measured honestly before the change, so they can tell what the change did.

Most sources are Google’s, the most detailed public documentation for site owners; Bing’s cover its own tools. All were opened on 2026-10-23; the evidence ledger is research/seo-operations-ledger.md.

Further reading: the Atlas pages SEOps, ContentOps, WebOps and AnalyticsOps.

Changelog. 2026-10-23 — r0: first version (research, ledger, draft, three executed labs, six diagrams). 2026-10-23 — r1: after independent review: coherent sourcing decision tree, paid search to MarketingOps, GA4 AI Assistant channel, one brand rule, Tag Manager rights, demand shifts in the runbook, wording fixes. 2026-10-23, post-score polish: EEA wording quoted, capacity heuristics labelled, Bing data, budget question in the sourcing tree.


  1. Do you need an SEO? — Google Search Central, updated 2026-06-05. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. SEO Starter Guide — Google Search Central, updated 2025-12-10. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  3. Search Marketing Strategists (13-1161.01) — O*NET OnLine, updated 2026. Checked 2026-10-23. ↩︎

  4. Are you our new Head of SEO Operations? — Builtvisible, 2021-04-13. Checked 2026-10-23. ↩︎

  5. SEO Operations Manager (expired posting) — VirtualVocations, reviewed 2023-09-04. Checked 2026-10-23. ↩︎

  6. SEO Ops Map — Overdrive Interactive, undated. Checked 2026-10-23. ↩︎

  7. Spam policies for Google web search — Google Search Central, updated 2026-08-28. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  8. Announcing Google Search Console - the new Webmaster Tools — Google Search Central Blog, 2015-05-20. Checked 2026-10-23. ↩︎

  9. Google Search Essentials Replaces Google Webmaster Guidelines — Search Engine Roundtable (Barry Schwartz), 2022-10-14, citing Google’s update log entry of 2022-10-13. Checked 2026-10-23. ↩︎

  10. Get started with attribution — Analytics Help, undated. Checked 2026-10-23. ↩︎ ↩︎

  11. AI features and your website — Google Search Central, updated 2025-12-10. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  12. Generative AI performance report (Search) — Search Console Help, rollout note dated 2026-08-31. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  13. Search generative AI control — Search Console Help, rollout note dated 2026-08-31. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  14. What are impressions, position, and clicks? — Search Console Help, undated. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  15. A deep dive into Search Console performance data filtering and limits — Google Search Central Blog (Daniel Waisberg), 2022-10-19. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  16. Search Quality Evaluator Guidelines (General Guidelines), section 12.7 — Google, 2025-09-11. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  17. Google Search’s core updates and your website — Google Search Central, updated 2025-12-10. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  18. Manual actions report — Search Console Help, undated. Checked 2026-10-23. ↩︎ ↩︎

  19. Creating helpful, reliable, people-first content — Google Search Central, updated 2026-10-05. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  20. Optimizing your website for generative AI features on Google Search — Google Search Central, updated 2026-07-10. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  21. Understanding Core Web Vitals and Google search results — Google Search Central, updated 2025-12-10. Checked 2026-10-23. ↩︎

  22. Debugging drops in Google Search traffic — Google Search Central, updated 2025-12-10. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  23. About Keyword Planner forecasts — Google Ads Help, undated. Checked 2026-10-23. ↩︎

  24. FAQ about Google Trends data — Google Trends Help, undated. Checked 2026-10-23. ↩︎

  25. Link best practices for Google — Google Search Central, updated 2025-12-10. Checked 2026-10-23. ↩︎

  26. Guidance on using generative AI content on your website — Google Search Central, updated 2026-10-01. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  27. RICE: Simple prioritization for product managers — Intercom (Sean McBride), 2018-01-05. Checked 2026-10-23. ↩︎ ↩︎

  28. The math behind SearchPilot: how SEO A/B testing actually works — SearchPilot (Will Critchlow), updated 2026-10-05; vendor describing its own method. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  29. Inferring causal impact using Bayesian structural time-series models — Brodersen et al., Annals of Applied Statistics 9 (2015). Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  30. The Consumer Reviews and Testimonials Rule: Questions and Answers — US Federal Trade Commission, November 2024. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  31. Guidance on using third-party SEO tools, services, and advice — Google Search Central, updated 2026-06-05. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  32. Performance report (Search results): Overview and basic setup — Search Console Help, undated. Checked 2026-10-23. ↩︎ ↩︎

  33. About bulk data export of Search Console data to BigQuery — Search Console Help, undated. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  34. Search Analytics: query — Google for Developers, updated 2026-08-11. Checked 2026-10-23. ↩︎ ↩︎

  35. Performance report (Search results): About the data — Search Console Help, undated. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  36. Performance report (Search results): Troubleshooting data discrepancies — Search Console Help, undated. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  37. Connect Search Console to Google Analytics — Analytics Help, undated. Checked 2026-10-23. ↩︎

  38. Unlocking insights with the new Bing Webmaster Tools Performance Report — Microsoft Bing (Fabrice Canel, Saral Nigam), 2023-09-21. Checked 2026-10-23. ↩︎

  39. Introducing AI Performance in Bing Webmaster Tools Public Preview — Microsoft Bing (Krishna Madhavan et al.), 2026-02-10. Checked 2026-10-23. ↩︎

  40. Default channel group — Analytics Help, undated. Checked 2026-10-23. ↩︎

  41. Behavioral modeling for consent mode — Analytics Help, undated. Checked 2026-10-23. ↩︎

  42. Minimize A/B testing impact in Google Search — Google Search Central, updated 2025-12-10. Checked 2026-10-23. ↩︎

  43. Google users are less likely to click on links when an AI summary appears in the results — Pew Research Center, 2025-07-22. Checked 2026-10-23. ↩︎ ↩︎

  44. Google AI Overviews are killing the web, Pew study shows (again) — The Register (Thomas Claburn), 2025-07-22, quoting a Google spokesperson. Checked 2026-10-23. ↩︎ ↩︎

  45. RE2 regular expression syntax — Google RE2 project wiki, undated. Checked 2026-10-23. ↩︎

  46. Managing owners, users, and permissions — Search Console Help, undated. Checked 2026-10-23. ↩︎ ↩︎

  47. User permissions (Tag Manager) — Tag Manager Help, undated. Checked 2026-10-23. ↩︎ ↩︎

  48. Disavow links to your site — Search Console Help, undated. Checked 2026-10-23. ↩︎

Related Ops

SEOps

SEOps is an informal label. This page uses it for technical SEO run as engineering: crawlability, indexability and canonical signals written down as a contract, tested before every release and monitored after it.

ContentOps

ContentOps (content operations) is the people, process and technology that turn a content plan into accurate, findable content at scale: modelled once, reviewed by named owners, published to every channel, measured, and retired when it goes stale.

MarketingOps

MarketingOps (marketing operations) runs marketing as a dependable system: campaigns built and checked to a standard, leads captured with consent, scored and followed up by sales under an agreed service level, and pipeline measurement people can trust.

AnalyticsOps

AnalyticsOps has no standard definition. On this page it means operating the layer where people consume data: versioned metric definitions, a semantic layer that serves them, and BI content that is certified, monitored and retired, so each important metric has one trusted definition.

WebOps

WebOps is a loose label for running websites: the path from DNS through CDN, TLS and web servers to the browser, operated by developers and marketers who share one site. No body defines it; vendors also use it as a product category.

MarTechOps

MarTechOps (marketing technology operations) designs and runs the plumbing of the marketing stack: how tools connect, how customer data and consent signals flow between them, which tags fire, and which tools the company keeps.

AdOps

AdOps (advertising operations) turns sold or auctioned ad space into delivered, measured and billable impressions: it sets up and checks campaigns in the ad server, runs the auction plumbing, keeps fraud and unauthorised sellers out, and reconciles the numbers.

ReleaseOps

ReleaseOps is an informal label for turning deployed code into a deliberate, reversible change for users: versioning, cadence, progressive exposure, feature flags, rollback and release records. The exact name is also a ServiceNow product.

Practise and get certified

From xOps School

Practise SEOps (SEO Operations) and get certified

The SEOps (SEO Operations) track on xOps School (part of the Coffee Pass) has study notes, a 25-question practice quiz with explanations, and a verifiable certificate when you score 70% or more. Sign in with Google to start.

For teams

Instructor-led training

Live batches for your team, with completion certificates and reports for L&D/HR.

Source: master.md (the editorial source of this page) · built 2026-10-23 · diagrams rendered with @mermaid-js/mermaid-cli 11.17.0 (mermaid 11.17.2)