Project Name
100% Layout Consistency Across Odoo Blog Posts via Auto-Template
![]()
Our client is a mid-market organisation operating in the media and content marketing sector, based in Belgium. Their sales team closes deals directly inside Odoo, and a core part of each deal workflow involves publishing a corresponding blog post on the Odoo-powered website. The marketing team had invested significant effort designing a structured, on-brand blog layout through the Odoo Website Studio editor.
With multiple posts being generated from sales orders every week, layout inconsistency across published pages was becoming a measurable quality problem, and the manual reformatting required before each post could be published was creating a bottleneck on high-volume campaign weeks.
A gap in Odoo's Studio customization architecture meant programmatically created blog posts started without the approved layout, forcing manual rework before publication.
- No Native Template Propagation: Odoo stores Studio customizations at the individual post level, with no native mechanism to propagate a designed layout to newly created blog records.
- Sales-Triggered Post Creation Bypasses Studio: Blog posts created from sales orders bypass the Website Studio editor, leaving new posts with an empty content field and no applied layout.
- Manual Reformatting at Scale: Marketing teams spent 30–45 minutes formatting each new blog, creating bottlenecks during high-volume campaign periods.
- Risk of Altering Existing Published Content: The solution had to ensure 40+ historical posts remained completely untouched, preserving previously published campaign content.
- No Marketer-Controlled Template Designation: Marketers needed to update the master layout themselves without developer involvement or waiting for a development release.
- Studio Customization Architecture Opacity: The team initially lacked clarity on how Studio stored per-post customizations, requiring a technical audit before designing the right automation approach.
Ksolves, an AI-first Odoo development company, extended the Odoo blog.post model with a minimal, upgrade-safe customization that copies a designated master post's layout to new posts created through sales orders. The solution works only at creation time, leaving all existing posts untouched. A simple checkbox lets marketers manage the master template without developer intervention.
- is_default_template Boolean Field: A custom field lets marketers designate one blog post as the master layout. The system looks up this flag during post creation without adding noticeable latency.
- Content Field Copy at Creation: The blog.post.content field containing the Website Studio layout is copied verbatim to each new post, preserving the exact structure without modifying the QWeb template.
- Sales Order Action Integration: The content-copy logic is integrated directly into the existing sales order action that creates blog posts, requiring no new UI flows, scheduled jobs, or parallel processes.
- Zero Impact on Existing Posts: The logic runs only when a new record is created. No batch updates, migrations, or scheduled actions modify existing posts, keeping all 40+ historical posts unchanged.
- Studio Compatibility Preserved: The solution uses standard ORM methods to write to the content field rather than overriding QWeb templates. Marketers can continue editing individual posts in Website Studio independently.
Technology Stack
| Category | Technology |
|---|---|
| ERP Platform | Odoo 18 |
| Website Builder | Odoo Website Studio |
| Templating Engine | Odoo QWeb |
| Data Storage | blog.post.content field |
| Custom Extension | Odoo Python (ORM) |
From 30–45 minutes of manual reformatting per post and inconsistent layouts to 100% layout consistency on new posts with zero historical content affected.
- 100% Layout Consistency on New Posts: Every sales-order-created blog post now automatically inherits the approved master layout, eliminating manual formatting and ensuring consistent brand presentation.
- 30–45 Minutes of Rework Eliminated Per Post: Layout preparation is reduced to zero, allowing the marketing team to focus directly on content creation and editing.
- Zero Historical Posts Modified: The creation-time trigger left all 40+ existing published posts untouched, preserving the complete historical campaign archive.
- Template Changes Self-Service in Under 2 Minutes: Marketers can designate a new master layout with a single checkbox, eliminating developer tickets, deployment cycles, and dependency on development schedules.
The challenge was not a design issue but a gap in how Odoo’s Website Studio handles programmatically created posts. Ksolves addressed it with a minimal, creation-time customization that identifies the master post and copies its layout to every new sales-order-driven blog post. Existing content remains untouched, while marketers can change the master layout themselves with a single checkbox. The result: consistent branding by default, zero manual formatting, and a simpler path from deal closure to content publication.
Does Your Odoo Blog Layout Disappear Every Time a Post Is Created From a Sales Order?