227 impressions of consulting intent were all landing on /de/, a homepage
sitting at positions 45-88: 'odoo beratung' 163 impr @ 51.4, 'odoo berater'
28 @ 47.0, 'odoo erp beratung' 13 @ 45.8, 'odoo expert' 18 @ 68.3, 'odoo
experte' 5 @ 63.2. German pages overall: 439 impressions, 0 clicks.
Written in German as German, not translated from the Spanish pages:
- 'Wann Sie keine Beratung brauchen' comes first, because that is the honest
answer for most readers and nobody writes it.
- 'Was den Preis wirklich bestimmt' — number of person-days, not day rate, and
an explicit warning that a fixed price without looking at the data is a bet.
The only figure quoted is the verifiable one: hosting from 14/year.
- Localisation restricted to what the addons tree supports: l10n_de is in the
community branch; SKR03/SKR04 and DATEV are not separate packages there, so
the page says check your version rather than asserting either way. No EDI in
community, same as everywhere.
- Five vetting questions plus links to the official partner directory for
Germany, Austria and Switzerland (all verified 200). No firms named.
Linked from /de/ and /de/odoo/, added to sitemap-de.xml. Article + FAQPage +
Breadcrumb schema, lang=de.
- Deleted the three invented testimonials (María González / 'EMPERATRIZ DIGITAL',
Alejandro Ruiz / 'COMANDANTE DE OPERACIONES', Carlos Salinas / 'GENERAL DE
TECNOLOGÍA'). The companies do not exist and the quotes are not attributable.
- Removed the ISO 27001 and SOC 2 trust badges: they claimed *we* hold those
certifications. Third-party statements about Hetzner/Azure/Odoo SH being
certified are factual and stay.
- Removed the placeholder phone number (tel:+) used as a 'Call now' button on
all six homepages.
E-E-A-T and legal exposure, not a ranking play.
No visible change — links, canonicals and dead tags only.
- 155 path rewrites (case drift from the provider move): /Odoo-Hosting/ ->
/odoo-hosting/, /odoo-ai/ -> /odoo-ia/, /Odoo/... -> /odoo/...; applied in
href/src, og:url and JSON-LD alike. The origin is case-sensitive, so these
were live 404s.
- canonicals: 93 pointed at a case variant that 404s, 43 pointed at a path that
no longer exists; the first now point at the real URL, the second are
self-canonical. Cross-locale canonicals were left alone (strategy, not a bug).
- removed 1,197 dead <link rel=alternate icon href=/favicon.ico> (file never
existed), 96 dead /styles/*.css links (Next.js leftovers) and 3
/_vercel/insights scripts (previous host's analytics).
- deleted unused duplicates: index-optimized.html, index-performance.html,
add-performance.html, a 2.1 MB duplicate portrait, and the old build scripts
(server-upstash*.js, server-optimized.js, minify-assets.js, optimize-all.js,
fix-canonicals.ps1).
broken internal links: 4,029 -> 1,370 occurrences.
js/plausible-events.js classifies every outbound click:
Affiliate Click — host in AFFILIATES map, or rel=sponsored
Outbound Click — any other external link
props: network, destination, destination_path, placement (utm_medium),
link_text, lang. Internal links, in-page anchors, mailto: and tel: are ignored;
data-plausible-skip opts an element out. Adding a new partner is one line in
AFFILIATES. Loaded on 1206 pages before </body>.
Create the two goals in Plausible (Settings -> Goals -> Custom event) named
exactly 'Affiliate Click' and 'Outbound Click' for them to show as conversions.
plausible.office.odoo4projects.com is a self-hosted CE instance: it serves
/js/script.js and /js/plausible.js, but /js/pa-VLJpcZHbeLiw9Ub8C_MgG.js returns
404, so the snippet you supplied loaded no tracker and would have recorded
nothing. Site id now travels in data-domain (apex + www report as one site).
- 467 outbound links across 254 files now carry our affiliate UTM
(replaces the stale utm_source=X5Y2I933 on the banner components)
- fix 36 links to /starter /professional /enterprise /business /mx,
which return 404 on the target; remapped to /#pricing
- add a managed-hosting CTA block to all 6 homepages (es/en/de/fr/pt/ar),
which previously carried zero links to the host