SEO report

odoo-expertos.com

2026-10-24 · first report · Search Console range 2026-01-01 → 2026-10-24
website_stats.py — Plausible + GSC audit_site.py git log live curl checks
The number that matters: the money cluster (33 hosting queries, 538 impressions) sits at position 27.5 with 1 click, while the site earns 4,745 impressions and 9 clicks overall at 0.19% CTR. Almost nobody who sees the site reaches a hosting page. The technical cleanup landed — broken internal links fell from 4,029 to 1,370 — but this is the first report, so no metric has had time to move.
Impressions
4,745
baseline — no prior period
Clicks
9
10 months
CTR
0.19%
page 1 would be 1.5%+
Avg position
24.7
money cluster 27.5
Plausible visitors
2
owner/test traffic
Affiliate clicks
n/a
no goal configured

Scorecard

Baseline and “now” are the same snapshot, so the trend is flat by construction. This becomes a real trend table from the 2026-10-31 run.

MetricBaselineNowTrend
GSC impressions4,7454,745flat — same snapshot
GSC clicks99flat — same snapshot
GSC CTR0.19%0.19%flat — same snapshot
Average position24.724.7flat — same snapshot
Money cluster (hosting*)27.527.533q · 538 impr · 1 click
Plausible visitors222 visits · 3 pageviews
Affiliate clicksn/an/ano Affiliate Click goal

Affiliate clicks are unmeasured, not zero: the Plausible goal block returns only the page goal Visit / with 1 visitor. Commission attribution on odoo4projects.com is not visible from this environment and is not reported here.

Technical progress

Commit a6cff06 is the change this section measures; HEAD is 0d2ecdb.

ItemBeforeAfterEvidence
Broken internal link occurrences4,0291,370audit broken_internal_count
Unique broken targets—679full scan
Canonicals pointing at a 404136093 case-drift + 43 dead
Dead favicon / styles / analytics tags1,29601,197 + 96 + 3
Missing assets30audit missing_assets_count
Bad in-page anchors—0audit bad_anchor_count
Duplicate titles / descriptions—0 / 0audit
HTML pages1,2081,2023 duplicate pages deleted

Still broken and unfixable automatically: /contacto/, /servicios, /implementacion-odoo, /about (old-site routes, 70 occurrences) and 35 locale hosting pages that were never created (175 occurrences). /odoo-ai/… is not case drift — the real section is /odoo-ia/, a different path.

Ranking opportunities

Page 1, zero clicks — 17 queries, 1,090 impressions (23% of all)

QueryImpressionsPositionClicks
odo ia2796.80
odoo de donde es1545.30
de donde es odoo1154.90
odoo honduras819.40
.odo ia667.60
odoo origen607.70
odoobot que es568.80
docker odoo 20 · odoo 20 docker646.60
odoo de que pais es326.80
hosting economicos303.90
odoo inmobiliaria279.40
odoo bot258.30
odoo de donde es originario254.50

At a 1.5% CTR these impressions would produce roughly 16 clicks over the same window.

Positions 8–20 — 34 queries, 1,094 impressions

ClusterQueriesImpressionsClicksAvg posExample
LatAm521439.7odoo bolivia 84 @ 8.4
AI / Odoo IA3183014.0odoo ia 118 @ 15.0
Brand / company4176113.0odoo experts 75 @ 13.7
Demo3145115.1demo odoo 63 @ 12.4
Chatbot / OdooBot413819.0odoobot 34 @ 10.4
Hosting / deployment6104015.4odoo vps 24 @ 14.6

Head terms for later comparison: odoo hosting 298 impr · pos 31.5 · 1 click; hosting odoo 85 · 28.5 · 0; odoo beratung 155 · 51.5 · 0.

Action items

1Create the Affiliate Click and Outbound Click goals

The north-star metric cannot be read today — the goal block returns only Visit /. No traffic change, but it turns every later verdict from opinion into data. Proves it: the event:goal block returns both names with non-null events.

Effort Snot scheduleddashboard setting, not code

2Rewrite title + meta for the page-1 zero-click queries

1,090 impressions already reach page 1 and earn 0 clicks — the snippet is failing, not the ranking. At 1.5% CTR that is ~16 clicks. Start with odo ia, odoo de donde es, de donde es odoo, odoo honduras.

Effort MPLAN weeks 3–6metric: CTR on those 17

3Strip the fabricated testimonials, ISO/SOC badges and placeholder phone

Invented proof is an E-E-A-T and legal liability. 3 testimonials, 113 pages claiming ISO 27001, 80 claiming SOC 2, 8 pages with a placeholder phone. Value is risk removal, not ranking.

Effort SPLAN week 2guardrail: impressions must not fall

4Consolidate the ~40 near-duplicate hosting pages per locale

They cannibalize the hub for the money terms. odoo hosting 31.5, hosting odoo 28.5. Check GSC per URL before deleting anything with impressions.

Effort LPLAN weeks 8–10metric: position of both head terms

5Fix the remaining 1,370 broken internal links (679 targets)

Dead ends waste crawl paths and send readers to 404s. /servicios and the /odoo-ai/… articles are live 404s now. Many are site-wide navigation links, so the fix is a handful of templates.

Effort Mnot scheduledmetric: broken_internal_count → 0

6Fix the odoo experts brand query

75 impressions at position 13.7 with 0 clicks on a query that matches the domain name. Likely a title/H1 mismatch on the English homepage.

Effort Snot scheduledmetric: position + CTR

7Fill or remove the 0-byte PT page

pt/odoo-ia/odoo-sistema-reservas-booking-ia-2025/ is 0 bytes, returns 200 with an empty body and sits in the PT sitemap. A soft-404 candidate.

Effort SPLAN week 7metric: index coverage

8Resolve 23 relative canonicals and 18 pages without one

Canonicals like /odoo-ia/ carry no host, so they resolve to whichever host served the page — and apex and www both answer 200. Do not touch the cross-locale canonicals; that is intentional strategy.

Effort Mnot scheduledmetric: canonical_not_www → 0

Open risks