A build-to-order Odoo module that imports website pages, blog posts, and product records — with embedded images, per-language translations, and SEO metadata preserved — into your Odoo site. ECOSIRE scopes, builds, installs, and supports it for you. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $299.00 USD; request a quote for a scoped proposal.

A build-to-order Odoo module that imports website pages, blog posts, and product records — with embedded images, per-language translations, and SEO metadata preserved — into your Odoo site. ECOSIRE scopes, builds, installs, and supports it for you.
Sem pagamento agora. Isto envia um pedido de orçamento à nossa equipe — responderemos por e-mail com preços e próximos passos.
Migrating a website into Odoo usually stalls on the parts nobody budgeted for: hundreds of website.page records, years of blog content, product descriptions, and — the real killers — the images embedded in rich text, the per-language translations, and the SEO metadata (meta titles, descriptions, canonical URLs, redirects) that protect your search rankings. Odoo native gives you a generic import interface for standard models, but it treats a page as a flat row of data. It does not rehydrate <img> sources into ir.attachment records, it does not map your source CMS's language codes onto res.lang and Odoo's field-translation layer, and it has no concept of preserving old URLs so inbound links and Google's index don't break on cutover day. Teams end up copy-pasting page by page, losing alt text and hreflang along the way, and then watching organic traffic dip after launch.
Reads source content from CSV, JSON, XML, or WXR exports, or via a direct read from the legacy CMS API, into a normalized staging layer before load
Maps static pages onto `website.page` with backing `ir.ui.view` QWeb arch, preserving URL path, publish state, and menu placement
Migrates articles into `blog.post`/`blog.blog` with author, publish date, cover image, tags, and teaser preserved
Optional catalog import into `product.template`/`product.public.category` with descriptions, variants, and category tree
Rich-text image rehydration: parses embedded `<img>` tags, downloads and checksum-deduplicates binaries into `ir.attachment`, rewrites to stable `/web/image/` URLs with alt text intact
Per-language translation load: resolves source locales to active `res.lang` and writes values through Odoo's field-translation layer so the language switcher and hreflang work
Website Page Migration is a made-to-order Odoo module that ECOSIRE builds around your specific source system and content shape. At its core is a configurable import engine that reads your exported content (CSV, JSON, XML, WXR, or a direct read from your old CMS over its API) and maps it onto Odoo's real models: website.page and its backing ir.ui.view (QWeb arch) for static pages, blog.post/blog.blog for articles, and product.template/product.public.category for the e-commerce catalog. Rich-text bodies are parsed so that every embedded image is downloaded, deduplicated by checksum, stored as an ir.attachment, and re-referenced with a stable /web/image/... URL — alt text and captions carried across. A staged, transactional loader (with idempotent external IDs in ir.model.data) means a re-run updates rather than duplicates, so you can migrate in waves and re-import safely.
Technically, the module is a proper addon with a versioned __manifest__.py depending on website, website_blog, and (when catalog is in scope) website_sale. Translations are handled by resolving each source locale to an active res.lang, then writing the translated values through Odoo's translation API so the front-end language switcher and hreflang tags work correctly. SEO is first-class: we map source meta titles/descriptions and website_meta_keywords, set canonical hints, and generate website.rewrite (301) records from every old path to its new Odoo URL so link equity and bookmarks survive. Access is governed by ir.model.access.csv plus record rules so the migration wizard is limited to administrators, and the whole run is logged for audit. A wizard (TransientModel) drives mapping, dry-run validation, and a preview report; larger jobs run through queued/automated actions so a 20,000-record import doesn't tie up a worker or hit request timeouts. It targets Odoo 17.0, 18.0, and 19.0, and we note Community vs Enterprise differences up front — e.g. multi-website routing and certain website tools differ, and we build to whichever edition you run.
Because this is build-to-order, nothing ships until we've scoped it with you. A short scoping call establishes your source platform, content volume, languages, and catalog complexity; we then confirm a fixed quote and a field mapping, build the module against a copy of your source data, and validate it on a staging database before touching production. Typical delivery is 2–4 weeks from confirmed scope, depending on source-data cleanliness and volume. Pricing starts from $299 (indicative, single-company base scope); large data-migration volume, additional source platforms, deep multi-language depth, and multi-company or multi-website routing increase the quoted scope. You receive the installable source, so you are never locked to us.
Needs a repeatable, idempotent import that maps a client's legacy CMS pages, blog, and catalog into Odoo without hand-copying — and wants a redirect map generated automatically so the client's SEO survives the move.
Runs Odoo already and is folding a separate marketing site or old CMS into the Odoo website. Wants images, translations, and meta preserved, plus the ability to migrate in waves and re-run safely against staging.
Cares most that meta titles, descriptions, canonicals, hreflang, and 301 redirects come across intact so rankings and inbound links don't break at launch — and wants a reconciliation report to prove nothing was dropped.
Manages content across several languages and legal entities and needs per-locale translations mapped to `res.lang` and content scoped correctly across companies or websites.
Compre a licença em ecosire.com e baixe o ZIP do módulo Website Page Migration no painel da sua conta.
Extraia o ZIP em sua pasta de complementos personalizados do Odoo no servidor (ou faça upload via Aplicativos > Instalar do arquivo em Odoo.sh/runbot).
Ative o modo de desenvolvedor, abra Aplicativos, clique em Atualizar lista de aplicativos, procure por Website Page Migration e pressione Instalar.
Abra o novo menu, cole sua chave de licença ECOSIRE, conecte quaisquer credenciais externas (Shopify, Amazon, Stripe, etc.) e salve.
Execute o teste de conexão integrado, sincronize seus primeiros 10 registros e agende o cron recorrente. Entre em contato com o suporte se algo falhar.
| Critério | ECOSIRE | Construção personalizada | Concorrente | Odoo nativo |
|---|---|---|---|---|
| Nature of solution | Module built to order around your source and content shape | Bespoke scripts written from scratch in-house | Generic off-the-shelf importer with fixed field mapping | |
| Embedded image handling | Downloads, dedupes, stores as `ir.attachment`, rewrites URLs with alt text | Possible but must be coded and tested yourself | Usually leaves external image URLs or drops them | |
| Translations | Locales mapped to `res.lang` via Odoo translation layer, hreflang intact | Doable but complex to implement correctly | Often single-language only | |
| SEO metadata & redirects | Meta, canonical, and 301 `website.rewrite` map generated automatically | Must build redirect logic and meta mapping by hand | Rarely generates redirects | |
| Re-runs / idempotency | Deterministic external IDs — safe re-runs, staged waves | Depends entirely on how you build it | Often creates duplicates on re-import | |
| Large-volume jobs | Queued/`ir.cron` batch processing avoids timeouts | You handle batching and worker load | May time out on big datasets | |
| Support & ownership | Scoped quote, support window, full source + git handover | You own and maintain everything | Vendor support, limited customization | |
| Odoo version coverage | Built and tested for 17.0 / 18.0 / 19.0, Community or Enterprise | Whatever you target and test | Version support varies by listing |
No. Website Page Migration is build-to-order. We scope it against your specific source platform and content, build the module around your data, validate it on staging, then install it. You are not buying an existing apps.odoo.com download — you are commissioning a module tailored to your migration.
Typical delivery is 2–4 weeks from confirmed scope. The exact timeline depends on how clean your source data is, the content volume, the number of languages, and whether the e-commerce catalog is included. We confirm a schedule during scoping before any build starts.
Pricing starts from $299 as an indicative figure for a single-company, base-scope migration. After a short scoping call we send a fixed quote. Large data volumes, additional source platforms, deep multi-language work, and multi-company or multi-website routing increase the scope and the quote. The from-price is a starting point, not a firm final price.
Every build includes a post-go-live support window for defect fixes and mapping adjustments. Because you receive the full source and git repo, your team can maintain it, and we offer ongoing support or version-upgrade work (e.g. moving the module to a newer Odoo release) as a follow-on engagement.
Yes — that is a core design goal. We map meta titles, descriptions, keywords, and canonical hints, carry per-language translations so hreflang stays correct, and auto-generate `website.rewrite` 301 redirects from every legacy URL to its new Odoo path so inbound links, bookmarks, and index equity are preserved at cutover.
We build for Odoo 17.0, 18.0, and 19.0, on either Community or Enterprise. Some website features (multi-website routing and certain tools) differ between editions, so we confirm your edition during scoping and build accordingly.
Yes. The loader uses deterministic external IDs in `ir.model.data`, so a re-run updates existing records instead of creating duplicates. That lets you migrate in waves, validate on staging with a dry run, and re-import safely after fixing source-data issues.

A build-to-order Business Central AL extension that maps your 3PL warehouses into native sales and purchase flows — sending fulfillment orders, ingesting ASN and shipment confirmations, and reconciling on-hand quantities against each 3PL's stock balances.

A build-to-order ERPNext app that lets 3PL operators bill each client for storage, handling, and value-added services with strict multi-owner inventory segregation and automated periodic invoicing. ECOSIRE builds, installs, and supports it for your warehouse.
A build-to-order Odoo module that imports website pages, blog posts, and product records — with embedded images, per-language translations, and SEO metadata preserved — into your Odoo site. ECOSIRE scopes, builds, installs, and supports it for you.