First, the business needs a website
A physical shop needs premises that work for both customers and the business. The shopfront attracts attention, the sales floor presents the products, and behind the scenes there is space for administration, stock and fulfilment. An online business has similar needs: the website provides the public presence, while the systems behind it help the business function.
The first task is to create that presence. Your website must introduce the business, explain what you sell and give visitors confidence to take the next step. Appearance matters, but so do layout, accessibility and how easily customers can find what they came for. Clear navigation, useful information and a good experience on a phone all contribute to whether a visitor stays.
Both Odoo and Shopify provide tools for building this customer-facing space, but their scope and purpose differ.
Odoo’s website builder is an accessible content management system—a CMS—with a visual, largely no-code editing environment. Everyday pages can be built by dragging blocks into place, editing text and images, and adjusting layouts without writing code. Business users can therefore create and maintain much of the website themselves, although specialist designs and functionality can still require development.
Importantly, the website belongs to a full business management system. Its purpose can extend well beyond the sales floor. With the relevant Odoo applications configured, it can support marketing and enquiries, customer access to business records, surveys, blogs, online training and forums. These capabilities come from applications within the Odoo environment, sharing the website and its connection to the wider business.
A business can therefore use its Odoo website to attract prospects, explain services, support existing customers and deliver training, whether or not those activities involve an online purchase. Marketing, sales, customer service and other functions can use the same web presence for different purposes. The shopfront is one entrance into a much larger operation.
Shopify starts with a more focused purpose: building and running an online store. Its free and paid themes provide ready-made foundations for the appearance and layout of the shop, while its extensive app ecosystem offers ways to extend it. Choosing a suitable theme and established apps can reduce the work required to launch a conventional retail experience. Shopify also supports ordinary website pages and a blog, allowing the business to publish information and content alongside its catalogue.
The distinction is one of scope. Shopify centres the website on commerce; Odoo allows commerce to sit within a broader business website. Shopify Plus expands the commerce proposition for more demanding businesses, but the initial question remains: do you primarily need an online store, or will the website also serve as a working channel for other parts of the business?
For either platform, the practical question is how closely the available layouts and tools match your requirements. A suitable starting point can save considerable time. Extensive changes can turn an apparently simple website project into a longer and more expensive exercise. Before choosing, test a few representative pages using your own content: the home page, a product presentation and a page explaining your services or delivery arrangements.
Both platforms also make stock photography accessible during website editing: Odoo integrates directly with Unsplash, while Shopify provides access to its own Burst image library. You can also upload your own photographs or appropriately licensed images from other sources on either platform. This can reduce the time and expense of preparing general website imagery, although product photographs still need to accurately represent what you sell.
The software cannot supply all the decisions and material needed to launch. Someone still has to write the copy, prepare images, organise navigation, provide contact details and explain how the business trades. Missing content and unresolved decisions can hold up the website even when the editing tools are easy to use.
Consider who will maintain it once the doors are open. Changing a banner, publishing an article or updating a policy should be manageable for the person responsible. If routine changes require outside assistance, that creates an ongoing cost and can delay campaigns or important customer information. Where several business functions will use the website, their needs and responsibilities should be included from the outset.
At this stage, the objective is a credible website that the business can afford to build and comfortably maintain, with enough scope for its intended uses. With the premises taking shape, the next step is to establish the sales floor: the online shop, its products and the information customers need to make a purchase.
Establish the sales floor: products, prices and availability
With the website taking shape, the next task is to give customers something to buy. The online shop needs an organised catalogue, useful product pages and a clear route from browsing to placing an order. As with a physical sales floor, the way products are grouped and presented affects how easily customers find the right item.
Both Shopify and Odoo support product catalogues and variants, allowing customers to choose between options such as size, colour or finish. The work begins with deciding how your range should be structured and preparing the information behind it: descriptions, photographs, product codes, prices and stock details. Shopify also supports bulk product imports, which can reduce repetitive capture when a suitable product list already exists.
The quality of that information matters beyond the product page. A chair offered in three fabrics and two finishes may appear to the customer as one product with several choices. Behind the scenes, those choices must identify exactly what has been ordered, what it costs and what must be supplied. Where the combinations are stocked separately, their availability must also be managed separately. Clear product codes help prevent the customer’s selection becoming an ambiguous instruction to the person fulfilling the order.
Shopify provides product and inventory management within the store, so it can hold and maintain that information directly. Where another system already manages the business’s products or stock, the implementation must establish how the two will exchange updates. For example, which system controls prices, and how quickly does a sale through another channel reduce the quantity available online?
In Odoo, the catalogue draws on product records used across sales, purchasing and inventory. The website presentation can be tailored for customers while the underlying product remains connected to the business’s operational records. This reduces the need to maintain separate product identities across those Odoo applications, but it also makes initial configuration important: the product must work for the people buying, selling and handling it, as well as look right on the website.
Pricing introduces further decisions. A straightforward retail shop may need one selling price and occasional promotions. A business serving both consumers and trade customers may need different prices, quantity discounts or customer-specific arrangements. Odoo supports pricelists based on factors including customer type, purchase volume and time period. Shopify requirements should be assessed against the intended plan and any additional apps, with Shopify Plus considered separately where the business needs a more substantial B2B operation.
Once the shelves are filled, keeping them accurate becomes an ongoing responsibility. Suppliers change prices, products are discontinued, photographs need replacing and new ranges arrive. Someone must own those updates. Integration can move information between systems, but it cannot decide whether a description is useful or whether a supplier’s new price has been approved.
Availability also needs to mean something clear to the customer. “In stock”, “available from our supplier” and “made to order” represent different promises. The shop’s wording and ordering rules must reflect how the business actually supplies the product.
By this point, customers can browse the range, understand their choices and see what they will pay. The next step is to open the till—and make sure an order can become a confirmed, paid transaction.
Open the till: orders, payments and billing
The customer has found the product, chosen the right option and added it to the basket. Now the shop needs to turn that intention into a confirmed order. The checkout is the till, but making it work involves more than adding a payment button.
Customers need to understand the final amount, provide the necessary billing and delivery details, and complete payment without unnecessary difficulty. Behind the counter, the business needs to know whether payment succeeded, what has been ordered and whether the order is ready to fulfil. An order confirmation, a payment confirmation and an invoice serve different purposes; the workflow must connect them correctly.
For a South African business, payment-provider selection should happen early. Shopify Payments is not currently available to businesses based in South Africa, so local merchants need a supported third-party provider. Payfast offers a Shopify integration, providing one established route to accepting local payments. Shopify also applies third-party transaction charges to applicable gateway transactions, in addition to the provider’s own fees. These charges belong in the operating-cost comparison.
Odoo also connects to external payment providers, including a documented DPO Pay integration. However, an available connector does not automatically mean that every service offered by that provider will work with it. The merchant account, payment service and credentials must match the integration. Where a different gateway requires an additional module, the Odoo hosting choice becomes relevant and should be settled before committing to that payment route.
The software may be ready before the merchant account
Configuring the connection can be a relatively short task. Becoming approved to accept live payments can take much longer.
Depending on the provider and service, the business may need to submit verification documents, confirm banking details, sign agreements and make changes to the website. These can include displaying contact information, delivery and refund policies, terms and conditions, and required payment branding. Payfast’s published terms, for example, include website-policy requirements and, for certain gateway arrangements, a separate merchant agreement with the acquiring bank.
This work should be treated as a launch dependency that can take weeks, rather than assumed to be a final afternoon of configuration. The actual timing depends on the provider and the application. Some preparation can happen alongside the website build, but important steps may be sequential: the website must be ready for review, approval must be completed, and the live service must be activated before the complete payment journey can be tested.
Receiving a portal login or successfully processing a test transaction is therefore not sufficient evidence that the shop can accept and settle real payments. Before launch, a live test should confirm the customer experience, the order’s payment status and the route by which the money reaches the business.
A successful payment must become an accurate business record
Once trading starts, the next question is what happens behind the till.
With Shopify, the sale and its payment information must reach the business’s accounting system. That can be handled through an automated connector, an import process or a managed accounting workflow. The implementation needs to establish what transfers, how often it transfers and who resolves exceptions. Shopify Plus should be assessed separately for more demanding checkout and integration requirements, but the accounting connection still needs to be designed.
Odoo places sales, invoicing and payment records within the same business environment. Payments can be linked to invoices, reducing the need to transfer the sale into a separate accounting application. That is a practical advantage when those Odoo applications are configured together, although it does not remove the need to reconcile the payment provider’s settlements and charges.
For example, a customer might pay R1,000 while the business receives a smaller amount after processing fees. A settlement might also combine several purchases into one bank deposit. The records must explain the full sale, the deductions and the amount received. Otherwise, a working checkout can leave someone with a daily reconciliation problem.
The till is now open, and the business can accept an order and account for its payment. The customer, however, is still waiting for the product. The next task is to deliver the promise made at checkout.
Deliver the promise: stock, dispatch and logistics
The order is confirmed and payment has succeeded. From the customer’s perspective, the next step is simple: receive the purchase. Behind the scenes, the business must turn the order into the right parcel, collected from the right place and delivered within the promised time.
The delivery price and options need to be established before the customer pays. But their consequences become real now: someone must locate the stock, pick the correct items, pack them, book the shipment and hand it to the courier. Connecting a delivery app does not, by itself, organise the stockroom.
Connect the shop to the delivery service
Shopify has a practical advantage in its established South African shipping ecosystem. Apps such as Bob Go provide connections to local delivery partners, including The Courier Guy, RAM, SkyNet and Pargo. This gives merchants an available route to courier integration without commissioning a connector from scratch.
However, “courier integration” can mean several things. Transferring orders into a shipping platform, booking collections, printing waybills and updating tracking are different from displaying live delivery prices at checkout. The chosen app and Shopify plan must support the functions the business needs. Shopify’s third-party carrier-calculated shipping feature is included with Advanced and Plus; Grow can access it through an additional monthly fee or annual billing.
For Odoo, the preferred South African courier needs to be checked against the connectors available for the intended version and hosting environment. Odoo Online cannot accommodate an additional custom courier module. Where that integration requires one, the business must consider Odoo.sh or another deployment that supports it, together with the module’s cost, compatibility and ongoing support.
This does not prevent an Odoo Online shop from offering delivery. A business can charge a fixed delivery fee, offer collection or arrange shipments separately. The practical consequence is that courier booking and tracking may involve work outside the shop. For a low-volume operation, that may be acceptable; as orders increase, it can become a substantial daily task.
Make the delivery promise workable
Either platform still needs an operational delivery arrangement. Depending on the service, this may involve opening an account, agreeing rates, funding shipments and confirming collection arrangements. The business must also decide what it offers customers: collection, standard delivery, express delivery or delivery subject to a quotation.
Accurate parcel information matters. A lightweight but bulky product can cost more to ship than its weight suggests. Packaging, dimensions, delivery area and service level can all affect the quote. Free delivery also has a cost—it is simply paid by the business rather than shown separately to the customer.
Dispatch timing deserves equal attention. If orders are packed in the evening, same-day dispatch may be unrealistic. Courier cut-offs, weekends and stock sourced from suppliers must be reflected in the promise shown on the website.
Follow the order through the stockroom
Shopify can manage inventory within the store. If a separate ERP or warehouse system controls fulfilment, the connection must communicate orders, availability and shipment status reliably. Otherwise, the shop may continue accepting orders for stock that has already been sold elsewhere, or customers may receive incomplete updates.
With Odoo’s Sales, Inventory and Purchasing applications configured together, the online order can enter the same environment used to reserve stock, prepare delivery and replenish products. This brings the sales floor and stockroom closer together, but the workflow still needs to match how the business operates. Stocked products, supplier-dispatched goods and made-to-order items require different handling.
The final test is practical: can the person responsible take a paid order through to a packed, correctly labelled shipment, and can the customer see what happens next?
Once that works, the business has a functioning route from browsing to delivery. But some parcels will be delayed, some products will arrive damaged, and some customers will want to return what they bought. The next requirement is a returns counter—and a process behind it.
Deliver the promise: stock, dispatch and logistics
The order is confirmed and payment has succeeded. From the customer’s perspective, the next step is simple: receive the purchase. Behind the scenes, the business must turn the order into the right parcel, collected from the right place and delivered within the promised time.
The delivery price and options need to be established before the customer pays. But their consequences become real now: someone must locate the stock, pick the correct items, pack them, book the shipment and hand it to the courier. Connecting a delivery app does not, by itself, organise the stockroom.
Connect the shop to the delivery service
Shopify has a practical advantage in its established South African shipping ecosystem. Apps such as Bob Go provide connections to local delivery partners, including The Courier Guy, RAM, SkyNet and Pargo. This gives merchants an available route to courier integration without commissioning a connector from scratch.
However, “courier integration” can mean several things. Transferring orders into a shipping platform, booking collections, printing waybills and updating tracking are different from displaying live delivery prices at checkout. The chosen app and Shopify plan must support the functions the business needs. Shopify’s third-party carrier-calculated shipping feature is included with Advanced and Plus; Grow can access it through an additional monthly fee or annual billing.
For Odoo, the preferred South African courier needs to be checked against the connectors available for the intended version and hosting environment. Odoo Online cannot accommodate an additional custom courier module. Where that integration requires one, the business must consider Odoo.sh or another deployment that supports it, together with the module’s cost, compatibility and ongoing support.
This does not prevent an Odoo Online shop from offering delivery. A business can charge a fixed delivery fee, offer collection or arrange shipments separately. The practical consequence is that courier booking and tracking may involve work outside the shop. For a low-volume operation, that may be acceptable; as orders increase, it can become a substantial daily task.
Make the delivery promise workable
Either platform still needs an operational delivery arrangement. Depending on the service, this may involve opening an account, agreeing rates, funding shipments and confirming collection arrangements. The business must also decide what it offers customers: collection, standard delivery, express delivery or delivery subject to a quotation.
Accurate parcel information matters. A lightweight but bulky product can cost more to ship than its weight suggests. Packaging, dimensions, delivery area and service level can all affect the quote. Free delivery also has a cost, it is simply paid by the business rather than shown separately to the customer.
Dispatch timing deserves equal attention. If orders are packed in the evening, same-day dispatch may be unrealistic. Courier cut-offs, weekends and stock sourced from suppliers must be reflected in the promise shown on the website.
Follow the order through the stockroom
Shopify can manage inventory within the store. If a separate ERP or warehouse system controls fulfilment, the connection must communicate orders, availability and shipment status reliably. Otherwise, the shop may continue accepting orders for stock that has already been sold elsewhere, or customers may receive incomplete updates.
With Odoo’s Sales, Inventory and Purchasing applications configured together, the online order can enter the same environment used to reserve stock, prepare delivery and replenish products. This brings the sales floor and stockroom closer together, but the workflow still needs to match how the business operates. Stocked products, supplier-dispatched goods and made-to-order items require different handling.
The final test is practical: can the person responsible take a paid order through to a packed, correctly labelled shipment, and can the customer see what happens next?
Once that works, the business has a functioning route from browsing to delivery. But some parcels will be delayed, some products will arrive damaged, and some customers will want to return what they bought. The next requirement is a returns counter, and a process behind it.
The returns counter: customer service, returns and refunds
Most orders should follow the intended route from purchase to delivery. But a parcel may go missing, the wrong item may arrive, or a product may need repair or replacement. The customer now needs help, and the business needs a way to resolve the issue without losing track of the order, the goods or the money.
In a physical shop, the customer can approach the returns counter. Online, that counter might begin with an email, a message or a support form. Whatever the channel, someone needs to identify the purchase, understand the problem, decide what happens next and keep the customer informed.
Keep the conversation connected to the purchase
An email inbox may be sufficient for a small number of enquiries. As the business grows, however, messages can become scattered across people and channels. A customer may explain the same problem several times, while staff struggle to establish what was promised or whether a replacement has already been sent.
A helpdesk provides a more structured way to manage those cases: each issue has a record, a responsible person and a status. Its value increases when the person handling the case can also see the relevant order, delivery and financial information.
With Shopify, the assessment should include how customer support will connect to the store and any other business systems. Where a dedicated helpdesk or returns app is used, its integration must give staff the information and actions they need. Buying more software is only useful if it reduces the work of resolving the customer’s problem.
Odoo offers Helpdesk within its business suite. With the relevant applications and after-sales features enabled, a support ticket can provide a route into product returns, credit notes and repair work. This connects the customer conversation to the operational response within the same environment.
One return creates several pieces of work
Suppose a customer receives a damaged chair and requests a refund. The business must arrange collection, receive and inspect the chair, decide what happens to it, adjust the sale and return the customer’s money. Those actions are related, but they are not interchangeable.
Shopify supports returns, exchanges and refunds directly in its administration interface. A merchant can manage a return against the order and process the appropriate outcome after receiving the goods. It is therefore important to assess the built-in workflow before assuming that a separate returns application is necessary.
Where accounting or warehouse management happens elsewhere, those systems must also reflect the outcome. The integration needs to handle the exception as well as the original sale. A connector that transfers new orders successfully may still require additional configuration or manual work for partial refunds, exchanges or damaged stock.
Odoo’s after-sales functions connect Helpdesk with applications such as Inventory and Accounting. A physical return can be recorded through a reverse stock transfer, while a credit note adjusts the invoiced amount. These remain distinct actions: creating a credit note does not, by itself, mean money has reached the customer. The refund must also be processed through the supported payment route and reconciled.
The damaged chair should not automatically become available for sale again, either. It may need inspection, repair or disposal. The stock record must reflect that decision rather than simply increasing the quantity because an item came back.
This is where integration becomes particularly valuable. The support team needs to know whether collection has happened, the stockroom needs to know what to do with the item, and accounting needs to know whether the customer has been credited and refunded. Without connected records, someone must coordinate those updates and check that none has been missed.
A functioning returns counter protects both the customer relationship and the accuracy of the business’s records. Once sales and exceptions are flowing through the shop, the next question is whether the business can see, and manage, the whole operation.
See the whole business: connected records and useful reporting
The shop is now taking orders, receiving payments, dispatching products and handling returns. Each activity creates information. The next challenge is to turn those records into a reliable view of the business.
The owner needs more than a sales total. Which orders still need attention? Are advertised products actually available? Have payments reached the bank? Which products generate a worthwhile margin after delivery costs, payment fees and returns? A busy sales floor can conceal problems in the stockroom or back office.
Decide which system controls what
With Shopify, the store can manage its own products, orders and inventory. When accounting, purchasing or warehouse operations are managed elsewhere, the business needs clear rules for how those systems work together.
For example, if the accounting or ERP system controls selling prices, changes must reach the shop correctly. If several channels sell the same stock, availability must be updated quickly enough to avoid promising the same item to two customers. Staff also need to know where to make corrections; changing a record in the wrong system may result in it being overwritten by the next synchronisation.
These connections can be automated. The practical consideration is what the automation covers and who takes responsibility when it fails. A rejected update, duplicate order or unmatched refund needs to become a visible task for someone to resolve.
Shopify Plus belongs in this assessment as a separate option for more demanding commerce operations. However, the scale of the storefront does not remove the need to connect it properly to the systems behind the business. A larger operation may deliberately choose Shopify for commerce and a separate ERP for purchasing, stock and finance. The quality of that arrangement depends on the implementation and ongoing management of the connections.
Odoo takes a different approach when its website, sales, purchasing, inventory and accounting applications are used together. These functions operate within the same business environment, reducing or removing the need to transfer records between separate platforms. The advantage is continuity: the online sale can remain connected to the operational and financial records created as it progresses.
That still requires accurate configuration, clear responsibilities and disciplined use. An integrated system cannot correct a stock receipt that nobody recorded or a supplier cost that nobody updated.
Measure what matters beyond turnover
Reporting should follow the decisions the business needs to make. Sales by product and channel are useful, but so are outstanding deliveries, ageing stock, return rates and the difference between revenue and actual margin.
Suppose a product sells well but regularly arrives damaged. Its sales figures may look encouraging while replacement deliveries, refunds and support work steadily reduce its contribution. Understanding that problem requires information from several parts of the operation.
For Shopify, the assessment is whether the necessary view comes from the store’s reporting, additional apps, the accounting system or a combined reporting tool. For Odoo, it is whether the relevant applications capture enough information to produce that view. Neither platform should be judged on an attractive dashboard alone: the figures must answer useful questions and be based on reliable records.
As the business adds products, people or sales channels, these considerations become more significant. The aim is to avoid growth creating a second business behind the first, one devoted to copying data, checking discrepancies and chasing updates.
The final buying decision therefore needs to account for the complete operating arrangement. What will it cost to establish, what will it cost to run, and which platform best fits the business you intend to build?
Count the complete cost, and choose the right fit
The shop now has a website, products, a till, a delivery arrangement and a returns counter. Behind them sit the records and processes needed to keep the business running. The cost comparison must cover that complete arrangement.
An advertised subscription is a starting point. The useful question is what it will cost to establish and operate the business you have just followed through this article.
What will it cost to open the doors?
Both platforms require preparation: website content, product information, prices, payment arrangements and delivery rules. Someone must configure the system, test the complete journey and train the people responsible for operating it.
A straightforward Shopify store using a suitable theme and established integrations may require relatively little development. Its implementation budget should still include any paid theme, app configuration, product migration and connections to accounting or other business systems.
An Odoo implementation may cover more of the operation: the website and shop alongside sales, purchasing, inventory, accounting and customer support. That can involve more initial configuration and more decisions about how the business works. Comparing that project with the cost of building only a storefront would give a misleading result. The scope must be equivalent.
In either case, extensive customisation adds cost and ongoing responsibility. Before commissioning it, establish whether a standard approach would meet the business need.
What will it cost to keep trading?
Shopify’s recurring costs can include the platform subscription, paid apps, connected business software and support for integrations. Payment-provider charges and Shopify’s applicable third-party transaction fees must also be included. Those platform transaction rates vary by plan, so the comparison should use expected sales volume as well as the monthly subscription.
Shopify Plus requires a separate assessment. Its pricing and commercial commitments differ from the standard plans; its additional capabilities need to justify that commitment for the particular business. A growing shop does not automatically need Plus simply because it expects to become successful.
For Odoo, the recurring budget depends on the subscription, licensed users and hosting arrangement. The paid Standard and Custom plans include the business applications, while Odoo.sh hosting is charged separately. Additional modules, custom development and their maintenance may add further costs. Including the applications in the subscription does not mean their implementation is included.
For a South African business, foreign-currency charges, exchange-rate movements and applicable taxes should be reflected in the rand budget. Introductory discounts should also be separated from the expected renewal cost.
Include the work that remains
There is also a cost in staff time. Maintaining duplicate product records, checking failed transfers, reconciling settlements and coordinating returns can become a substantial operating expense.
Automation may reduce that work, but it introduces connections that need support. An integrated platform may reduce the number of connections, but it still requires accurate records and disciplined use. Assess the ordinary trading day as well as the launch project: who does each task, how long does it take, and who resolves problems?
Which option fits your business?
Shopify’s standard plans are a strong option when the central requirement is an online retail store and the business is comfortable using suitable apps and connected systems for the work around it.
Shopify Plus deserves consideration when commerce requirements are sufficiently demanding to justify its capabilities and cost, potentially alongside an established ERP. It should be evaluated against specific requirements rather than treated as the default next step.
Odoo deserves consideration when the shop is one part of a wider requirement to manage sales, stock, purchasing, accounting and customer service together. Its integration becomes more valuable as those activities become more closely connected, provided the hosting and implementation support the required local services.
The right choice is the one whose complete operating arrangement fits the business, with costs and responsibilities understood before the doors open.
Plan the shop and the business behind it
Hatton Locks helps businesses define their requirements, assess platform options and plan implementation around practical operating needs. If you are considering Odoo or Shopify, contact us to work through the complete setup, from the customer-facing website to fulfilment, support and accounting, and establish what it will take to build and run it.