The number that matters: 8 clicks from 5,399 impressions (0.15% CTR), and the
money cluster (79 hosting query rows, 772 impressions) earns 3 of them at position 37.1 — still
nothing arriving at the host with intent. Clicks are one lower than last week's
snapshot on a range that grew by six days: Search Console restated historical clicks, so this is
not a loss, but it is also not growth. The real movement is technical: broken internal links
1,370 → 0 and relative canonicals 23 → 0, both confirmed by a full audit. Six planned changes
shipped between 10-24 and 10-26 and every ranking verdict on them is still inside the 2–6 week
re-crawl window — including the German consulting page and the EN hosting hub, which have
0 impressions each in GSC so far.
Impressions
5,399
+654, but the range grew 6 days
Clicks
8
last week 9 — GSC restatement
CTR
0.15%
page 1 would be 1.5%+
Avg position
30.3
money cluster 37.1
Plausible visitors
35
36 visits · 49 pageviews
Affiliate clicks
n/a
still no goal configured
Scorecard
Last week's column is read from the seo-metrics JSON of growth/reports/seo-2026-10-24.html, not recomputed. Both columns come from the same GSC export shape — a cumulative range starting 2026-01-01 — so impressions gains include six extra days of history and are not period-over-period growth.
Metric
Last week
This week
Change
GSC impressions
4,745
5,399
+654 — range extended, not a trend
GSC clicks
9
8
−1 on a longer range: GSC restated past clicks
GSC CTR
0.19%
0.15%
denominator up, clicks down
Average position
24.7
30.3
584 query rows vs 447 — wider tail counted
Money cluster (hosting*)
27.5
37.1
79q · 772 impr · 3 clicks (was 33q · 538 · 1)
Plausible visitors
2
35
35 visits · 49 pageviews — 15 visitors this week
Affiliate clicks
n/a
n/a
goal block still returns only Visit /
Affiliate clicks remain unmeasured, not zero. The event:goal block lists one page goal (Visit /, 2 visitors) and no Affiliate Click — the custom event may be firing without a configured goal, and no read access to Plausible exists here to check. Revenue is not reported in this document.
What shipped
Commit
Change
Metric it was meant to move
f2f19fe 10-26
/en/odoo-hosting/ rebuilt as a decision page: price table, six pre-purchase checks, trial CTA
position for odoo hosting; EN affiliate clicks
abe6d5e 10-25
New /de/odoo-beratung/ in German, opening with when not to hire a consultant
position + CTR for odoo beratung
3cc048a 10-25
/odoo-hosting/ turned from a link directory into a plan/price decision page
position for odoo hosting, hosting odoo
0ea414b 10-25
Demo page: 4,832 words of invented narration → three real ways to try Odoo
CTR on demo odoo at position 13.6
9fff72d 10-25
Page owning odo ia rewritten around a three-layer definition
CTR on 6 odo ia queries, 292 impressions at 6.5
e3883d5 10-25
Six 2027 country pages (BO, HN, GT, CL, MX, PY) on verified localisation facts
clicks on odoo bolivia / odoo honduras
582a93e 10-24
1,370 broken internal links → 0; PT stub removed with sitemap and hreflang blocks; 23 relative canonicals made absolute
audit counts; crawl paths
689bcaf 10-24
Fabricated testimonials, ISO/SOC badges and placeholder phone removed from the six homepages
guardrail: impressions must not fall
Verdicts on last week's actions
Action
Verdict
Evidence
1. Create Affiliate Click / Outbound Click goals
not done
Goal block returns only Visit /, 2 visitors. The north-star metric is still unreadable.
2. Rewrite title + meta for the page-1 zero-click queries
flat
17 rows still earn 0 clicks on 1,034 impressions (was 1,090). Cumulative range means no clean before/after; snippet work shipped 2e0882d.
85 impressions at 15.4 and 0 clicks across 4 rows (was 75 at 13.7, 0 clicks).
7. Fill or remove the 0-byte PT page
done
File gone, no longer in sitemap-pt.xml, live URL returns 404 (was 200 with an empty body).
8. Resolve relative canonicals and missing canonicals
moved
Relative canonicals 23 → 0. Pages without a canonical 18 → 2 (audit; one is the deliberate 404 page).
Technical health
Item
Last week
This week
Notes
Broken internal link occurrences
1,370
0
audit broken_internal_count
Unique broken targets
679
0
full scan
Relative canonicals
23
0
head-scanned across all pages
Pages without a canonical
18
2
1 is the deliberate 404 page
Canonicals pointing at a 404
0
0
no regression
hreflang pages
317
317
26% of 1,208 pages — unchanged
Pages with exactly one H1
—
1,190 / 1,208
18 pages break the one-H1 rule
Sitemap URLs
1,191
1,197
+6 country pages
HTML pages
1,202
1,208
+6 country pages, −1 PT stub
Everything above is from audit_site.py run against the working tree at HEAD5eaadd9. Pages without a description: 1. Duplicate titles and descriptions: 0. Images without alt: 0. Orphan assets: 10 (unreferenced files, no SEO effect).
Ranking opportunities
Page 1, zero clicks — 17 queries, 1,034 impressions
Query
Impressions
Position
Clicks
odo ia
292
6.5
0
odoo de donde es
144
5.3
0
de donde es odoo
111
5.2
0
odoo honduras
77
9.3
0
.odo ia
56
7.4
0
odoo origen
55
8.1
0
odoobot que es
47
8.8
0
odoo de que pais es
36
7.1
0
,odo ia
35
6.8
0
odoo experts
26
9.3
0
odo ia
24
8.0
0
odoo inmobiliaria
23
9.4
0
Selection rule: position ≤ 10, clicks 0, impressions ≥ 20, on the (query, page) rows GSC returns. 1,034 impressions with 0 clicks; at 1.5% CTR that would be about 15 clicks; the failure is the snippet, not the ranking.
Head terms to watch: odoo hosting 360 impr · 35.4 · 1 click (was 298 · 31.5); hosting odoo 222 · 38.4 · 0 (was 85 · 28.5); odoo beratung 187 · 52.3 · 0 (was 155 · 51.5). Row counts grow because the export now returns a page dimension per query.
Action items
1Create the two Plausible goals
Nothing in this report can be tied to commission until Affiliate Click exists as a goal. One dashboard setting, no code. Proves it: the event:goal block returns Affiliate Click with non-null events. This is the third week it has been open.
Effort Sunscheduledmetric: goal rows ≠ null
2Get the two new money pages out of zero impressions
/en/odoo-hosting/ and /de/odoo-beratung/ both return 200, sit in their sitemaps, and have 0 rows and 0 impressions in GSC five days after launch. Confirm indexation in GSC URL Inspection, then add in-language internal links from the locale home and the locale odoo/ hub. Note: the week-12 log claims a +9 visitor jump "confirms the page is working" — the page-level GSC data does not support that; the jump is not attributable to it.
Effort Sfinishes PLAN weeks 14–16metric: impressions > 0 on both URLs
3Fix the snippet on the two biggest zero-click pages
/odoo/empresa-odoo-historia-fundacion-2025/ — 608 impressions at 7.6, 0 clicks — and /odoo-ia/que-es-odoo-ia-guia-basica-2025/ — 472 at 7.7, 0 clicks. Together 1,080 impressions and zero clicks: a title/description problem, not a content problem. Proves it: clicks on those two URLs (currently 0).
Effort SPLAN weeks 3–6 follow-throughmetric: clicks on those URLs
4Stop /odoo-hosting/ losing to its own children
The hub holds 243 impressions at position 50.0 with 1 click; /odoo-hosting/instalar-odoo-hosting-guia-completa-2025/ holds odoo hosting at 13.2. The rework did not lift the hub — it fell from the 41.1 the plan recorded. Consolidate the ES children that carry no clicks, 301 them into the hub, then re-measure. Proves it: hub position for odoo hosting.
Effort LPLAN weeks 8–10, still openmetric: hub position, currently 50.0
5Decide hreflang or drop it
317 of 1,208 pages carry hreflang (26%), unchanged for two weeks, while some pages still canonicalise cross-locale. Either annotate the clusters that need it (the six locale homes plus both hosting hubs) or leave it alone deliberately — but an accidental 26% is a signal nobody owns. Proves it: hreflang page count reaching a stated target, not drifting.
Effort Munscheduledmetric: hreflang pages by design
Open risks
Affiliate clicks are unmeasurable. The only metric that pays has no goal; the custom events may fire into a void. Every "did it work" question below the ranking level is currently unanswerable.
Two new money pages sit at 0 impressions. If they stay there after 2–3 weeks, they were published into an unlinked corner, and the week-13 work has produced nothing.
A false measurement claim is in the repo. Week 12's log row states a visitor jump "confirms the page is working". GSC shows 0 impressions for the page; Plausible cannot attribute visitors to a page from the goal block. Correct it before it becomes precedent.
GSC range is cumulative, not weekly. Every comparison here mixes six extra days of history; only a fixed-window pull would show a true week-over-week number.
Hub position regression./odoo-hosting/ at 50.0 for odoo hosting, below the child page at 13.2 — cannibalisation is still unresolved.
18 pages break the one-H1 rule and one page has no meta description; low impact, unresolved since the last audit.
Internal strategy is publicly readable at /growth/PLAN.md (200, 7,426 bytes) and /growth/reports/; Disallow: /*.md$ is advisory only.