{"id":554947,"date":"2026-09-21T08:25:34","date_gmt":"2026-09-21T08:25:34","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=554947"},"modified":"2026-09-21T08:41:39","modified_gmt":"2026-09-21T08:41:39","slug":"odoo-momentum-theme-documentation","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/","title":{"rendered":"Odoo Headless Momentum Theme: User Guide"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p>The <strong>Odoo Headless Momentum Theme<\/strong> is a ready-to-use storefront that runs on top of your existing Odoo backend. It talks to Odoo entirely over the Odoo Headless REST API.<\/p>\n\n\n\n<p>Odoo still runs your catalog, pricing, stock, customers, carts and orders. Momentum simply renders all of it in a faster, more modern front end.<\/p>\n\n\n\n<p>This user guide walks you through the features, the installation steps and the day-to-day management of the theme. So if you are evaluating it or setting it up for the first time, start here.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Makes the Momentum Theme Different<\/h2>\n\n\n\n<p>Most storefront themes hard-code their colours, banners and menus. Momentum does the opposite.<\/p>\n\n\n\n<p>Odoo publishes almost everything you see. That includes the brand palette, the logo, the announcement bar, the mega menu and all eleven homepage sections.<\/p>\n\n\n\n<p>Because of that, a store owner can change the look of the storefront from the Odoo admin panel alone. No developer, no rebuild and no redeploy.<\/p>\n\n\n\n<p>The theme is also built for speed. It renders pages on the server and caches the Odoo responses, so shoppers see content almost instantly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Features of the Odoo Headless Momentum Theme<\/h2>\n\n\n\n<p>Here is a quick summary of what ships with the theme.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Admin-driven-driven theming<\/strong> \u2014 18 colour tokens, logo, favicon and store name come straight from Odoo.<\/li>\n\n\n\n<li><strong>Dynamic home page<\/strong> \u2014 11 sections that appear or hide based on what Odoo returns.<\/li>\n\n\n\n<li><strong>Three-level mega menu<\/strong> \u2014 built from your Odoo category tree, with image tiles.<\/li>\n\n\n\n<li><strong>Filters and sorting<\/strong> \u2014 a price range plus dynamic attribute filters such as colour, size and brand.<\/li>\n\n\n\n<li><strong>Variant-aware product pages<\/strong> \u2014 swatches, buttons, radios or dropdowns, with unavailable options disabled.<\/li>\n\n\n\n<li><strong>Guest and registered checkout<\/strong> \u2014 guest carts merge into the customer cart at login.<\/li>\n\n\n\n<li><strong>Customer account<\/strong> \u2014 dashboard, order history, order tracker, address book and profile.<\/li>\n\n\n\n<li><strong>Wishlist<\/strong> \u2014 a heart toggle on every product card and on the product page.<\/li>\n\n\n\n<li><strong>Multi-currency<\/strong> \u2014 a header switcher that re-prices the whole storefront.<\/li>\n\n\n\n<li><strong>CMS pages<\/strong> \u2014 Odoo pages rendered with sanitised, allow-listed HTML.<\/li>\n\n\n\n<li><strong>Built-in caching<\/strong> \u2014 cached catalog reads, optimised images and route-level loading skeletons.<\/li>\n\n\n\n<li><strong>Instant cache refresh<\/strong> \u2014 Odoo can call a webhook to update the storefront immediately.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Frameworks<\/h2>\n\n\n\n<p>The theme uses a current, well-supported stack. Nothing here is experimental.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Next.js 16.3.0 (App Router)<\/li>\n\n\n\n<li>React 19.2.4<\/li>\n\n\n\n<li>TypeScript 5 in strict mode<\/li>\n\n\n\n<li>Tailwind CSS 4<\/li>\n\n\n\n<li>Redux Toolkit and TanStack React Query<\/li>\n\n\n\n<li>React Hook Form with Zod validation<\/li>\n\n\n\n<li>GSAP for motion and Swiper for carousels<\/li>\n\n\n\n<li>Node.js 20.9.0 or newer as the runtime<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Header Request<\/h3>\n\n\n\n<p>You must allow the request origin and the request headers so the theme can talk to Odoo. Please follow the instructions below.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\"># For Apache\nHeader set Access-Control-Allow-Origin &quot;https:\/\/your-storefront-domain.com&quot;\nHeader set Access-Control-Allow-Headers &quot;Accept, Content-Type, Authorization, Authenticate, cartId, currency, X-Odoo-Currency&quot;\n\n# For Nginx\nadd_header &#039;Access-Control-Allow-Origin&#039; &#039;https:\/\/your-storefront-domain.com&#039;;\nadd_header &#039;Access-Control-Allow-Headers&#039; &#039;Accept, Content-Type, Authorization, Authenticate, cartId, currency, X-Odoo-Currency&#039;;<\/pre>\n\n\n\n<p>This lets the browser and the server exchange cart, session and currency details without the browser blocking them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation Procedure<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisites<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A working Odoo instance with the <a href=\"https:\/\/store.webkul.com\/odoo-headless-e-commerce.html\" target=\"_blank\" rel=\"noopener\">Odoo Headless E-commerce<\/a> app installed. Its <a href=\"https:\/\/webkul.com\/blog\/webkul-user-guide-odoo-headless-e-commerce\/\">user guide<\/a> covers that step.<\/li>\n\n\n\n<li>A publicly reachable HTTPS Odoo URL, because the storefront calls Odoo over the network.<\/li>\n\n\n\n<li>Your Odoo client token from the Headless app settings.<\/li>\n\n\n\n<li>Node.js 20.9.0 or newer.<\/li>\n\n\n\n<li>A hosting environment where you can run the Next.js build.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Theme Installation<\/h3>\n\n\n\n<p>After you buy the theme from the Webkul Store, you get a zip file. Extract it, then move the folder wherever you want to install it.<\/p>\n\n\n\n<p>Now install the locked dependency tree.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">npm ci<\/pre>\n\n\n\n<p>Next, duplicate <code>.env.example<\/code>, rename the copy to <code>.env.local<\/code> and update the values below.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">API_URL=https:\/\/your-odoo-domain.com\/\nAPI_VERSION=v1\nCLIENT_TOKEN=your-odoo-client-token\nNEXT_PUBLIC_DEFAULT_STORE=en_US\nNEXT_PUBLIC_APP_URL=https:\/\/your-storefront-domain.com\nNEXT_IMAGE_REMOTE_PATTERNS=your-odoo-domain.com\nODOO_REVALIDATE_SECRET=your-shared-secret<\/pre>\n\n\n\n<p>You must set the first four values. The theme checks them at startup, so a missing value fails loudly instead of silently.<\/p>\n\n\n\n<p>Keep <code>CLIENT_TOKEN<\/code> on the server only. The theme never sends it to the browser.<\/p>\n\n\n\n<p>Then run the development server and open the storefront in your browser.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">npm run dev\n# now open http:\/\/localhost:3000<\/pre>\n\n\n\n<p>If your Odoo data loads on the home page, the connection works correctly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Storefront View<\/h2>\n\n\n\n<p>The Odoo Headless Momentum Theme looks as shown in the snapshots below. Now let us walk through what your customers actually see.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Home Page<\/h3>\n\n\n\n<p>The home page is made of 11 sections, and Odoo controls the content of each one.<\/p>\n\n\n\n<p>You get a hero slider, featured and explore carousels, a promotion banner, brand and collection grids, corner offers, a benefits row and a recently viewed strip.<\/p>\n\n\n\n<p>If Odoo returns no data for a section, that section simply does not render. As a result, a partly configured store still looks complete.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-1200x608.webp\" alt=\"Momentum theme Home Page\" class=\"wp-image-555015\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/featured-1200x608.webp\" alt=\"featured products on the Odoo Headless Momentum \" class=\"wp-image-555007\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/featured-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/featured-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/featured-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/featured-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/featured-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/featured.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Navigation and Search<\/h3>\n\n\n\n<p>The header is sticky and holds the logo, search, currency switcher, wishlist, account and cart.<\/p>\n\n\n\n<p>Hovering a top-level category opens a mega menu built from your Odoo category tree, three levels deep, with up to two image tiles.<\/p>\n\n\n\n<p>On mobile, the same tree slides in as a drawer. Search opens as a focused overlay and sends the shopper to the results page.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/menu-1-1200x608.webp\" alt=\"Mega menu navigation in the Odoo Headless Momentum Theme\" class=\"wp-image-555005\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/menu-1-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/menu-1-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/menu-1-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/menu-1-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/menu-1-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/menu-1.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Category Page<\/h3>\n\n\n\n<p>Category pages open with a hero band, a live product count and a sticky control bar.<\/p>\n\n\n\n<p>The grid shows two products per row on mobile and four on desktop. Pagination shows 12 products per page and stays in sync with the URL.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"614\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/category-1200x614.webp\" alt=\"Category listing page in the Odoo Headless Momentum Theme\" class=\"wp-image-554998\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/category-1200x614.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/category-300x153.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/category-250x128.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/category-768x393.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/category-1536x786.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/category.webp 1855w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Catalog Listing<\/h3>\n\n\n\n<p>The filter drawer offers a price range plus attribute filters that Odoo generates, such as brand, material or category.<\/p>\n\n\n\n<p>Filters only apply once the shopper taps View products. Each active filter then shows as a chip, and one click removes it.<\/p>\n\n\n\n<p>Sorting comes from Odoo too, and every field appears in both ascending and descending order.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/filter-1-1200x608.webp\" alt=\"Filter and sort drawer on the category listing page\" class=\"wp-image-555008\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/filter-1-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/filter-1-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/filter-1-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/filter-1-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/filter-1-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/filter-1.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Product Page<\/h3>\n\n\n\n<p>The product page pairs a gallery with a sticky buying panel on desktop.<\/p>\n\n\n\n<p>Variant options render as swatches, pill buttons, radios or a dropdown, depending on how Odoo defines them.<\/p>\n\n\n\n<p>The theme disables any value that has no matching variant. So once a shopper picks a colour, it reconciles the other attributes to a valid, in-stock combination and swaps the gallery image.<\/p>\n\n\n\n<p>Below the fold you get the full description and up to four related products.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/pdp-1-1200x608.webp\" alt=\"Product detail page in the Odoo Headless Momentum Theme\" class=\"wp-image-555004\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/pdp-1-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/pdp-1-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/pdp-1-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/pdp-1-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/pdp-1-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/pdp-1.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Cart Page<\/h3>\n\n\n\n<p>Adding a product slides open a cart drawer, so the shopper never loses their place.<\/p>\n\n\n\n<p>The full cart page adds a sticky order summary and a promo code field. Quantities update live, and totals come from Odoo whenever they are available.<\/p>\n\n\n\n<p>The cart itself always lives in Odoo. The storefront only keeps a mirrored copy, which it repairs automatically if the Odoo cart expires.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/cart-1-1200x608.webp\" alt=\"Cart page with order summary\" class=\"wp-image-555009\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/cart-1-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/cart-1-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/cart-1-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/cart-1-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/cart-1-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/cart-1.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Checkout Page<\/h3>\n\n\n\n<p>Checkout runs in five steps for guests and four for logged-in customers.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Information \u2014 name, email and phone, for guests only<\/li>\n\n\n\n<li>Shipping address<\/li>\n\n\n\n<li>Shipping method<\/li>\n\n\n\n<li>Payment method<\/li>\n\n\n\n<li>Review and place order<\/li>\n<\/ol>\n\n\n\n<p>The theme validates every step before it unlocks the next one, and Odoo has to confirm each step first.<\/p>\n\n\n\n<p>Logged-in customers pick from their saved address book, while the country and region dropdowns cascade automatically.<\/p>\n\n\n\n<p>Shipping and payment options come directly from Odoo, so whatever you configure in the Odoo is what the shopper sees.<\/p>\n\n\n\n<p>The draft is also saved in the browser. If a shopper closes the tab, they return to the same step.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/checkout-2-1200x608.webp\" alt=\"Multi-step checkout in the Odoo Headless Momentum Theme\" class=\"wp-image-555010\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/checkout-2-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/checkout-2-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/checkout-2-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/checkout-2-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/checkout-2-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/checkout-2.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Order Success Page<\/h3>\n\n\n\n<p>Once the customer places the order, the theme clears the cart everywhere and shows the order number.<\/p>\n\n\n\n<p>From there the customer can open the order detail or keep shopping.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/order-1-1200x608.webp\" alt=\" Order confirmation page with the order number\" class=\"wp-image-555011\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/order-1-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/order-1-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/order-1-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/order-1-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/order-1-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/order-1.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Login and Sign Up Page<\/h3>\n\n\n\n<p>Customers sign in with an email and password. If they had a guest cart, it merges into their account cart at login.<\/p>\n\n\n\n<p>New shoppers can register from the sign up page, and the theme logs them in straight after registration.<\/p>\n\n\n\n<p>The theme covers forgot password too. It asks Odoo to send the reset email, and Odoo&#8217;s own page then completes the reset.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/auth-1200x608.webp\" alt=\" Login and sign up page in the Odoo Headless Momentum Theme\" class=\"wp-image-555016\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/auth-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/auth-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/auth-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/auth-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/auth-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/auth.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">My Account<\/h3>\n\n\n\n<p>The account area holds a dashboard, order history, the address book and profile settings.<\/p>\n\n\n\n<p>Order detail includes a four-stage tracker \u2014 Order Placed, Processing, Shipped and Delivered \u2014 mapped from the Odoo order state. Cancelled orders show a dedicated banner instead.<\/p>\n\n\n\n<p>The theme keeps sessions in an HttpOnly cookie, so JavaScript can never read the customer token.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/dashboard-1200x608.webp\" alt=\"ustomer account dashboard in the Odoo Headless Momentum Theme\" class=\"wp-image-555012\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/dashboard-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/dashboard-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/dashboard-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/dashboard-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/dashboard-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/dashboard.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Wishlist and CMS Pages<\/h3>\n\n\n\n<p>A heart toggle sits on every product card and on the product page. The wishlist needs a login, and the header badge shows the live count.<\/p>\n\n\n\n<p>CMS pages such as About Us or your policy pages come from Odoo as well. The theme renders only an allow-list of safe HTML tags, so a stray script can never reach your shoppers.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"608\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/wishlist-1200x608.webp\" alt=\"Wishlist page showing saved products\" class=\"wp-image-555013\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/wishlist-1200x608.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/wishlist-300x152.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/wishlist-250x127.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/wishlist-768x389.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/wishlist-1536x778.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/wishlist.webp 1874w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Multi-Currency Support<\/h2>\n\n\n\n<p>The currency list and the default currency come from your Odoo store configuration.<\/p>\n\n\n\n<p>When a shopper switches currency, the theme re-fetches the home page, listings, product pages, cart and checkout. Consequently, every price on screen stays consistent.<\/p>\n\n\n\n<p>The theme saves that choice in a cookie, so even the first server-rendered page uses the right currency.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Theme Colours from the Odoo Admin Panel<\/h2>\n\n\n\n<p>This is the part store owners tend to like most.<\/p>\n\n\n\n<p>Odoo publishes a palette of 18 colour tokens. The theme applies them during server rendering, so there is no flash of the old colours.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Token<\/th><th>Controls<\/th><th>Token<\/th><th>Controls<\/th><\/tr><\/thead><tbody><tr><td>background<\/td><td>Page background<\/td><td>card<\/td><td>Card surfaces<\/td><\/tr><tr><td>foreground<\/td><td>Base text<\/td><td>surfaceSubtle<\/td><td>Image placeholders<\/td><\/tr><tr><td>primary<\/td><td>Headings, buttons, footer<\/td><td>surfaceStrong<\/td><td>Dark surfaces<\/td><\/tr><tr><td>primaryForeground<\/td><td>Text on primary<\/td><td>danger<\/td><td>Errors<\/td><\/tr><tr><td>secondary<\/td><td>Secondary accent<\/td><td>dangerSurface<\/td><td>Error backgrounds<\/td><\/tr><tr><td>accent<\/td><td>Highlight accent<\/td><td>success<\/td><td>Success states<\/td><\/tr><tr><td>accentBlush<\/td><td>Badge background<\/td><td>star<\/td><td>Ratings<\/td><\/tr><tr><td>muted<\/td><td>Secondary text<\/td><td>link<\/td><td>Links<\/td><\/tr><tr><td>border<\/td><td>Borders and dividers<\/td><td>hoverAccent<\/td><td>Hover states<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">The 18 colour tokens Odoo publishes to the storefront.<\/figcaption><\/figure>\n\n\n\n<p>The theme validates every value first. If someone types a broken colour in Odoo, it quietly falls back to the default instead of breaking the page.<\/p>\n\n\n\n<p>Besides colours, Odoo also drives the store name, logo, favicons, announcement text, copyright line and the default SEO title and description.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"605\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/odoo-1200x605.webp\" alt=\"Odoo back office colour settings applied to the Momentum storefront\" class=\"wp-image-555018\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/odoo-1200x605.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/odoo-300x151.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/odoo-250x126.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/odoo-768x387.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/odoo-1536x775.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/odoo.webp 1887w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Refreshing the Storefront Instantly<\/h2>\n\n\n\n<p>The theme caches Odoo data to stay fast. However, you sometimes need a change to appear right away.<\/p>\n\n\n\n<p>For that, Odoo can call the revalidation webhook. The next visitor then sees fresh content immediately.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">curl -X POST https:\/\/your-storefront-domain.com\/api\/revalidate \\\n  -H &quot;Content-Type: application\/json&quot; \\\n  -H &quot;x-revalidate-secret: your-shared-secret&quot; \\\n  -d &#039;{&quot;tags&quot;:&#091;&quot;homepage&quot;,&quot;store-config&quot;],&quot;path&quot;:&quot;\/&quot;}&#039;<\/pre>\n\n\n\n<p>Available tags include homepage, store-config, mega-menu, footer, cms-pages, catalog-products and catalog-categories.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SEO, Performance and Accessibility<\/h2>\n\n\n\n<p>Each route generates its own title, description, keywords, canonical URL and Open Graph tags from Odoo data.<\/p>\n\n\n\n<p>Product and category pages redirect non-canonical slugs, while search, cart, checkout and login pages carry a noindex tag.<\/p>\n\n\n\n<p>On the performance side, the theme uses server-side caching, lazy images, intent-based prefetching and deferred rendering for below-the-fold sections.<\/p>\n\n\n\n<p>Accessibility gets the same attention. Drawers trap focus, Escape closes overlays, touch targets stay at 44 px and every animation respects the reduced-motion setting.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Security in the Odoo Headless Momentum Theme<\/h2>\n\n\n\n<p>We built security into the theme from the start rather than bolting it on later.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The Odoo client token stays on the server, and browser traffic goes through a proxy route.<\/li>\n\n\n\n<li>The proxy forwards only to known Odoo endpoints, so anything else returns a 404.<\/li>\n\n\n\n<li>Mutating requests need a same-origin header, which blocks cross-site requests.<\/li>\n\n\n\n<li>Customer sessions live in HttpOnly, SameSite cookies.<\/li>\n\n\n\n<li>The theme sanitises CMS HTML and checks every link protocol.<\/li>\n\n\n\n<li>A build check blocks any deployment that would bundle the token into the worker.<\/li>\n\n\n\n<li>Profile changes require the current password.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Get the Odoo Headless Momentum Theme<\/h2>\n\n\n\n<p>Try the demo above, then grab the theme from the <a href=\"https:\/\/store.webkul.com\/odoo-headless-theme-momentum.html\">Webkul<\/a><a href=\"#MOMENTUM-STORE-URL\"> Store<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">NEED HELP?<\/h2>\n\n\n\n<p>Hope you find the guide helpful! Please feel free to share your feedback in the comments below.<\/p>\n\n\n\n<p>If you still have any issues or queries regarding the same, please raise a ticket at the <a href=\"https:\/\/webkul.uvdesk.com\/en\/customer\/create-ticket\/\" target=\"_blank\" rel=\"noreferrer noopener\">UV Desk<\/a>.<\/p>\n\n\n\n<p>I hope this helps. In case of any further queries, contact us at our <a href=\"mailto:support@webkul.com\" target=\"_blank\" rel=\"noreferrer noopener\">support mail<\/a>.<\/p>\n\n\n\n<p>Thanks for paying attention!!<\/p>\n\n\n\n<div class=\"version-info\">\n<p>Current Product Version &#8211; Odoo 19, 18<\/p>\n<p>Supported Framework Version &#8211; 1.0.0<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduction The Odoo Headless Momentum Theme is a ready-to-use storefront that runs on top of your existing Odoo backend. It talks to Odoo entirely over the Odoo Headless REST API. Odoo still runs your catalog, pricing, stock, customers, carts and orders. Momentum simply renders all of it in a faster, more modern front end. This <a href=\"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":758,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-554947","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Odoo Headless Momentum Theme: User Guide - Webkul Blog<\/title>\n<meta name=\"description\" content=\"Odoo Headless Momentum Theme is a Next.js storefront for Odoo. See its features, installation steps, theming options, security and live demo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Odoo Headless Momentum Theme: User Guide - Webkul Blog\" \/>\n<meta property=\"og:description\" content=\"Odoo Headless Momentum Theme is a Next.js storefront for Odoo. See its features, installation steps, theming options, security and live demo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-21T08:25:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-21T08:41:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-1200x608.webp\" \/>\n<meta name=\"author\" content=\"Prayas Jain\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prayas Jain\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/\"},\"author\":{\"name\":\"Prayas Jain\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d4f4f7aae507aa4b78df0080882e7d8\"},\"headline\":\"Odoo Headless Momentum Theme: User Guide\",\"datePublished\":\"2026-09-21T08:25:34+00:00\",\"dateModified\":\"2026-09-21T08:41:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/\"},\"wordCount\":1855,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/home-2-1200x608.webp\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/\",\"url\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/\",\"name\":\"Odoo Headless Momentum Theme: User Guide - Webkul Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/home-2-1200x608.webp\",\"datePublished\":\"2026-09-21T08:25:34+00:00\",\"dateModified\":\"2026-09-21T08:41:39+00:00\",\"description\":\"Odoo Headless Momentum Theme is a Next.js storefront for Odoo. See its features, installation steps, theming options, security and live demo.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdnblog.webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/home-2.webp\",\"contentUrl\":\"https:\\\/\\\/cdnblog.webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/home-2.webp\",\"width\":1874,\"height\":949},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/odoo-momentum-theme-documentation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/webkul.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Odoo Headless Momentum Theme: User Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/webkul.com\\\/blog\\\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/webkul.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\\\/\\\/webkul.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cdnblog.webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\\\/\\\/cdnblog.webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/webkul\\\/\",\"https:\\\/\\\/x.com\\\/webkul\",\"https:\\\/\\\/www.instagram.com\\\/webkul\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/webkul\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/webkul\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d4f4f7aae507aa4b78df0080882e7d8\",\"name\":\"Prayas Jain\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/edd772778412a2d77fff6f1c49e7be1cfe3623e892ac86a851b829c74275e7d3?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/edd772778412a2d77fff6f1c49e7be1cfe3623e892ac86a851b829c74275e7d3?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/edd772778412a2d77fff6f1c49e7be1cfe3623e892ac86a851b829c74275e7d3?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Prayas Jain\"},\"url\":\"https:\\\/\\\/webkul.com\\\/blog\\\/author\\\/prayas-ux322\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Odoo Headless Momentum Theme: User Guide - Webkul Blog","description":"Odoo Headless Momentum Theme is a Next.js storefront for Odoo. See its features, installation steps, theming options, security and live demo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/","og_locale":"en_US","og_type":"article","og_title":"Odoo Headless Momentum Theme: User Guide - Webkul Blog","og_description":"Odoo Headless Momentum Theme is a Next.js storefront for Odoo. See its features, installation steps, theming options, security and live demo.","og_url":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2026-09-21T08:25:34+00:00","article_modified_time":"2026-09-21T08:41:39+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-1200x608.webp","type":"","width":"","height":""}],"author":"Prayas Jain","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Prayas Jain","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/"},"author":{"name":"Prayas Jain","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/8d4f4f7aae507aa4b78df0080882e7d8"},"headline":"Odoo Headless Momentum Theme: User Guide","datePublished":"2026-09-21T08:25:34+00:00","dateModified":"2026-09-21T08:41:39+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/"},"wordCount":1855,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-1200x608.webp","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/","url":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/","name":"Odoo Headless Momentum Theme: User Guide - Webkul Blog","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2-1200x608.webp","datePublished":"2026-09-21T08:25:34+00:00","dateModified":"2026-09-21T08:41:39+00:00","description":"Odoo Headless Momentum Theme is a Next.js storefront for Odoo. See its features, installation steps, theming options, security and live demo.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2.webp","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2026\/08\/home-2.webp","width":1874,"height":949},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/odoo-momentum-theme-documentation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Odoo Headless Momentum Theme: User Guide"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/8d4f4f7aae507aa4b78df0080882e7d8","name":"Prayas Jain","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/edd772778412a2d77fff6f1c49e7be1cfe3623e892ac86a851b829c74275e7d3?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/edd772778412a2d77fff6f1c49e7be1cfe3623e892ac86a851b829c74275e7d3?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/edd772778412a2d77fff6f1c49e7be1cfe3623e892ac86a851b829c74275e7d3?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Prayas Jain"},"url":"https:\/\/webkul.com\/blog\/author\/prayas-ux322\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/554947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/758"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=554947"}],"version-history":[{"count":19,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/554947\/revisions"}],"predecessor-version":[{"id":558734,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/554947\/revisions\/558734"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=554947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=554947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=554947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}