+ 11 clicks from 5,853 impressions (0.19% CTR) — three more clicks than last week, on a range that is seven days longer; the money cluster still earns 3 of them at position 43.1. Impression growth of 454 is calendar, not performance. The one real move is the EN hosting hub going from 0 to 64 impressions (position 66.9, 0 clicks) — indexed, but page 7; its German twin still shows 0 rows after 13 days because only two pages link to it. The week's shipped work (4 title rewrites) covers 90 impressions, not the 1,003 the log claims, and sits below the 2-week re-crawl window, so every verdict on it is too early. The zero-click problem is not a snippet problem: 91% of those impressions are definitional queries Google answers in the SERP itself.
+
+
+
+
Clicks
11
+3 on a range 7 days longer
+
Impressions
5,853
+454 — range grew 7 days
+
CTR
0.19%
was 0.15% — 11 clicks, still noise
+
Avg position
34.5
money cluster 43.1
+
Money cluster
3 clicks
66q · 982 impr · pos 43.1
+
Plausible visitors
31
week of 11-02 (5 days) · 53 pageviews
+
Affiliate clicks
n/a
no goal configured — 4th week
+
+
+
Scorecard
+
Last week's column is read from the seo-metrics JSON in growth/reports/seo-2026-10-31.html, not recomputed. Both GSC columns come from the same cumulative export (from 2026-01-01), so impression movement includes the seven extra days.
*Plausible: last week's 35 visitors / 36 visits / 49 pageviews was a multi-week sum. On today's payload the same two weeks (10-19 + 10-26) sum to 39 / 40 / 53 — the data was restated or the window differed, so neither column is directly comparable. The figure in the JSON block is the latest week bucket alone: 2026-11-02, five days, 31 / 32 / 53. Plausible's event:goal block still lists one page goal only (Visit /, 3 visitors, events null) and no Affiliate Click: affiliate clicks are unmeasured, not zero. No revenue is claimed in this document.
+
+
What shipped
+
+
Commit
Change
Metric it was meant to move
+
+
+
f201d63 11-02
+
Week 14: title + meta description rewritten on 4 pages — odoo-docker-contenedores-implementacion-2025,
+ odoo-chatbot-atencion-cliente-2025, gestion-inmobiliaria-odoo-hosting-2025,
+ hosting-odoo-barato-2026. All four return 200 with the new titles live (curl, 11-07).
+
CTR on the 4 target queries; site CTR 0.14% → 1.5%
+
+
+
no other commits
+
Nothing else shipped between 2026-10-31 and 2026-11-07 (git log --since="8 days ago": two commits, one of which is last week's report).
+
—
+
+
+
+
+
Verdicts on last week's actions
+
+
Action
Verdict
Evidence
+
+
+
1. Create the two Plausible goals
+
not done
+
Fourth consecutive week. The goal block returns Visit / only: 3 visitors, events null. No Affiliate Click row exists.
+
+
+
2. Get the two new money pages out of zero impressions
+
half moved
+
/en/odoo-hosting/: 0 → 64 impressions at position 66.9, 0 clicks — indexed but page 7.
+ /de/odoo-beratung/: still 0 rows 13 days after launch, while odoo beratung's
+ 193 impressions land on /de/ at 51.8. Only 2 internal links point at the German page (de/index.html, de/odoo/index.html).
+
+
+
3. Fix the snippet on the two biggest zero-click pages
+
flat
+
/odoo/empresa-odoo-historia-fundacion-2025/ 608 → 591 impressions at 8.2, 0 clicks;
+ /odoo-ia/que-es-odoo-ia-guia-basica-2025/ 472 → 465 at 7.7, 0 clicks. Both already carry
+ rewritten titles (verified live: "¿De dónde es Odoo? Es belga — y así se usa en LATAM"). The snippet is no longer
+ the constraint — see the ranking-opportunity note below.
+
+
+
4. Stop /odoo-hosting/ losing to its own children
+
flat
+
Hub: 243 → 193 impressions at 46.1, 1 click. Position improved ~4 spots but the exact query
+ odoo hosting is still split across 13 pages (390 impressions, 1 click, avg 42.1). Nothing consolidated.
+
+
+
5. Decide hreflang or drop it
+
not done
+
317 hreflang pages, unchanged for the third week (26% of 1,209 pages, 0 no-canonical regressions).
+
+
+
+
+
Technical health
+
+
Item
Last week
This week
Notes
+
+
Broken internal link occurrences
0
0
audit_site.py, 1,209 pages scanned
+
Unique broken targets
0
0
same run
+
Pages without a canonical
2
3
+1 — worth a look; one is the deliberate 404 page
+
Relative canonicals
0
0
head-scanned across all pages
+
Canonicals pointing at a non-www host
0
0
1,207 canonicals, all www.
+
hreflang pages
317
317
unchanged, unowned (see action 5)
+
Pages with exactly one H1
1,190 / 1,208
1,191 / 1,209
18 pages still break the one-H1 rule
+
Pages without a meta description
1
2
+1 this week
+
Duplicate titles / descriptions
0
0
—
+
Sitemap URLs
1,197
1,197
six locale sitemaps, unchanged
+
HTML pages
1,208
1,209
+1, no page was published this week
+
+
+
+
Ranking opportunities
+
+
Page 1, zero clicks — 12 queries, 863 impressions
+
+
Query
Impressions
Position
Clicks
+
+
odo ia /odoo-ia/que-es-odoo-ia-guia-basica-2025/
308
6.5
0
+
odoo de donde es /odoo/empresa-odoo-historia-fundacion-2025/
138
5.0
0
+
de donde es odoo /odoo/empresa-odoo-historia-fundacion-2025/
103
5.0
0
+
odoo origen /odoo/empresa-odoo-historia-fundacion-2025/
50
7.8
0
+
.odo ia /odoo-ia/que-es-odoo-ia-guia-basica-2025/
49
7.1
0
+
odo ia /odoo-ia/
39
7.4
0
+
,odo ia /odoo-ia/que-es-odoo-ia-guia-basica-2025/
38
6.8
0
+
odoo de que pais es /odoo/empresa-odoo-historia-fundacion-2025/
Head terms to watch (exact-match rows, all pages summed): odoo hosting 390 impr · 42.1 · 1 click across 13 pages; hosting odoo 368 · 42.0 · 0 across 13; odoo beratung 193 · 51.8 · 0 on /de/; odoo ia 289 · 40.7 · 0 across 10 rows; odoo experts 91 · 17.7 · 0 across 4 rows (27 of them on the French homepage). Selection rule for this table: position 8–20, impressions ≥ 20 — the same rule as last week, so 18 → 16 rows.
+
+
Action items
+
1Create the Affiliate Click and Outbound Click goals
Nothing in this report can be tied to commission until the goal exists. js/plausible-events.js already fires both events on all pages; the goal rows are simply not configured. This is the fourth week it is open and it is the only item that unlocks every other measurement. One dashboard setting, no deploy.
odoo hosting earns 390 impressions across 13 URLs and 1 click; hosting odoo 368 across 13 and 0. The hub is at 46.1 while hosting-odoo-community-edition-gratuita-2025 holds 31 impressions at 13.4 for the same query. Pick the 4 children with 0 clicks and ≤ 40 impressions, fold their unique content into /odoo-hosting/, 301 them, and re-point internal links. This is PLAN weeks 8–10, still open since 10-25.
effort Lfinishes PLAN weeks 8–10proves it: hub position for odoo hosting (46.1), rows for the query
+
3Give the German consulting page the links it never got
13 days after launch /de/odoo-beratung/ has returned 0 GSC rows, while odoo beratung's 193 impressions go to /de/ at 51.8. It is only linked from two pages. Add it to the /de/odoo-hosting/ hub and the German article pages, and confirm indexation in GSC URL Inspection. Note: the page-level data contradicts the usual "wait 4–6 weeks" — a page with 0 rows after 13 days is unlinked, not young.
effort Sfinishes PLAN week 14proves it: GSC rows > 0 for /de/odoo-beratung/
+
4Stop buying nothing: leave the definitional zero-click pages alone and re-measure the 4 CTR pages on 11-16
786 of the 863 page-1 zero-click impressions (91%) are definitional queries — odo ia (308), odoo de donde es, de donde es odoo, odoo origen, quien creo odoo. Google answers all of them above the result, so no snippet rewrite recovers the click; the two pages carrying them already have rewritten titles (verified live) and still earn 0 clicks on 1,056 impressions. Meanwhile the week-14 change sits on 4 pages holding a combined 90 impressions — the log's "1,003 impressions, 18% of total" is not what those URLs hold. Measure it once, on 11-16, before touching them again.
effort Smetric: clicks on the 4 URLs at 0.19% site CTR baseline
+
+
Open risks
+
+
Affiliate clicks are unmeasurable, fourth week. The only metric that pays has no goal; custom events may be firing into a void. Every "did it work" question below the ranking level is unanswerable.
+
A second false measurement is now in the repo.growth/WEEKLY-LOG.md week 14 claims the 4 touched pages hold "16 queries, 1,003 impressions (18% of total)". GSC gives those 4 URLs 90 impressions combined. Correct the row before it becomes precedent — the week-12 "visitor jump confirms the page works" claim is still uncorrected.
+
The German page may not be indexed at all. 0 rows in 13 days with 2 internal links. If it is still 0 on 11-16, it was published into a corner.
+
Money-cluster position went backwards. 37.1 → 43.1 while impressions rose to 982 — GSC also cut the query row count 79 → 66, so the row set changed; treat the position as contested, not as a real regression, until a fixed-window pull exists.
+
GSC range is cumulative, not weekly. Every comparison here mixes seven extra days of history. The webhook does not offer a fixed window.
+
Internal strategy is publicly readable at /growth/PLAN.md and /growth/reports/; Disallow: /*.md$ is advisory only.