The customer journey- from Rami discovering the brand online to the GM seeing the result on his dashboard.
WebsiteeCommerceMarketingSalesInventoryAccounting
Customer Journey
From First Glance to Loyal Customer
How a tobacco retail customer moves from discovering the brand to becoming a repeat buyer- across digital and physical touchpoints.
01
Awareness & Discovery
The customer first encounters the brand through social media, digital ads, influencer content, or word of mouth- sparking curiosity about the product range.
02
Exploration & Consideration
They visit the website or walk into a branch, browsing the premium tobacco catalog, comparing products, reading descriptions, and evaluating their options.
03
Decision & Purchase
The customer selects their products and completes a purchase- online through the eCommerce store or in person at one of the 13 branches across Lebanon.
04
Fulfillment & Delivery
The order is processed, packed, and delivered to the customer's door or made ready for branch pickup- tracked in real time from warehouse to doorstep.
05
Experience & Re-engagement
Post-purchase, the customer receives personalized follow-up communications- new arrivals, exclusive offers, and curated recommendations that match their preferences.
06
Loyalty & Advocacy
A satisfied customer becomes a repeat buyer and brand advocate- returning for their preferred products and referring friends and family to the brand.
Customer Journey Scenario
Scenario: The Premium Tobacco Enthusiast
A real-world customer story that reflects your core buyer- urban, digitally connected, and loyal to quality.
RK
Rami Khoury
Premium tobacco enthusiast- Beirut
Rami is a 34-year-old marketing executive living in Achrafieh. He leads a fast-paced lifestyle and has been a loyal tobacco consumer for years. He knows what he likes- specific blends, premium cuts, trusted brands- and he expects a seamless experience whether he is ordering from his phone at midnight or stopping by a branch on his way home from work. He has no patience for out-of-stock surprises or inconsistent pricing between the website and the store.
34 years oldAchrafieh, BeirutOnline shopperBrand loyalHigh frequency buyer
The challenge before Odoo
Rami visits the website, finds his preferred blend, and orders online. Two days later he gets a call- the item is out of stock. He walks into the Hamra branch to pick up a substitute, but the price is different from what he saw online. He does not come back. This is the customer you are losing today.
The promise with Odoo
With one unified system, Rami sees real-time stock on the website. The price he sees online is the exact price in every branch. His order is processed the moment he clicks confirm. He never gets that phone call. He comes back- every time.
Rami's Journey in Action
Every Step. One System.
Rami's journey from discovery to loyalty- and what Odoo does behind the scenes at every moment.
1
Brand Visibility & Digital Reach
Rami sees the brand on Instagram. A targeted campaign- built and sent from Odoo- reaches him based on his location and interests. He clicks. He lands on the website.
MarketingWebsite
2
Product Discovery & Browsing
Rami browses the premium tobacco catalog on the eCommerce store. Prices are live. Stock levels are real. Product descriptions and images reflect exactly what he will receive. No guessing.
WebsiteeCommerce
3
Online Purchase & Order Confirmation
Rami adds to cart and checks out. Instantly, a Sales Order is created in Odoo, an invoice is generated, stock is reserved, and the correct branch analytic account is tagged- all automatically, in seconds.
eCommerceSalesAccounting
4
Fulfillment & Delivery
The warehouse team scans Rami's items using the Odoo Barcode app. Stock is deducted. The delivery is dispatched. If stock drops below the reorder point, a Purchase Order to the supplier is drafted automatically- before anyone notices the shortage.
InventoryBarcodePurchase
5
Financial Recording & Branch Reporting
Rami's payment is recorded. The revenue is attributed to the correct branch analytic account. The CFO can filter the P&L by branch right now- not at month end. Every number is live, accurate, and traceable back to Rami's single order.
AccountingExpenses
6
Re-engagement & Loyalty
Two weeks later, Rami receives a personalized email- new arrival in his preferred category, sent automatically by Odoo Marketing. He clicks. He orders again. The cycle restarts. This time, he tells a friend.
MarketingeCommerce
Live Demo Steps
Exact Steps to Demonstrate on Odoo
Follow these steps in sequence. Each corresponds to a stage in Rami's story. Marketing uses Email Marketing, Campaigns, and Marketing Automation only- no Social Marketing (no subscription key) and no SMS (no credits).
Part 1- Marketing Campaign
1
Show a sent campaign and its statistics
Marketing → Email Marketing → Campaigns
▶
Click-by-click steps
1
Go to Marketing → Email Marketing- the campaigns list opens
2
Open a previously sent campaign- for example "New Arrivals- Premium Tobacco Range" with status Sent
3
Point to the Statistics bar at the top: Sent, Opened, Clicked, Replied- show actual numbers
4
Click Recipients tab- show the mailing list and how contacts are segmented by region or customer tag
5
Click Filters inside the campaign- show recipients filtered by Country: Lebanon and Tag: Tobacco Buyer- point out live recipient count
6
Click Email Content tab- show the designed email with product images, prices, and a Shop Now button linking to the website
What to Say
"This campaign reached Rami because he is tagged as a premium tobacco buyer in Beirut. We did not blast this to everyone- we sent it to the right people at the right time. And the open rate shows your customers are engaged."
Client Requirement #2
Reporting and filtering- show how campaign performance filters by region, customer tag, or segment to measure ROI per target audience.
2
Create a new campaign live
Marketing → Email Marketing → New
▶
1
Click New- a blank campaign form opens
2
Enter subject: "Exclusive: New KROZ arrivals- this week only"
3
Select Mailing List- choose "Beirut Customers"
4
Click Add a Filter- add Tag contains "Premium"- show recipient count updating live as you add the filter
5
Click Design tab- open the email builder, show drag-and-drop blocks: image, text, button, product block
6
Add a product block- select a tobacco product- it auto-populates with image and price from the Odoo backend
7
Click Send Test- send to your own email- show it arriving in a real inbox during the demo
8
Point to the Schedule option- show campaigns can be scheduled in advance, not just sent immediately
What to Say
"Your marketing team builds this campaign here- no external tool needed. Product images and prices come directly from Odoo. If the price changes tomorrow, the next campaign reflects it automatically."
Wow Moment
Show the live recipient count updating as you add and remove filters. Ask: "How many of your Beirut customers bought KROZ in the last 30 days?"- add that filter live and show the count. This is data they almost certainly do not have today.
3
Show Marketing Automation- post-purchase re-engagement
Marketing → Marketing Automation → New
▶
1
Go to Marketing → Marketing Automation
2
Open an existing automation- for example "Post-Purchase Follow Up- 14 Days"
3
Show the trigger: Customer confirmed an order- this fires automatically when any online order is placed
4
Show the workflow steps: Wait 14 days → Send Email "We miss you- your favourites are back in stock"
5
Point to the Filter on the automation- only customers who have not placed a second order in 14 days receive it
6
Show the Statistics tab- participants enrolled, emails sent, opened, clicked- all tracked automatically
7
Click New to show how easy it is to build a new automation- select trigger, set waiting period, choose action- done in under 2 minutes
What to Say
"Rami placed his order. 14 days from now- automatically- he will receive a personalized email. No one will remember to send it. No one needs to. Odoo does it. This is how you keep a customer without adding headcount."
Important Note
Social Marketing and SMS are NOT shown in this demo- Social Marketing requires an IAP subscription key and SMS requires purchased credits. Marketing Automation and Email Marketing fully cover the re-engagement story without these channels.
Part 2- Website & Product Discovery
4
Show the live website- brand identity reveal
Open website frontend in mobile-sized browser
▶
1
Open the website in a narrow browser window- approximately 390px wide to simulate Rami's phone experience
2
Scroll the homepage slowly- let the design speak: hero banner, brand colors, product highlights, promotional sections
3
Click Shop in the navigation- show the product catalog with categories and filters
4
Open a product page- show product name, description, price, variant selector (KROZ only visible), stock status, Add to Cart
5
Switch to full desktop width- show the website adapts to all screen sizes automatically
6
Switch to backend → Website module → Edit- show drag-and-drop builder- hover over blocks without making real changes, then Discard
What to Say
"This design was built specifically for your brand- your colors, your identity. It is not a template. And your team can update banners, promotions, and content here without a developer."
Wow Moment
Open the website on an actual phone and pass it around the room. Let the client touch and scroll their own brand on a real device. Nothing is more convincing than a physical interaction.
5
Show live price and stock sync between backend and website
Go to Website → eCommerce → Products- open one product
2
Show Attributes & Variants tab- KROZ variant published on website, PCS variant hidden
3
Change the price by $1 and save- then immediately switch to the website frontend and refresh the product page
4
Show the updated price live on the website- no delay, no sync needed, no second system
5
Revert the price back to the original value before continuing the demo
What to Say
"One change in the backend. Instant on the website. No duplicate entry. No sync job. No waiting. Your team updates once- every channel reflects it immediately."
Part 3- Rami Places His Order
6
Place a test order on the website
Website Frontend → Shop → Cart → Checkout
▶
1
On the product page select Amber flavor and KROZ packaging- quantity 2
2
Click Add to Cart- show the cart sidebar: product, quantity, price, subtotal
3
Click Checkout- fill customer details: Rami Khoury, Achrafieh, Beirut, Lebanon
4
Review order summary- select shipping method- click Confirm Order
5
Show the order confirmation page with order number- read it out loud, for example SO/2024/00042
6
Pause 2 full seconds of silence- then switch to the Odoo backend
Tip
The 2-second pause after confirming the order is intentional. Let the anticipation build before switching to the backend. The silence makes the backend reveal more dramatic.
7
Show the auto-created Sales Order
Sales → Orders → Orders
▶
1
Switch to backend- go to Sales → Orders → Orders
2
The order SO/2024/00042 is at the top- open it
3
Point to customer: Rami Khoury- auto-created as a contact from checkout
4
Point to product line: Amber KROZ × 2 with the correct price
5
Point to Analytic Account field- pause here- already set to the correct branch automatically
6
Show the Delivery (1) smart button- delivery order created automatically
7
Go to Inventory → Products- search Amber KROZ- show On Hand vs Reserved: 2 units reserved for Rami
What to Say
"No one created this. No one received an email and typed it in. Rami clicked confirm 30 seconds ago and this Sales Order exists- confirmed, tagged to the right branch, stock reserved, delivery ready. That is one connected system."
Client Requirement #1
Analytic account per branch- applied automatically on every online order the moment it is confirmed. No manual intervention from the finance team.
8
Create the invoice and show the journal entry
Sales Order → Create Invoice → Accounting
▶
1
From the Sales Order click Create Invoice- keep default option "Invoiceable lines"- click Create and View Invoice
2
Invoice opens- point to: customer, product lines, quantities, prices, taxes- all auto-filled from the Sales Order
3
Point to the Analytic Account column on the invoice line- branch already tagged on the revenue line
4
Click Confirm- invoice status changes to Posted
5
Click Journal Entry smart button- show the accounting entry: Accounts Receivable debited, Revenue credited, VAT credited
6
Point out: this invoice will appear in the P&L report immediately- we will prove this in Scenario C
What to Say
"The invoice is created. The accounting entry is posted. The branch is tagged. All from Rami clicking Buy on his phone. Zero manual steps between the customer order and the financial record."
Client Requirement #4
Financial reports reflect live data- this invoice and its journal entry are already in the P&L. Scenario C will show Maya filtering the P&L and seeing this exact transaction.
Part 4- Re-engagement Automation
9
Show Rami enrolled in the automation workflow
Marketing → Marketing Automation → open campaign → Participants
▶
1
Go to Marketing → Marketing Automation- open the post-purchase automation built in Step 3
2
Click Participants tab- show Rami Khoury now appears as an enrolled participant
3
Point to his status: In Progress- waiting for 14-day trigger
4
Show the workflow visualization- the journey Rami will go through: wait → email → if clicked → second email
What to Say
"Rami placed his order 5 minutes ago. He is already enrolled in the re-engagement workflow. In 14 days he will receive a personalized email automatically. No one on your team needs to remember Rami. Odoo does."
Closing Wow for Scenario A
"We started with a campaign that found Rami on his phone. We end with Rami enrolled in an automation that will bring him back. Everything in between- the order, the stock, the invoice, the branch P&L- happened automatically. That is the full circle of one connected system."
● Scenario B
The Branch That Never Runs Out
An inventory and purchasing story- how Odoo watches your stock so your team does not have to.
InventoryPurchaseBarcodeAccounting
Inventory Journey
From Empty Shelf to Perfect Stock- Automatically
How a tobacco retail business manages stock across 13 branches- from supplier order to shelf- without a single manual calculation.
01
Stock Monitoring
Odoo watches every product at every location continuously. The moment stock drops below the defined minimum, the system flags it- before anyone notices the shelf is getting low.
02
Automatic Reorder
A Purchase Order is drafted automatically to the configured supplier- the right product, the right quantity, the right supplier- without a warehouse manager needing to request it.
03
Supplier Confirmation
The purchasing team reviews and confirms the draft PO. The supplier receives the order. Expected delivery date is tracked inside Odoo from the moment of confirmation.
04
Goods Receipt
When stock arrives, the warehouse team scans each item with the Barcode app. Stock increases instantly. The supplier bill is auto-created from the PO and handed to the accountant for review- no manual data entry needed.
05
Physical Count & Audit
Periodically the team does a physical count. Odoo compares what they counted against what the system shows. Any discrepancy is adjusted and posted to accounting automatically.
06
Management Visibility
At any moment, management sees total stock value across all branches, which products are running low, what is on order, and what the inventory is worth- in one screen.
Inventory Scenario
Scenario: The Warehouse Manager Who Stopped Worrying
A real-world story from inside your operation- what stock management looks like before and after Odoo.
NF
Nour Farhat
Warehouse & Inventory Manager- Head Office
Nour is a 38-year-old operations manager responsible for stock across all 13 branches. She has been managing inventory in spreadsheets and WhatsApp groups for years. Every Monday morning starts the same way- collecting stock counts from 13 branch managers via phone calls, entering numbers into Excel, calculating reorder quantities manually, and emailing purchase requests to the purchasing team. By the time the PO is placed, the branch has sometimes already run out. She does not sleep well on Sundays.
38 years oldHead Office13 branches to manageMonday morning calls
The challenge before Odoo
On a Wednesday afternoon, the Jounieh branch calls Nour- they just ran out of Marlboro Gold KROZ. Their last 10 units sold that morning. They did not flag it earlier because they thought they had more in the back. Nour checks her Excel sheet- it still shows 15 units because last week's sales were not entered yet. She places an emergency order. The supplier takes 3 days. The branch loses 3 days of sales on their best-selling product. This happens every month. In at least 3 branches.
The promise with Odoo
The moment the 11th unit of Marlboro Gold KROZ is sold at Jounieh branch, Odoo checks the reorder rule. Minimum is 10. Stock is now 9. A draft Purchase Order is created automatically- right product, right supplier, right quantity. Nour reviews it on her phone, approves it, and the supplier gets the order within minutes. The branch does not run out. Nour does not get the Wednesday afternoon call. She sleeps on Sunday.
Nour's Journey in Action
Every Step. One System.
Nour's inventory management flow- from stock monitoring to supplier delivery- and what Odoo does at every moment.
1
Real-Time Stock Monitoring
Nour opens Odoo on Monday morning instead of making phone calls. She sees every branch, every product, every quantity- live. No collection needed. No Excel. The numbers are there because every sale, every receipt, every adjustment was recorded in real time all week.
Inventory
2
Reorder Rule Triggered
Stock of Marlboro Gold KROZ at Jounieh drops below 10. Odoo fires the reorder rule. A draft Purchase Order is created automatically- supplier: General Trading Co., quantity: 50 KROZ, delivery to: Jounieh Branch. Nour receives a notification. No one called her.
InventoryPurchase
3
Purchase Order Review & Confirmation
Nour opens the draft PO. She reviews the quantity- decides to order 80 instead of 50 because a promotion is coming next week. She updates the quantity, confirms the PO. The supplier receives the order by email automatically from Odoo. Expected delivery: 2 days.
Purchase
4
Goods Receipt via Barcode
Two days later, stock arrives at Jounieh. The branch staff opens the Barcode app, scans each KROZ as it comes off the truck. Stock at Jounieh updates in real time. Nour sees it from Head Office without a phone call. The supplier bill is auto-created from the PO, ready for the accountant.
BarcodePurchase
5
Physical Count & Adjustment
End of month, Nour runs a physical count for all branches. Staff count what is on the shelf. Odoo compares to system stock. Discrepancies are flagged. Nour reviews and approves adjustments. Each adjustment posts a journal entry to accounting- inventory variance account- automatically.
InventoryAccounting
6
Management Reporting
Nour opens the Inventory Valuation report. Total stock value across all 13 branches: $420,000. Broken down by product, by branch, by variant. She exports it, sends it to the GM. Monday morning call with the GM: 10 minutes instead of 2 hours.
InventoryAccounting
Live Demo Steps
Exact Steps to Demonstrate on Odoo
Follow these steps in sequence. Each step corresponds to a stage in Nour's story.
Part 1- Stock Monitoring & Reorder Rules
1
Show current stock levels across all products
Inventory → Products → Products
▶
Click-by-click steps
1
Go to Inventory → Products → Products- the product list opens
2
Switch to List view- show products with On Hand quantity column visible
3
Sort by On Hand ascending- show products with lowest stock at the top
4
Open a product- click the On Hand smart button- show stock per location broken down by branch
5
Click Forecasted smart button- show forecasted stock including pending POs and open sales orders
What to Say
"This is what Nour sees every Monday morning- instead of calling 13 branch managers. Every product. Every location. Every quantity. Right here. The Monday morning phone chain is replaced by this single screen."
2
Configure a reorder rule
Inventory → Replenishment → Reorder Rules → New
▶
1
Go to Inventory → Replenishment → Reorder Rules- click New
2
Set Product: Marlboro Gold- Amber KROZ
3
Set Location: Jounieh Branch / Stock
4
Set Route: Buy- this triggers a Purchase Order automatically
5
Set Min Qty: 10 and Max Qty: 80
6
Set Vendor: General Trading Co.- the supplier for this product
7
Save- point out: "This is a one-time setup. Odoo watches it forever from this moment."
What to Say
"Nour configures this once per product per branch. From that moment she does not think about this product again. Odoo watches it 24 hours a day, 7 days a week."
Tip
Show multiple reorder rules for the same product at different branches- Hamra min 20, smaller branch min 5. Each branch gets its own rule based on its own volume.
Part 2- Auto PO & Goods Receipt
3
Trigger replenishment and show auto-drafted PO
Inventory → Replenishment → Order All
▶
1
Go to Inventory → Replenishment- show products below minimum quantity highlighted with a warning
2
Click Order Once next to the flagged product- or Order All to process all at once
3
Go to Purchase → Orders → Purchase Orders- show the auto-created draft PO at the top
4
Open the PO- show supplier, product, quantity, expected delivery date, unit price from pricelist
5
Change quantity from 70 to 80- show Nour can override before confirming
6
Click Confirm Order- status changes to Purchase Order
7
Click Send by Email- show the PO email sent to the supplier automatically from Odoo
Wow Moment
Show the supplier email preview- a professional PO document with company logo, product details, quantities, delivery address. Ask: "Does your current system send this to your supplier automatically?"
4
Receive goods with barcode- show partial receipt
Barcode App → Receipts → Scan & Validate
▶
1
Open the Barcode app- tap Receipts
2
Open the pending receipt- show expected products and quantities pre-loaded from the PO
3
Scan the KROZ barcode multiple times- counter increases with each scan
4
Receive only 60 of 80- tap Validate- Odoo asks: Create Backorder for remaining 20?
5
Select Create Backorder- show a new receipt created automatically for the remaining 20
6
Check Inventory → Jounieh Branch stock- show the 60 units now in stock
What to Say
"The supplier delivered 60 of 80. Odoo handles this automatically- partial receipt, backorder for the remaining 20, stock updated immediately. Nour sees this from Head Office without a phone call from the branch."
Part 3- Valuation & Reporting
5
Show inventory valuation and management reports
Inventory → Reporting → Inventory Valuation
▶
1
Go to Inventory → Reporting → Inventory Valuation
2
Show each product variant with quantity on hand, unit cost, total value
3
Group by Location- show stock value per branch: Hamra $X, Jounieh $Y, Achrafieh $Z
4
Show total stock value at the bottom- the company's total inventory asset
5
Use At Date filter- enter last week- show how stock value has changed since then
6
Go to Inventory → Reporting → Product Moves- filter by Marlboro Gold KROZ- show complete movement history
Wow Moment
Ask the room: "If your auditor asked right now- what was Jounieh's stock value on the 15th of last month- how long would that take to answer?" Then show At Date in Odoo. Answer in 10 seconds.
● Scenario C
The Campaign That Brought Them Back
A marketing story — how Odoo turns your customer data into a targeted promotion, tracks every open and click, and closes the loop when the customer purchases.
MarketingeCommerceSalesAccounting
Marketing Journey
From Dormant Customer to Active Buyer — Automatically
How a tobacco retail business uses Odoo to send the right offer to the right customer at the right moment — and tracks every result from open to purchase.
01
Segment Your Audience
Filter your customer database by purchase history, product category, location, or last order date. Target only the customers most likely to respond — not everyone on your list.
02
Create the Promotion
Build a discount or promotion code inside Odoo — fixed amount, percentage, or free product. Set the validity period, usage limits, and which products it applies to. One screen, fully controlled.
03
Design & Send the Campaign
Build the email in Odoo's drag-and-drop editor. Insert the promotion code. Preview before sending. Schedule it or send immediately. The campaign reaches your customers' inboxes directly from Odoo.
04
Track Performance Live
The moment emails land, Odoo starts tracking — who received, who opened, who clicked, who bounced. Statistics update in real time. No waiting for a weekly report from an external tool.
05
Customer Purchases
The customer clicks the link in the email, lands on the website, applies the promotion code at checkout, and completes the order. Odoo records the sale, the discount, and the revenue — all linked back to the campaign.
06
Measure ROI
The campaign dashboard shows total emails sent, orders generated, revenue attributed, and discount cost. Management sees the full return on investment of every campaign — in one screen.
Scenario: The Marketing Manager Who Finally Had Data
A real-world story from inside your marketing team — what running a promotion looks like before and after Odoo.
LH
Layla Hajj
Marketing & Sales Manager — Head Office
Layla is a 31-year-old marketing manager who handles promotions, campaigns, and customer communications for all 13 branches. She is creative, energetic, and completely flying blind. She sends campaigns through a third-party email tool, but has no idea which customers actually bought something after receiving them. She creates discount codes on paper or in WhatsApp messages to branch managers, with no way to track how many times a code was used or how much revenue it generated. Every campaign feels like shouting into the dark. She knows her customers are out there. She just cannot reach the right ones at the right time.
31 years oldNo campaign attributionDiscount codes on WhatsAppFlying blind on ROI
The challenge before Odoo
Layla wants to re-engage customers who bought premium tobacco products last month but have not ordered again. She has a list of emails in a spreadsheet — but she does not know which ones bought which products. She sends a general 10% discount to the entire list. Half the recipients never bought tobacco. The discount code is shared on WhatsApp and used by people who were not the target. By month end, she has spent the promotion budget but has no idea how many sales it actually generated. The GM asks for the ROI. She has no answer.
The promise with Odoo
Layla opens Odoo, filters customers who bought from the Premium Tobacco category in the last 60 days but have not ordered in the last 30. She gets a precise list of 147 contacts. She creates a 10% discount code valid for 7 days, limited to 1 use per customer, applicable only to the Premium category. She designs the email, inserts the code, and sends. Three days later she sees 38 opens, 22 clicks, 14 orders, $2,800 in revenue, and $280 in discount cost. ROI: 900%. She sends the GM the screenshot before he asks.
Layla's Journey in Action
Every Step. One System.
Layla's full marketing cycle — from audience segmentation to ROI report — and what Odoo does at every step.
1
Audience Segmentation
Layla filters contacts who purchased from the Premium Tobacco category in the last 60 days but have not ordered in the last 30. Odoo returns 147 contacts from across all 13 branches. No spreadsheet. No manual cross-referencing. The data is live because every order was recorded in Odoo.
MarketingSales
2
Promotion Code Creation
Layla creates a promotion code: PREMIUM10 — 10% discount on Premium Tobacco category, valid for 7 days, maximum 1 use per customer, maximum 200 total uses. The code is linked to specific products. No one can apply it to other categories. No one can use it twice.
eCommerceSales
3
Campaign Design & Send
Layla designs the email in Odoo — brand colors, product images, the promotion code prominently displayed, a Shop Now button linking directly to the Premium category on the website. She previews it, sends a test to herself, then clicks Send to the 147 contacts. Done in 15 minutes.
Marketing
4
Live Statistics Tracking
Within hours, Odoo shows: 38 emails opened, 22 clicks on the Shop Now button, 3 bounces. Layla sees which contacts opened and which did not. She can send a follow-up to the 109 who did not open — different subject line, same offer. All from the same screen.
Marketing
5
Customer Purchase with Promo Code
A customer clicks the email link, lands on the Premium Tobacco page, adds Amber KROZ to cart, enters PREMIUM10 at checkout. The 10% discount applies automatically. The order is confirmed. Odoo records the sale, the discount amount, the campaign attribution, and the revenue — all linked together.
eCommerceSalesAccounting
6
ROI Reporting
Campaign result: 147 sent, 38 opened (26%), 22 clicked (15%), 14 orders, $2,800 revenue, $280 discount cost. ROI: 900%. Layla exports the report and sends it to the GM before he asks. For the first time in her career, she has proof that her campaign worked.
MarketingSales
Live Demo Steps
Exact Steps to Demonstrate on Odoo
Follow these steps in sequence. Uses Email Marketing and Campaigns only — no Social Marketing (no subscription key) and no SMS (no credits required).
Part 1 — Audience Segmentation
1
Segment customers who bought Premium Tobacco but went quiet
Add second rule: Sales Order / Date / is between / [60 days ago] and [30 days ago]
5
Watch the recipient count update live as each filter is applied — show the narrowing from all contacts to the qualified segment
6
Point to the final count — "These are the exact customers we want to reach — no one else"
What to Say
"Layla is not guessing who to send this to. She is using her own purchase history to find customers who love this category but have gone quiet. This is the difference between marketing and spam."
Wow Moment
Add and remove filters live while the audience count changes in real time. Ask: "How long does it take your team today to build a list like this?" Then show it took 60 seconds in Odoo.
Part 2 — Promotion Code
2
Create a discount/promotion code
eCommerce → Products → Discount & Loyalty → New
▶
1
Go to eCommerce → Products → Discount & Loyalty — or Sales → Products → Discount & Loyalty
Set Discount applicability: Specific Products — select Premium Tobacco category
7
Set Validity dates: today to 7 days from now
8
Set Max usage: 1 per customer and 200 total — the code cannot be abused
9
Click Save — the promotion code is live immediately on the eCommerce store
What to Say
"This discount code cannot be shared and abused. It is valid for 7 days, for 1 use per customer, and only applies to the Premium category. Layla controls exactly what she is offering and to whom."
Key Point
The promotion code is created once in Odoo and works automatically at checkout on the website. No branch manager needs to manually apply it. No cashier can apply it to the wrong products. Fully controlled from one screen.
Part 3 — Design & Send the Campaign
3
Design the email and show statistics before sending
Marketing → Email Marketing → Design → Send Test
▶
1
Return to the campaign form created in Step 1 — click Design tab
2
Show the email builder — drag-and-drop blocks: banner image, text, product block, button, footer
3
Add a product block — select a Premium Tobacco product — it auto-fills with image and price from backend
4
Add a text block showing the promo code prominently: "Use code PREMIUM10 for 10% off"
5
Add a Button — text: "Shop Now" — link to the Premium Tobacco category page on the website
6
Click Preview — show the email as the customer will see it on desktop and mobile
7
Click Send Test — send to your own email — open your inbox and show the email arriving live
8
Point to the Statistics section at the top of the campaign — currently shows 0 sent, 0 opened, 0 clicked — about to change
What to Say
"Before we send, look at the statistics — all zeros. In a few seconds after we click Send, Odoo will start filling these in automatically. Every open, every click, every bounce — tracked in real time without any external analytics tool."
4
Send the campaign and show live statistics updating
Email Marketing → Send → Statistics tab
▶
1
Click Send — confirm the send to the filtered recipient list
2
Campaign status changes to Sent — Odoo begins processing the send queue
3
Click Refresh every few seconds — show the Sent count increasing as emails are dispatched
4
If using a pre-sent demo campaign — open it and show existing statistics: Sent X, Opened Y, Clicked Z
5
Click Opened stat — show the list of contacts who opened — name, email, open date and time
6
Click Clicked stat — show which contacts clicked the Shop Now button
7
Click Not Opened — show the list of contacts who did not open — point out: "We can send a follow-up campaign to only these people with a different subject line"
What to Say
"Layla does not need to wait for a weekly analytics report. She sees who opened, who clicked, and who ignored — right here, right now. And she can act on it immediately."
Wow Moment
Click into the "Not Opened" list and say: "These 109 people did not open the first email. In your current system, what happens to them? In Odoo, Layla sends a second campaign to exactly this list — different subject, same offer — in 3 clicks."
Part 4 — Customer Purchase with Promo Code
5
Customer clicks email, applies promo code, and purchases
Website Frontend → Shop → Checkout → Apply Code
▶
1
Open the test email in your inbox — click the Shop Now button — it opens the website Premium Tobacco page
2
Add a Premium Tobacco product to cart — click Checkout
3
On the checkout page find the Discount Code field — enter PREMIUM10 and click Apply
4
Show the 10% discount applied automatically — the order total reduces, a discount line appears on the summary
5
Try applying the code to a non-Premium product — show that it does not apply — code is restricted to the correct category
6
Complete the checkout — confirm the order
7
Switch to the Odoo backend — go to Sales → Orders — open the new order — show discount line visible on the order, campaign attribution recorded
What to Say
"The customer applied the code. The discount was correct. The order is in Odoo. The discount amount is recorded. Everything is traceable — from the campaign Layla sent, to this order, to the revenue and the discount cost."
Part 5 — ROI Reporting
6
Show campaign statistics after purchase — full ROI picture
Return to Marketing → Email Marketing — open the campaign
2
Show the updated statistics: Sent, Opened, Clicked — all updated since we placed the order
3
Go to eCommerce → Products → Discount & Loyalty — open the PREMIUM10 program
4
Show the usage count — it has increased by 1 — the code was used exactly once as configured
5
Go to Sales → Reporting → Sales Analysis — filter by Promotion Code: PREMIUM10 — show orders attributed to this campaign
6
Show total revenue from campaign orders vs total discount given — the ROI calculation is immediate
7
Click Export — show Layla can send this report to the GM in one click
What to Say
"Layla sent the campaign this morning. She is looking at the ROI right now. Revenue generated, discount cost, net margin improvement. For the first time in her career she can prove that her marketing works — with numbers, not feelings."
Closing Wow for Scenario C
Ask the room: "In your current process — from sending a campaign to knowing how much revenue it generated — how long does that take?" Pause. Then show the Sales Analysis filter result. "In Odoo: the moment the order is placed, the answer is here."
Client Requirement #2
Reporting and filtering — campaign-attributed orders are fully filterable by promotion code, date range, product category, and customer segment. ROI is measurable in real time without any external reporting tool.
● Scenario D
The Month-End That Took 20 Minutes
An accounting story- how Odoo turns a week-long month-end process into a same-day close.
AccountingExpensesSalesPurchase
Accounting Journey
From Transaction to Financial Statement- Without the Wait
How every sale, purchase, expense, and stock movement flows automatically into accurate, audit-ready financial statements- in real time, across all 13 branches.
01
Transaction Recording
Every sale, purchase, expense, and inventory movement posts a journal entry automatically. The accountant does not enter these manually- Odoo posts them the moment the operation is validated.
02
Branch Attribution
Every transaction is tagged to the correct branch analytic account automatically- whether it came from eCommerce, POS, a purchase order, or an employee expense. No manual allocation at month-end.
03
Accounts Receivable
Customer invoices are created from confirmed sales orders- one click. Payments are registered and matched to invoices automatically. Outstanding balances are visible in real time without a reconciliation exercise.
04
Accounts Payable
Supplier bills are created from confirmed purchase orders- quantities and prices already matched. Three-way matching- PO, receipt, bill- ensures the company only pays for what was actually received.
05
Financial Reporting
P&L, Balance Sheet, Trial Balance, and Cash Flow reports are available at any moment- by branch, by period, by account. No waiting for the month to close. The reports are always current.
Accounting Scenario
Scenario: The Accountant Who Got Her Weekends Back
A story from inside your finance team- what month-end and daily accounting look like before and after Odoo.
MA
Maya Abboud
Chief Accountant- Head Office
Maya is a 42-year-old CPA who has been managing the accounts of this company for 8 years. She is meticulous, experienced, and deeply frustrated. Every month-end takes 10 days- collecting sales data from branches, manually matching receipts to purchase orders, chasing managers for expense reports, re-entering stock adjustments that came in on paper. She spends the first two weeks of every month closing the previous month. By the time she has the P&L ready for the GM, the information is two weeks old. She has never once been able to tell the GM how a specific branch performed last week. The answer is always: "I will have it by next Friday."
42 years oldCPA- 8 years10-day month-end closeWeekends lost to reconciliation
The challenge before Odoo
It is the 3rd of the month. The GM asks Maya: "How did we do in October?" Maya says: "I will have it by the 14th." The GM asks: "How is Hamra branch performing?" Maya says: "I cannot tell you by branch- our system does not track that way." The GM asks: "Can we see which products are most profitable?" Maya says: "I would need to cross-reference the sales file with the cost file- give me a week." The GM stops asking. He makes decisions without financial data. Some of those decisions cost money.
The promise with Odoo
It is the 3rd of the month. The GM asks Maya: "How did we do in October?" Maya opens Odoo, sets the date filter to October, and shows him the P&L in 10 seconds. "How is Hamra branch performing?"- filters by Hamra analytic- 5 seconds. "Which products are most profitable?"- Sales Analysis by product margin- 15 seconds. The GM has never had this before. Maya has never felt this in control before. Her month-end close now takes one day, not ten.
Maya's Journey in Action
Every Entry. One System. Always Current.
Maya's accounting cycle- from daily transaction recording to financial close- and what Odoo does automatically at every step.
1
Automatic Journal Entries
Every sale confirmed by the sales team posts a journal entry automatically- Accounts Receivable debited, Revenue credited, Tax credited. Maya does not enter these. They exist the moment the sales order is confirmed. She reviews, not re-enters.
AccountingSales
2
Supplier Bills & Three-Way Matching
When a supplier invoice arrives, Maya opens the linked PO in Odoo. The bill is pre-filled with quantities and prices already matched to what was received. She confirms, posts. Three-way matching- PO, receipt, bill- done automatically. No manual comparison.
PurchaseAccounting
3
Branch Expense Processing
Branch managers submit expenses through Odoo- utility bills, petty cash, maintenance costs- each tagged to their branch analytic account. Maya reviews and approves in the system. Journal entries post on approval. No paper. No email. No re-entry.
ExpensesAccounting
4
Price Control & Access Rights
Maya sets the prices. The sales team cannot change them. This is enforced by Odoo access rights- not by trust or policy. When a salesperson tries to edit a price, the field is locked. Maya receives no surprise discounts at month-end. The margin she planned is the margin she gets.
SalesAccounting
5
Branch P&L in Real Time
Maya opens the Profit & Loss report. She filters by Hamra Branch analytic account. Revenue: $42,000. COGS: $28,000. Operating expenses: $6,500. Gross margin: 33%. She did not compile this- Odoo did. It took 8 seconds. She sends it to the GM. It is the 3rd of the month.
Accounting
Live Demo Steps
Exact Steps to Demonstrate on Odoo
Follow these steps in sequence. Have the accountant or finance person in the room for this scenario.
Part 1- Daily Transactions
1
Show automatic journal entries from sales
Accounting → Accounting → Journal Entries
▶
1
Go to Accounting → Accounting → Journal Entries
2
Filter by Journal: Customer Invoices- show the list of auto-posted entries
3
Open the journal entry from Rami's invoice- show the auto-posted lines
4
Point to each line: Accounts Receivable debited, Revenue credited, VAT credited
5
Point to Analytic Distribution column- branch analytic already tagged on the revenue line
6
Click Source Document link- navigates back to the original invoice- full traceability in one click
What to Say
"Maya did not create any of these entries. Every sale, every delivery, every stock adjustment posted its own entry automatically. Maya's job is to review and approve- not to re-enter what already happened."
Client Requirement #4
Financial reports reflect live data- these journal entries post the moment each operation is validated. The P&L is always current. There is no batch upload, no end-of-day sync.
2
Process a supplier bill- three-way matching
Purchase → Orders → Purchase Orders → Create Bill
▶
1
Go to Purchase → Orders → Purchase Orders- open the confirmed PO from Scenario B
2
Show the smart buttons at the top: Receipts (1), Bills (0)- receipt exists, bill does not yet
3
Click Create Bill- vendor bill opens pre-filled from the PO
4
Show: supplier, product lines, quantities matched to what was received (60, not 80- partial)
5
Set Bill Date and Bill Reference- click Confirm- journal entry posted automatically
6
Show the Aged Payable report- this bill now appears with its due date
Wow Moment
Show that Odoo only allows billing for 60 units even though the PO was for 80- because only 60 were received. The system prevents over-billing automatically. Ask: "Does your current process catch this?"
Part 2- Branch Expenses & Price Control
3
Approve branch expenses and view journal entries
Expenses → Expense Reports → Approve → Post
▶
1
Go to Expenses → Expense Reports- show submitted reports from multiple branches
2
Open the Hamra Branch utility expense- show category, amount, analytic account: Hamra Branch, receipt attached
Show that Hamra Branch P&L now includes this expense- it flowed automatically on approval
What to Say
"Every branch manager submits expenses in Odoo. Maya approves with one click. The journal entry is there. The branch P&L is updated. No spreadsheet. No email chain. No re-entry."
Client Requirement #1
Analytic accounts per branch- expenses attributed per branch through the approval workflow, automatically enriching the branch-level P&L without any month-end reallocation.
4
Show price lock- two user roles live
Two browser windows- Sales User vs Accountant
▶
1
Window 1- logged in as Sales User- go to a product, try to edit the sales price- field is locked
2
Window 1- try from a sales order line- click unit price- also locked
3
Window 2- logged in as Maya (Accountant)- same product- price field is fully editable
4
Show both windows side by side- same product, same field, different access
5
Go to Settings → Users- show the access rights configuration for each role
Wow Moment
Show both windows side by side on a large screen. One locked, one open, same product. Do not describe it- show it simultaneously. This is the most powerful visual demonstration of this requirement.
Client Requirement #3
Price cannot be changed by users outside the Accountant group- demonstrated live with two simultaneous logins showing the exact access rights that enforce this.
Part 3- Financial Reporting
5
Show P&L by branch with comparison
Accounting → Reporting → Profit and Loss
▶
1
Go to Accounting → Reporting → Profit and Loss
2
Show the full company P&L first- total revenue, COGS, gross profit, net profit
3
Click Filters → Analytic: Hamra Branch- P&L filters to Hamra only in under 3 seconds
4
Point to revenue line- includes Rami's invoice from the main demo
5
Point to expenses line- includes the utility expense approved 5 minutes ago
6
Enable Comparison → Previous Period- show this month vs last month side by side
7
Click Export → PDF- clean formatted report ready for the GM or board
Wow Moment
Enable the comparison view and ask the GM in the room: "Which branch do you want to compare?" Filter to their answer live. This is the moment they understand what real-time financial data feels like for the first time.
Client Requirements #1, #2 & #4
Branch analytic ✓- report filtering by branch, period, comparison ✓- live data including all transactions from today's demo ✓