Customize the Odoo 18 Customer Portal Menus & Views
By Braincuber Team
Published on February 5, 2026
The Customer Portal is the face of your business for clients and vendors using Odoo. While Odoo 18 provides a solid default portal, tailoring it to your brand's specific terminology and data requirements can significantly enhance the user experience.
In this guide, we'll walk through customizing the Odoo 18 customer portal using QWeb inheritance and XPath. We'll use GreenTech Solutions as our example—a renewable energy firm that wants to rename standard menu items to match their "Green Initiative" branding, display installation dates in purchase lists, and show contract references on order forms.
What You'll Learn:
- Menu Customization: Renaming tiles and changing icons.
- List View Updates: Adding custom columns to portal tables.
- Form View Logic: Injecting new fields and hiding unwanted ones.
1. Customizing the Portal Menu
By default, Odoo shows "Requests for Quotation" and "Purchase Orders". GreenTech Solutions wants to rename "Purchase Orders" to "Green Supply Orders" to align with their supplier terminology.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="portal_my_home_green_orders" inherit_id="purchase.portal_my_home_purchase"
name="Update Purchase Menu to Green Supply Orders" priority="30">
<xpath expr="//div[@id='portal_vendor_category']" position="replace">
<div id="portal_vendor_category">
<!-- Keep RFQ section as is -->
<t t-call="portal.portal_docs_entry">
<t t-set="icon" t-value="'/web/static/img/rfq.svg'"/>
<t t-set="text">View your Green Quotes</t>
<t t-set="title">Green Quotes</t>
<t t-set="url" t-value="'/my/rfq'"/>
<t t-set="placeholder_count" t-value="'rfq_count'"/>
</t>
<!-- Rename Purchase Orders -->
<t t-call="portal.portal_docs_entry">
<t t-set="icon" t-value="'/purchase/static/src/img/calculator.svg'"/>
<t t-set="text">Track your Green Supply Orders</t>
<t t-set="title">Green Supply Orders</t>
<t t-set="url" t-value="'/my/purchase'"/>
<t t-set="placeholder_count" t-value="'purchase_count'"/>
</t>
</div>
</xpath>
</template>
</odoo>
2. Enhancing the List View
The default list view shows the "Confirmation Date". GreenTech wants to prioritize the "Order Date" so vendors know exactly when the request was initiated. We'll inject a new column into the table.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="portal_my_purchase_orders_add_order_date"
inherit_id="purchase.portal_my_purchase_orders"
name="Add Order Date to List View">
<!-- 1. Add Column Header -->
<xpath expr="//thead/tr/th[2]" position="before">
<th class="text-end">
<span class="d-none d-md-inline">Initiation Date</span>
<span class="d-block d-md-none">Date</span>
</th>
</xpath>
<!-- 2. Add Column Value -->
<xpath expr="//t[@t-foreach='orders']/tr/td[2]" position="before">
<td class="text-end">
<span t-field="order.date_order" t-options="{'widget': 'date'}"/> 
<span class="d-none d-md-inline" t-field="order.date_order" t-options="{'time_only': True}"/>
</td>
</xpath>
</template>
</odoo>
3. Customizing the Form View
Finally, inside the actual order view, GreenTech wants to emphasize the Vendor Reference (e.g., the vendor's invoice number) and remove the redundant "Order Date" block to declutter the interface.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="purchase_order_portal_custom_form"
inherit_id="purchase.purchase_order_portal_content"
name="Customize PO Form View">
<!-- Add Vendor Reference -->
<xpath expr="//strong[contains(text(), 'Receipt Date:')]/parent::div" position="after">
<div t-if="order.partner_ref" class="mt-1">
<strong>Vendor Contract Ref:</strong>
<span class="ms-1" t-esc="order.partner_ref"/>
</div>
</xpath>
<!-- Remove Redundant Order Date -->
<xpath expr="//div[@id='po_date']" position="replace">
<!-- Replaced with nothing to remove it -->
</xpath>
</template>
</odoo>
Conclusion
Customizing the Odoo 18 Customer Portal doesn't require complex JavaScript changes. With simple XML templates and XPath, you can completely transform the terminology, layout, and data presentation to match your brand's voice. Whether you are running a renewable energy firm like GreenTech or a retail store, these techniques enable you to build a portal that speaks your language.
Looking to build a custom Odoo Portal?
Our Odoo experts can help you design a client portal that seamlessly integrates with your workflow, complete with custom forms, dashboards, and reports.
