15
Odoo Website Development: How to Build a Fully Integrated Business Website
5 min read
15
5 min read
68%
Of organizations cite data silos as their top concern, making ERP-website integration a priority investment for 2025 (DATAVERSITY, 2024 Trends in Data Management Survey)
20–30%
Of annual revenue lost by mid-market companies running disconnected website and back-office systems due to data silos and manual reconciliation (IDC Market Research)
$32.1T
Global B2B eCommerce market value in 2025, growing at 14.5% CAGR — the largest share of growth coming from mid-market companies adding self-serve portals to their ERP (Capital One Shopping / eMarketer, 2025)
98%
Client retention rate at BiztechCS across 19+ years of Odoo implementations, with website and eCommerce integrations among the most common project types
Most guides about “Odoo website development” are actually about the block editor — drag a section, pick a font, publish a page. That’s the Odoo Website Builder and it’s reasonably straightforward. This article covers something different.
Building a website on Odoo the way we’re describing here means the website is the front-end layer of your ERP. Same database as CRM, Inventory, Accounting, and Email Marketing, with no API and no sync script holding things together. When a customer places an order, Odoo creates a confirmed sale order and decrements inventory in one operation. A contact form submission becomes a CRM lead without any plugin. A newsletter sign-up joins the mailing list because both live in the same database. That’s what separates an Odoo website from a WordPress store with an ERP integration bolted on top.
Businesses that move to Odoo website development are usually coming from a WordPress plus WooCommerce setup held together with sync scripts. The decision usually isn’t about features — it’s about the overhead of keeping those connections from breaking. When your product catalog has 400 SKUs and the sync job fails on a Friday night, somebody is manually reconciling inventory on Monday morning. Odoo removes the sync job entirely by not having one.
The Odoo CMS layer is what surfaces all this as a usable website. It gives the Odoo website builder its drag-and-drop blocks, blog functionality, per-page SEO settings, and theme controls. Good Odoo web development services configure the CMS alongside the module connections underneath it — not one without the other.
Before you touch the Website module, four prerequisites should be in place. Missing any of them creates rework later.
Odoo subscription and hosting decision. Odoo Online (SaaS) gets you to a live website fastest. Odoo manages the hosting and handles updates automatically, so there’s nothing to set up on the infrastructure side. Odoo.sh (PaaS) is worth considering when custom module development is in scope — you get Git-based deployments, staging environments, and direct server access that a SaaS setup won’t give you. On-premise means full infrastructure control, but you own every upgrade. If you’re not writing custom modules, Odoo Online is usually the right starting point.
Modules enabled. Start with the Website module. If eCommerce is in scope, enable it separately — it builds on Website and adds the product catalog, cart, checkout flow, payment provider connections, and customer portal. Enable B2B portal features inside eCommerce settings if B2B ordering is needed. Get CRM and Email Marketing active before you configure any forms, so lead routing and mailing list subscriptions work correctly from the first submission.
Product catalog ready. For eCommerce projects, product catalog prep is where most timelines slip. Products have to be in Odoo with variants correctly set up, pricelists assigned, images at the right dimensions, and descriptions ready before the website can display them. If you’re migrating from another platform, scope data migration and cleanup as its own workstream before the website build starts. Don’t let it run in parallel — it almost always takes longer than expected.
Domain and DNS. Odoo Online gives you a free yourcompany.odoo.com subdomain by default. For a custom domain, you need DNS access to add a CNAME record pointing to Odoo’s servers. Set this up early. DNS propagation takes time, and if you leave domain configuration for the final week, you’re creating a delay that was entirely avoidable.
Once your prerequisites are confirmed, open Website > Configuration > Settings in Odoo 17.
The first thing to set is the website name — it shows in browser tab titles and affects downstream page naming. Add the default language for the site and cookie policy settings while you’re in this panel. Google Analytics or Search Console tracking IDs go here too if you’re integrating them — doing it now means every page you publish is tracked from the start rather than needing a retroactive sweep.
To connect your domain, add it in the Website Settings panel. Odoo generates the DNS record values from there — take those to your registrar and configure them, then wait. SSL certificate issuance and domain verification typically take a few hours after DNS records update. Don’t touch other site configuration while it’s propagating — issues that appear during this window usually resolve on their own.
Check these before moving on: does the site load on the custom domain with a valid SSL? Does the browser tab show the correct site name? Is Google Analytics firing on page load? All three need to be confirmed before you build out any page structure.
Before you publish a single page, map out your URL structure and navigation hierarchy. Most projects skip this because there’s a live editor open and it’s tempting to just start building. The problem shows up months later when someone restructures the navigation and realizes every changed URL needs a redirect — and the one that got missed is serving 404s to indexed Google traffic.
URL slugs in Odoo 17 are configurable at the page level. For a new website, set them deliberately. Changing URL slugs after go-live requires a redirect map, and a missing redirect on a page with indexed links sends traffic to a 404. In our Odoo website projects, the first thing we establish is URL structure and redirect planning, before any content is published.
Create the main pages your site needs: Home, About, Services or Products, Contact, and any solution pages relevant to your business. In the Website Builder, each page is created from Website > Pages > New Page. Assign the page URL slug at creation rather than accepting the auto-generated default.
Build the navigation menu in Website > Configuration > Menus. Odoo 17 supports multi-level menus with dropdown navigation. The footer menu and header menu are configured separately.
Expert Tip from the BiztechCS Odoo team: Before sending any traffic to a page, configure its SEO settings. In Odoo 17, open the properties panel from within the Website Builder for any published page and fill in the meta title and meta description. Also confirm the canonical URL is set correctly. Skip any of this and the page gets indexed with whatever Odoo auto-generates from the page title field — not something you’d choose, and a real pain to fix across a large site after the fact.
For any site with a product catalog and checkout, Step 3 is where “native integration” stops being abstract and starts showing up in the actual configuration panels.
In Odoo eCommerce, the products on your website are the same records your warehouse and finance teams work with. Configure a product once — set up variants, stock rules, cost price, tax settings — and those settings show up on the website automatically. No second data entry step. That’s the practical difference from a WooCommerce integration, where a separate data layer sits between your store and back-office.
Configure product variants first. In Odoo 17, variants are built at the product template level using Attributes and Variants. Add a “Color” attribute with values like Red, Blue, and Black, and Odoo creates a distinct product record for each one — each with its own stock tracking and barcode. On the product page, the customer picks the variant and sees the actual available stock for that specific combination in real time.
Pricelists determine which price a customer sees on the website. Odoo handles multiple pricelists — retail pricing, B2B accounts with contracted rates, geography-specific pricing with currency adjustment. Assign them to customer segments or eCommerce access groups. A B2B customer who logs in sees their negotiated rate automatically, without a manual override or a sales rep intervening. (Yes, even B2B pricing. Test a logged-in B2B account session separately before go-live.)
Payment provider configuration is in Website > Configuration > Payment Providers. Odoo 17 supports Stripe, PayPal, Razorpay, and several regional providers natively. Each provider requires API key configuration. Test the full checkout flow, from add to cart through payment confirmation, before publishing the store.
Before moving to Step 4, run three manual tests. Place a guest order from browse through to payment confirmation. Log in as a B2B account and check that negotiated pricing shows correctly. Confirm the completed order created a confirmed sale order in Odoo, decremented the right inventory location, and queued an invoice. If any of these fail, Step 3 isn’t done.
The connections between the Odoo website and back-office modules aren’t things you configure. They’re active by default once the relevant modules are installed. Step 4 is about verifying that the default connections are working correctly and configuring any non-default routing.
CRM integration. Every contact form on the Odoo website submits to the CRM as a lead by default. Verify the lead routing: which CRM team receives website leads? Is there a default salesperson assignment? In Website > Configuration > Settings, the lead source defaults to “Website.” Check that this tag is visible in the CRM pipeline so sales teams can distinguish website leads from other sources.
Inventory integration. Product stock levels shown on the website reflect the Odoo inventory in real time. The relevant configuration is which warehouse location the website draws stock from. This matters for businesses with multiple warehouse locations or with stock reserved for specific channels. Configure the website’s inventory location in eCommerce settings to ensure customers see accurate availability.
Accounting integration. Completed orders trigger automatic invoice creation, or invoice draft creation, depending on your invoicing policy. Verify the tax rule applied to website orders. The default customer tax on the product template must match your applicable tax for the website customer geography. Automated invoicing that applies incorrect taxes requires manual correction at every order. Get this right at configuration time.
Expert Tip from the BiztechCS Odoo team: Run the full order flow in a test environment before go-live. Place an order as a guest customer, as a registered retail customer, and as a B2B portal customer. Check what appears in CRM, Inventory, and Accounting after each. The gaps you find in testing are much cheaper to fix than the gaps you find in production.
The Odoo website builder ships with default themes. If your brand guidelines are reasonably standard and you don’t have a design agency dictating exact component specs, the built-in color and typography controls are usually enough to get to a professional-looking result — no custom code needed.
Custom theme development has a narrower scope than most projects expect. The main trigger is a brand agency’s design system: specific fonts, color rules, and component layouts that the default Odoo theme can’t produce through configuration alone. A second trigger is interaction design — navigation patterns or page section behaviors the standard building blocks won’t cover. Outside these two cases, most business websites reach a professional result through the default theme with minor adjustments.
BiztechCS handles custom theme development as a separate workstream from module configuration. The practical implication: a business can deploy a fully functional Odoo website on the default theme, go live, confirm the integrations are working in production, and then layer the custom theme on top without touching any of the business logic underneath. A lot of projects do it the other way — build the custom theme first and discover integration issues in the same sprint. That sequencing typically adds three to four weeks to go-live when something breaks.
Custom theme development in Odoo 17 uses QWeb templates with SCSS overrides and OWL components for interactive elements. A custom theme is packaged as a standard Odoo module, installed through the normal module installation path and version-controlled in Git. A properly packaged custom theme module upgrades without manual intervention. That’s not the case for inline CSS customizations applied through the builder.
This won’t apply if you’re running a content-only site with no eCommerce or integration requirements. In that case, the default Odoo website builder themes plus minor color and font configuration will get you to a live, professional site without custom development work.
These are the failure modes we see most often in Odoo website development projects.
URL structure set after go-live. If your Odoo website has been running on auto-generated slugs and you restructure them post-launch, every changed URL needs a 301 redirect. Without a redirect map, indexed URLs return 404s. Search engines take weeks to re-index the corrected URLs. The fix costs nothing if done before go-live. The remediation is expensive after.
Missing redirect map during migration. Businesses migrating from an existing WordPress or Magento site to Odoo need a complete redirect map: every page URL on the old site mapped to its equivalent on the new Odoo site. One distribution company we worked with had over 3,000 product pages. Without a redirect map, every one of those indexed URLs would have returned a 404 on day one. We built the redirect map during the pre-migration workstream, imported it into Odoo’s URL rewrite configuration, and the site launched with no indexing disruption.
Going live without B2B portal testing. The B2B customer portal behavior, which covers logged-in pricing, order history visibility, and account credit display, is not visible in the default guest checkout flow. Many implementations test the retail checkout thoroughly and skip the B2B portal session entirely. B2B customers who log in on day one and see incorrect pricing or missing order history generate support volume immediately. Test every customer segment separately before go-live.
Treating eCommerce product data as an afterthought. Product data migration consistently takes longer than anticipated. Product images that aren’t the right dimensions, variant attribute structures that don’t match Odoo’s data model, pricing that needs restructuring for pricelist logic: these are data issues, not configuration issues. Allocate dedicated time for product data preparation and validation before the website build starts.
1
2
3
4
5
BiztechCS is a certified Odoo Ready Partner with 19+ years of ERP and web development experience. Our Odoo web development services cover full-stack website builds: module configuration, custom theme development, eCommerce setup, CRM integration, and go-live support. We have delivered Odoo website and eCommerce projects across manufacturing, distribution, professional services, and retail. ISO 27001 certified. 25+ certified Odoo experts. 98% client retention.
[1] DATAVERSITY / Cherry Bekaert — The Cost of Data Silos: Why CRM-ERP Integration Matters (2024) — https://www.cbh.com/insights/articles/the-cost-of-data-silos-why-crm-erp-integration-matters/
[2] Odoo — Official Website Module Documentation v17 — https://www.odoo.com/documentation/17.0/applications/websites/website.html
[3] Capital One Shopping — B2B eCommerce Statistics 2025 (citing eMarketer, McKinsey, U.S. Census Bureau) — https://capitaloneshopping.com/research/b2b-ecommerce-statistics/
[4] Odoo — eCommerce Module Documentation v17 — https://www.odoo.com/documentation/17.0/applications/websites/ecommerce.html
[5] W3Techs — CMS Market Share 2025 — https://w3techs.com/technologies/overview/content_management
ERP
11
By Uttam Jain
Artificial Intelligence (AI)
Development
45
By Nandeep Barochiya
Odoo
65
By Uttam Jain