عربي
Industries

E-Commerce

01

From the ad to net collection

In e-commerce, receiving an order is not the same as making a sale.

An order may come from the store or one of the marketplaces. It then needs review, confirmation, stock reservation, picking, and shipping. It might be delivered on the first attempt, or postponed, refused by the customer, or sent back for an exchange.

Meanwhile, the customer may pay online, transfer the money directly, or the courier remits the collected amount in a later settlement.

That's why online operations cannot be measured by order count alone. What matters is knowing what happened to each order: what left the warehouse, what was delivered, and what was actually collected.

02

The catalog is where operations start

Before the ads and the orders, every product needs a clear definition in the system:

Product and model.
Color, size, and every other variant attribute.
A distinct code and barcode for each variant.
Photos, descriptions, and listing content.
Selling price and promotions.
Available stock for every piece.
The channels the product is listed on.

A customer never buys a generic product. They buy a specific color in a specific size. Get a variant mapping wrong and the damage doesn't stop at the website; it flows into picking, inventory, costing, and returns.

Product data is managed in one place, then linked to the store and each platform, keeping every channel's matching code.

03

Where did the order come from?

Orders enter the system from the online store, the marketplaces, or the customer service team, carrying their original data:

The channel it came from.
The campaign or traffic source, when available.
The order number on the platform.
Customer details and delivery address.
Products, variants, and quantities.
Payment method.
Discounts and shipping cost.

No one re-keys the order, and the sales order in the system never drifts apart from the original order on the store.

Orders taken manually over the phone or WhatsApp enter the same cycle too, without getting mixed into store orders or losing their source.

Inside Odoo
Orders grouped by sales channel in Odoo
Orders grouped by source (online store, Amazon, Instagram, WhatsApp, and branch sales) with each channel's count and total.
04

Confirmation before picking

Not every incoming order is ready to ship.

Each order first passes through the confirmation team, which reviews:

Customer name and phone number.
Governorate, area, and address.
Products, sizes, and quantities.
Order value and shipping cost.
Payment method.
Any delivery notes.

It then moves to one clear status:

New. Awaiting confirmation. Confirmed. Details need correction. Postponed at the customer's request. Canceled, with the reason recorded.

This stage stops orders going out with an incomplete address or a wrong number, and lets you measure the gap between orders received and orders that actually became shipments.

05

Stock reservation

Once an order is confirmed, the system reserves the quantities from the right warehouse.

If the company runs more than one warehouse, the fulfillment source can be set by:

Item availability.
The customer's location.
The channel the order came from.
Warehouse priority.
The company's order-routing policy.

Inventory is never one unexplained number: you see available, reserved, in transit, and incoming, for every variant, in every warehouse.

And if the brand manufactures through third parties, finished-product needs link to supply or subcontracting orders and inspection: pieces become sellable only after they're received and pass quality.

06

Barcode picking

Ready orders can be grouped into picking batches instead of opening each order on its own.

Inside the warehouse:

  1. 01 Shipping labels are printed for the batch.
  2. 02 The picker scans the label number, which opens the right order.
  3. 03 They scan the barcode on every piece.
  4. 04 The system checks the picked pieces against what the customer ordered.
  5. 05 The order won't close if a color, size, or quantity is wrong.
  6. 06 Once picking is complete, the order is ready to hand to the courier.

The order number, the shipping label, and the pieces inside the parcel are tied together, instead of relying on visual checks and memory.

Inside Odoo
Barcode order-picking screen in Odoo
Barcode picking: every item with its photo and a pick counter. The shipment validates only against what was actually scanned.
07

Creating the shipment

Once the order is approved, the system creates the shipment with the courier and gets back:

The shipping label (AWB) number.
The print-ready label file.
The tracking number.
The collection amount.
The shipment type.
Customer details and address.

Shipments can be created automatically on order confirmation, manually for a single order, or for a batch of orders at once.

And once sent, the operation is closed, so the same order can never get two shipments by mistake.

Inside Odoo
Bosta shipping label printed from Odoo through the integration
The courier's shipping label prints straight from Odoo through the integration: customer details, COD amount, and tracking barcode included. No logging into the courier's portal, no manual entry.
08

Tracking order status

Courier statuses flow back to the order in the system, so sales and customer service never have to log into each courier's account to hunt for an order.

A shipment typically passes through statuses like:

Ready for pickup. Picked up by the courier. In transit. Out for delivery. Delivered. Postponed for another attempt. Customer unreachable. Refused by the customer. Returned to the company.

Updates can arrive the moment they happen via webhook where the courier supports it, or by polling statuses periodically for shipments still in progress.

Final statuses stay clear-cut, and any later change is handled manually when the courier doesn't send updates after delivery.

Inside Odoo
Delivery orders ready to ship in Odoo
Delivery orders ready to go: each with its source document, customer, and scheduled date, ready to hand over to the courier.
09

A failed delivery is not one thing

There's a difference between a customer who never answered, a wrong address, a customer who asked to postpone, and one who refused the product or wasn't ready to pay.

So the reason a delivery failed gets recorded, not just the word "returned".

Based on the reason, you can:

Schedule a new delivery attempt.
Fix the address or phone number.
Contact the customer again.
Cancel the order.
Wait for the shipment to physically come back.
Score the courier's or the confirmation team's performance.

Pieces don't go back to available stock just because a shipment turned "returned". They come back only after they're received, inspected, and their actual condition is set.

10

Exchanges and returns

An exchange is not a separate new sales order, and a return is not just a canceled invoice.

The process starts from the original order, specifying:

The piece coming back.
The replacement piece, if any.
The reason for the exchange or return.
Who bears the shipping cost.
The amount to collect or refund.
The piece's condition once it's back.

For an exchange, one shipment can deliver the new piece and collect the old one in the same visit.

For a return, a customer pickup is created with no collection amount, and the piece is inspected on arrival:

Good: back to available stock. Needs cleaning or repair. Manufacturing defect. Damaged and unsellable.

Financially, a credit note is issued for the actual value of the returned pieces, recording any customer refund and any shipping fees or deductions tied to the case.

And when part of an order is delivered while a return hasn't arrived yet, the invoice can wait until the movement completes, then issue for what was actually delivered, net of the return.

11

Cash on delivery

When a shipment shows "Delivered", the courier has collected the money from the customer, but that doesn't mean the company has been paid.

The order value stays owed by the courier until the settlement arrives.

The courier's statement is reconciled against the recorded shipments, showing:

Shipments delivered.
COD amounts collected.
Shipments returned.
Delivery fees.
Return fees.
Collection fees.
Any other deductions or adjustments.
Net amount transferred.

When the transfer lands, it's recorded and matched to the invoices and shipments on the statement, while the courier's fees post to their correct accounts.

So an order isn't closed financially because it showed "Delivered", only after the actual collection is reconciled.

12

Direct transfers alongside the courier

An order may be placed as cash on delivery, then the customer transfers the amount straight to the company via InstaPay or Vodafone Cash.

When that happens:

The amount is recorded as a direct collection from the customer.
The company doesn't wait to collect the same amount from the courier.
The amount is excluded from the COD total the courier owes.
The courier is left to collect only whatever cash portion remains.

The goal: every amount shows its source clearly, and no collection is ever counted twice: once against the customer and once against the courier.

13

Online payments

For an order paid online, the payment links to the order and the invoice, with the sale value separated from:

Payment gateway commission. Transaction fees. Pending amounts. Refunded amounts. Settlement differences.

And when a customer sends a transfer screenshot or proof of payment, it can be recorded as pending review, not automatically as confirmed collection.

Once approved, it's matched to the invoice and the outstanding balance is closed.

14

Amazon: three different cycles

Selling on Amazon isn't managed as a single channel: FBA, FBM, and Vendor are three different cycles, operationally and financially.

FBA

The company ships stock to Amazon's warehouses, and Amazon handles storage, fulfillment, and delivery.

In the system, you track:

Quantities sent to Amazon.
Stock held on their side.
Sales made.
Returns.
Storage and fulfillment fees.
Commissions.
Reimbursements and adjustments.
Net settlement due.

Amazon's stock is treated as its own location: it never shows up as available stock inside the company's warehouses.

FBM

The order comes from Amazon, but the company picks and ships it.

It runs through the usual inventory, picking, and shipping cycle (keeping the Amazon order number and status), then the platform commission and financial settlement are reconciled against delivered orders.

Vendor

Under Vendor, the company doesn't receive the end consumer's order the same way: it receives a purchase order from Amazon.

The cycle tracks:

The purchase order.
Items and quantities requested.
Delivery dates.
Preparing and delivering the shipment.
The invoice.
Deductions and chargebacks.
Net amount due.

So Vendor orders are never mixed with FBA or FBM, in operations or in reporting.

Inside Odoo
Amazon sync setup inside Odoo
Odoo's official Amazon connector: import orders and sync deliveries by linking the account. Shopify, Salla, and Zid connect the same way through dedicated connectors.
15

The other marketplaces

Every marketplace has its own catalog, matching codes, stock, commissions, and settlements.

The system keeps separate:

Products listed on each platform.
Its prices and promotions.
Stock allocated to it.
Orders and sales.
Returns.
Platform commissions.
Shipping and fulfillment fees.
Net collection.

So platforms are compared by net return, not just gross sales.

The platform with the highest sales can turn out the least profitable once commissions, returns, and fulfillment fees are added.

16

Customer service sees the whole order

Customer questions and complaints link to the order, instead of living as separate conversations on WhatsApp, Instagram, or email.

Opening the order, the customer service agent sees:

What the customer ordered.
Confirmation status.
Which warehouse picked the order.
The shipping label number.
The shipment's latest status.
Delivery attempts.
Payments.
Previous exchanges and returns.
Tickets and recorded notes.

Every issue type gets a clear path, a response time, and an owner, instead of bouncing the customer between sales, the warehouse, and accounting with no single record of what happened.

17

Profit is not the order value

Total orders received aren't your sales, and total delivered orders aren't your net profit.

Each order's true result is computed after adding up:

Product cost. Discount. Shipping cost. Payment gateway commission. Platform commission. Collection fees. Return or exchange cost. Any compensation or refund.

Profitability then breaks down by:

Product and variant. Store or platform. Campaign or order source. Region. Courier. Time period. Payment type.

So channels get compared on what they actually netted, not on the order count in the store dashboard.

18

Every team owns a clear piece

Product management
Responsibility in the cycle
Coding, variants, photos, prices, and channel mapping
Marketing
Responsibility in the cycle
Campaigns, order sources, and reading actual conversion
Confirmation team
Responsibility in the cycle
Verifying customer, address, and order, logging cancellations and reasons
Warehouse
Responsibility in the cycle
Reservation, picking, scanning, and handover to the courier
Shipping coordinator
Responsibility in the cycle
Labels, statuses, attempts, and returned shipments
Customer service
Responsibility in the cycle
Inquiries, complaints, exchanges, and returns
Marketplace manager
Responsibility in the cycle
Amazon and the other marketplaces, their stock and settlements
Accounting
Responsibility in the cycle
Invoices, collections, commissions, and reconciliations
Purchasing & planning
Responsibility in the cycle
Keeping products stocked in line with demand and stock levels
Management
Responsibility in the cycle
Performance, profitability, and exceptions

The confirmation team can't edit stock, the warehouse can't close a return financially, and accounting doesn't count an order as collected before the collection document and reconciliation exist.

19

The numbers that show what's really happening

Instead of stopping at total orders and sales, the core operating metrics surface:

Order confirmation rate.
Cancellation reasons before shipping.
Time from order entry to confirmation.
Time from confirmation to picking.
First-attempt delivery rate.
Overall delivery rate.
Orders postponed or unreachable.
Refusal, return, and exchange rates.
Return reasons by product and size.
Performance of every courier and region.
COD value sitting with the couriers.
Late and unreconciled settlements.
Net profit per channel, product, and campaign.
20

One cycle per order

Odoo runs the online cycle end to end: from defining the product and linking it to channels, through the order, confirmation, stock reservation, picking, and shipping, to delivery, collection, exchanges and returns, and the accounting settlement.

Every step creates the next, and every document stays linked to the original order.

So the state of any order is one lookup away:

What the customer ordered, which channel it came from, where the pieces are, who picked them, where the shipment got to, what was delivered, who collected the money, and what the order netted after every expense.