Home / Blog / E-commerce
E-commerce Approximate reading time: 19 min · 01.09.2026

How to Create an Online Store: What the Project Actually Involves

Creating an online store is not just choosing a design template. Find out how to prepare the catalogue, payment and delivery arrangements and the withdrawal process, and what to check before launch.

An online store screen with a shopping cart and a project checklist placed beside it.

Creating an online store is not just choosing a design template. Find out how to prepare the catalogue, payment and delivery arrangements and the withdrawal process, and what to check before launch.

An online store is not ready the moment a customer can open a product page and put an item in the cart. It is ready when the buyer sees the right price, chooses a variant that is actually available, pays and receives a clear confirmation, and when the seller can fulfil the order and take the goods back if needed. Design is the most visible part of the project, but it does not decide whether the first order ends in a delivery.

That is why the question “how to create an online store” has to be narrowed first: which selling process has to run without improvisation? The answer starts with one product and one complete order, in which the data source, the stock reservation, the payment result, the creation of the shipment and what happens in the event of withdrawal are all clear. Every unanswered question later becomes scope or a manual step: name the person responsible, the time it takes, and the point beyond which a manual approach no longer works. Otherwise a technically finished store will still rest on a spoken agreement and on somebody’s memory.

This article focuses on preparing and accepting the project, not on comparing platform prices. Before development and launch you have to prepare the input data, separate the store’s functions from the company’s process, and accept the work on a real test order, not a screenshot. That approach holds both if you build the store yourselves and if you hand the job to a developer.

Start with one order, not a platform name

Before you choose a technology, describe one ordinary order from finding the product to delivery, using a specific product, price, payment method and address. Write down what the buyer, the store and your employee do at each stage. If the answer is “we’ll sort that out by hand”, also name the person responsible, the time the action takes, and the order volume at which that arrangement will no longer be practical.

This description quickly shows whether you need a standard store or more individual order handling, because a catalogue, one pricing logic, ordinary card payment and a parcel locker usually do not require a complex system, whereas prices by customer contract, availability in several warehouses or confirmation in another system change the scope already before design. On a feature list the two projects can look similar, but in a process description the difference becomes unmistakable, and it can be turned into an acceptance criterion that can be checked at the end of the project without guessing what the contractor had in mind.

The platform has to be chosen from this process and from the growth you expect: WooCommerce can be a rational choice for standardised selling, while Laravel gives more freedom for atypical logic and integrations. A wider comparison is in the article on when to choose WooCommerce or Laravel. At this stage the important thing is to understand that the platform name itself does not say what will happen to your order.

Add one exception to the process description as well, and check what happens if payment fails, two people try to buy the last unit at the same time, the parcel locker is unavailable, or the customer wants to return part of a set. You do not have to list every rare situation, but one unsuccessful scenario reveals statuses, notifications and staff duties far better than ten green ticks on a quote.

The catalogue starts with the definition of the unit you sell

A products spreadsheet is not yet a catalogue, because you first have to agree what one sellable unit is in the system: for a simple book it can be one product with one price and one stock figure, but for clothing each size and colour combination may have its own SKU, image, barcode and stock. For a bundle, in turn, you have to know whether it is a standalone product or a set of several warehouse units.

Prepare one fully filled sample product before the team starts a bulk import, and include the name, the short and full description, the price, how tax applies, the category, the variant, the SKU, the stock, the weight or dimensions that matter for delivery, the images, and other information that matters to the buyer. The sample lets you notice a missing field while only one row has to be corrected, and at the same time it gives the designer real content rather than an ideal demonstration card.

An unlimited number of SKUs in the technical solution does not mean that preparing forty products and preparing four thousand takes the same work, because the price of the store’s functions may stay the same, yet in a larger catalogue the data cleaning, image linking, variant checks, translation and import all grow. That is why a quote has to show separately the platform’s ability to store a catalogue and the work that has to be put in to make your data usable; that work can include field mapping, handling of faulty rows, checking images, and comparing the final import with the source file.

Clothing: size and colour are not just a filter

In a clothing store, size and colour are often variants with their own availability, not merely filter values, so the buyer has to see that the blue M is out of stock even if the black M is still available, the image has to change with the colour chosen, and the exact combination has to reach the order. Before you enter the whole catalogue, test one product with at least two sizes, two colours and one unavailable variant.

The catalogue needs an owner after launch as well, so decide who changes a price, adds a variant, corrects a description and takes a product off sale. If the information arrives from a supplier or from an enterprise resource planning system, you have to set the main data source and the direction of synchronisation. Two places in which staff may correct one price do not create flexibility; they create the conditions for a mismatch. That is why you have to agree a change history, who may approve changes, and what happens after a faulty import; the team has to be able to establish in which source the wrong value arose and what it has already affected.

The payment process has to be described with statuses and actions

A payment integration is not finished when a payment window opens, because the project has to agree what the store does after each outcome: a successful payment may change the order status, send a confirmation, reduce the available quantity and pass a task to picking. A failed or interrupted payment must not look like a paid order, but it should not hold the goods indefinitely either.

In everyday language “the payment succeeded” can mean that the bank confirmed the transaction, the payment service recorded it, or the money is already in the company account, and fulfilment must not rest on so vague a wording. So decide which system status allows picking to start, and how a member of staff sees an order that needs checking. Orders paid after delivery or by bank transfer have to be handled separately, not as a copy of the card-payment process.

You also have to decide how long an unpaid order holds the goods, because too short a period can release the item while the buyer is still completing payment, and too long a period artificially reduces available stock. WooCommerce’s core inventory settings can manage quantity and set a hold time for unpaid orders, so a standard store can control its internal stock without an external warehouse integration.

Before launch, run at least one successful payment, one interrupted payment and one refund, in test mode or with a small real amount, and check the buyer’s screen, the order status in the admin, the emails, the stock changes and the payment-service record. If the team has seen only the successful scenario, a large part of the payment process is still untested, because in real work you have to distinguish a delayed bank notification, a payment the buyer interrupted, and a system error, and each case has to leave a clear record in the admin.

Delivery and fulfilment are not one tick

A delivery integration can calculate a price, show parcel lockers, create a shipment and return a tracking number, but not every solution does all of those things, so the phrase “connect a courier” has to be replaced with concrete questions: does the buyer choose a parcel locker, does the price depend on weight, cart total or country, is the label created in the store, and does the tracking link arrive in the email automatically?

Fulfilment starts after the order is accepted, and staff have to see clearly which orders are paid and ready to pick, and what to do when something goes wrong. Decide who may change the status, whether the buyer receives a notification, and how the tracking number is recorded; in a small store one person can do this, but in a larger team, without a split of responsibilities, one order can be prepared twice while another is missed.

Check delivery prices with extreme examples, not only with one average cart, and try the cheapest and the most expensive product, the free-delivery threshold, an address outside the allowed area, and a product that will not fit in a parcel locker. If the calculation uses weight, one product without a weight can break the whole result. Where the price is fixed, you have to know who covers the difference for a non-standard shipment; you also have to check delivery in several parcels, and whether the method remains available for a cart with goods of different sizes.

Collection at the office or shop is also a delivery method with its own rules, so the buyer has to know the address, the hours, and the moment when the order is ready for collection, and warehouse staff have to learn of that choice in time. A good test does not end with the words “order received”, but with a parcel or goods prepared for collection and an accurate notification sent to the buyer.

Order and withdrawal requirements have to become concrete actions

A distance contract can be concluded on a website, by email, by messaging or by other means of distance communication, so the seller’s duties do not disappear if the order is taken on a social network and the invoice is sent later. In an electronic ordering process, the button or an equivalent action must indicate unambiguously that the order creates an obligation to pay. The requirements apply to the ordering sequence itself, not only to a terms page in the website footer.

The Consumer Contracts (Information, Cancellation and Additional Charges) Regulations 2013 require that, immediately before an electronic order, the buyer is shown, among other things, certain key information, the final price and additional costs, while the means of payment and delivery restrictions must be stated no later than the beginning of the ordering process. Because the composition of the requirements can change, check the version in force on the day of launch and compare the store’s screens with the specific rules.

The order confirmation must include a copy of the contract terms themselves, or another document the buyer can keep in unaltered form; a link to a page the seller can change unilaterally is not enough, so check that the confirmation contains the goods ordered, the price, delivery, the trader’s details and the required pre-contract information. Agree the exact set of documents and the wording with a lawyer according to your selling model. Keep the version used together with the order date, so that in a dispute you can show not only the current terms page, but the information actually given to the buyer.

GOV.UK explains that a consumer usually has a fourteen-day right of withdrawal for goods, counted from receipt of the goods, and the regulations name specific exceptions. The project has to provide not only the withdrawal text, but also a form or a contact, registration of the date of the notice, inspection of the goods, the refund and restoration of stock; if those actions live in one employee’s memory, the store works only for as long as that person is available.

A store without its own warehouse is still the seller’s process

A store can be run without its own physical warehouse, for example by shipping the goods from a distributor or a manufacturer, and that reduces the need to hold stock, but it does not cancel the seller’s responsibility towards the buyer. If the contract is concluded with your company, your company is still responsible to the buyer for performing it, not the supplier.

In this model, availability information is critical, and if the supplier provides a data feed or an application programming interface, you have to agree how often it is refreshed, how errors are handled, and what happens if the connection drops. A five-minute delay can matter for a last unit that sells quickly, but for a catalogue with slow stock movement it can be acceptable. The frequency of synchronisation has to be set from stock movement and from the company’s risk, and you also have to agree whether, during a connection error, the product is hidden, left on sale, or passed to a manual check.

Distinguish the store’s internal stock records from a warehouse module or an external integration: WooCommerce’s core features can store a quantity for each product and variant, reduce it after an order and prevent an out-of-stock product from being ordered, and that can be enough for one catalogue maintained in the store itself. A warehouse module becomes necessary when the main stock figure lives in another system, there are several storage locations, or several sales channels have to be kept in sync.

Before launch, play through a situation in which the supplier cannot fulfil the order even though the product still appears available on the store screen, and decide who receives the notification, how quickly the buyer is contacted, whether an alternative is offered, and how the refund is made. This scenario does not make the model a bad one; it turns an unexpected complication into a risk you can manage.

Can you create an online store for free?

Creating an online store for free can mean several different things, for example a free design template, open-source software, a trial plan or a shop window on a social network. These tools can reduce the initial licence fee and help you test whether people are interested in the offer, but they do not cancel the work on product data, payments, delivery, terms, security and day-to-day administration.

If you build the store yourselves, start with the smallest process you can carry out correctly, because one language, a small catalogue, one payment method and one delivery method let you test demand without taking on the maintenance of complex integrations. Even in that version the buyer has to see the correct price and delivery terms, the order has to reach the admin, and you have to be able to send the goods and handle a withdrawal.

Costs usually appear where the free tool ends: on the domain and hosting, payment commissions, paid plugins, data import, design adaptation, maintenance and your own time, so compare not only the monthly subscription, but also the hours that will go on the catalogue, on fixing errors and on updates. Already at the trial stage, write down the repeating work, because a free tool can be economical only for as long as manual servicing does not eat the licence fee you saved. If you perform one manual action for five orders, it can be justified; for five hundred orders it is already a measurable cost line.

Professional help becomes a rational choice when a mistake costs more than the implementation, or when the process no longer fits inside one person’s working day, and mismatched stock figures, several languages and price groups, repeated manual data checks, or integrations with accounting and suppliers can all be signs of that limit. A store built with your own resources is not a failure, and bringing in a developer is not a compulsory next step; the decision is set by the complexity of the process and by the company’s ability to maintain it. The team needs a person who regularly checks updates, backups, security notices and error logs, and you have to be able to restore the buying process after plugins are updated and to document the solution so that the store does not depend on one employee’s spare time.

Regardless of who does the work, the domain, hosting, payment-service and delivery accounts have to be under the company’s control, not tied to one employee’s or an outside specialist’s personal address; write down where access is stored, who may confirm payments, and how access is restored when the person responsible is away. In a project you build yourselves this arrangement is just as important as it is with an outside contractor, because administration rights on the platform do not yet mean control of the domain, the server and the contracts with external services.

Content and migration have to be prepared before development ends

A store project is often delayed not by code, but by missing product data, images and decisions, so decide who in the company supplies content, who approves it, and which fields are mandatory, and every intermediate result needs a date. A developer can create a field for a description, but cannot decide in the company’s place what you may promise about a product.

Images need a consistent proportion, sufficient resolution and the right to use them; check file names, alternative texts, and which picture belongs to a particular variant. If a supplier changes image addresses without warning, an external link can disappear, so the safer process is usually to import and optimise images in a controlled way in the store environment, keeping the link to the product identifier.

In a migration, products, categories, customers, order history, coupons, content and files have to be listed separately, because not everything may or should be moved, and historical customer data also has to be assessed from the point of view of data protection and retention periods. Before the full migration, run a trial with a small data set, compare record counts and fields, and only then set the moment from which the old system is no longer changed; after the final import, prepare a report on missing records, duplicates, and values the new system has interpreted differently.

When you change the site, prepare a map of old and new addresses, because an address without a redirect takes the user and the search engine to a page that does not exist, and a redirect by itself does not guarantee previous search rankings, though it does help keep a logical path and pass signals to the matching new page. After launch, check the most important product and category addresses, not only the home page.

Run a full acceptance test before launch

In the acceptance test, use a realistic buyer scenario with a specific product: open the store on a phone, find the product by search or category, choose a variant, put it in the cart and change the quantity, then check the price with taxes, the intended discount and delivery. Continue through checkout, pay, and read every screen and email.

Continue the test in the admin: check the order status, the stock reduction on the exact variant chosen, the address, the parcel locker and the buyer’s note, create the shipment, send the tracking information and complete the order. Finally, process a withdrawal and a refund, because a full cycle often shows that each function works on its own, but information is not passed from one function to another.

Repeat a shorter test with errors: an invalid coupon, an unavailable variant, an interrupted payment, an address outside the delivery zone, and the last unit of a product, and the error message has to explain the next step, while the system must not leave an incorrect reservation. The result of the test needs not only a list of faults, but a decision about which faults block launch. For each fix, name the person responsible, the date of the re-test and the evidence of acceptance, then make sure the fault no longer appears on a phone or in a desktop browser.

Check privacy and analytics settings as well, because optional analytics, advertising or other tracking scripts that need consent must not start before the relevant choice, and the check has to be done after refusal and after withdrawal of consent too. The technical actions the order needs must not, in turn, stop working if the buyer refuses analytics.

At launch, assign the people responsible and prepare an action plan for failure, deciding who checks payments, delivery and content, whom to tell about a critical error, and what to do if payments cannot be taken or prices are wrong. Sometimes the safer decision is to pause ordering for a time, rather than collect orders you cannot fulfil. In the launch check, compare the configuration of the test and public environments, the payment keys, the delivery accounts, the tax settings and the email sender, because a successful test in another environment does not yet prove that the same conditions work in the store the buyer can reach.

Administration and maintenance start before launch

The store administrator is not an abstract role assigned after the project is handed over, so before launch decide who has the right to change prices, publish products, make refunds and see customer data, because not every person needs every right. A content editor usually does not need to change payment settings, and warehouse staff do not need to see more customer information than is required to prepare a shipment.

Agree how updates to the system, plugins and integrations are installed, which must not reach the publicly available store for the first time on a Friday afternoon only because a notice has appeared in the admin panel. You need a backup, a test environment, and a person who after the change runs a short purchase test, because an update can touch not only appearance, but also payment, delivery and email integrations.

Decide who notices that payment notifications no longer reach the store, that the shipment interface answers with an error, or that the number of failed orders rises sharply. A call from the buyer must not be the first signal of a fault. At least the critical integrations need an error log and a notification to the person responsible, and the team needs an incident-handling procedure that states where the decision about a temporary workaround is stored and by what criterion restoration of the service is checked.

In the first weeks, measurements have to answer process questions, not only count visits, so compare purchases started and completed, payment errors, delivery choices and the reasons for customer support. If many people stop at one stage, first check a technical or content obstacle before you conclude that the market has no demand.

What to prepare before talking to a developer

For the first conversation to be productive, prepare one sample product, one complete order scenario and one exception, and add the approximate number of products and variants, the languages, the countries, and the payment and delivery methods. If there is an existing website, say what you want to migrate and which systems the store has to exchange data with; you do not have to know the technical solution, but you do have to be able to show the company’s work.

Name separately the requirements that have to be in the first launch, and the ideas that may wait: the basic payment and delivery process is usually a launch requirement, whereas a complex loyalty programme can be the next stage if an order can be accepted and fulfilled correctly without it. This split protects the budget better than striking features at random, because each deferred piece of work keeps a named reason, a dependency, and a moment when the decision has to be revisited after real order data.

A sample product, an order scenario and an exception are enough for an online store project discovery to set a clear, testable scope, as well as a timeline and a price. In the quote, ask not only for feature names, but also for boundaries: who prepares the data, who configures the external service, and after which test the work is accepted.

If you already have a catalogue or a process sketch, the next step is to review it with someone who can assess the technical dependencies, and if there is no sketch yet, we can start by making one and say what you do not need to build in the first version. Requesting an online store project discovery is valuable before you choose a platform, because then the price is set by a clearly defined scope, not by assumptions about what the word “store” ought to include. Both sides already need to understand, before development, what testable result will show that the project is finished.

ES
Edijs Stikuts
Owner · Webmasters
Drafted with AI assistance; fact-checked and approved by Edijs Stikuts.
Get in touch →
FAQ

Frequently asked questions.

Where do I start when creating an online store?

Start with one complete order scenario, not with a platform choice. Describe a specific product, price, payment, stock change, delivery and a possible withdrawal, then add one error situation, for example an interrupted payment or an unavailable last unit. From that description you can determine the functions, integrations and people responsible, and only then choose the technical solution on a sound basis.

Does a WooCommerce store necessarily need a warehouse module?

No. WooCommerce’s core inventory features can store a quantity for each product and variant, reduce stock after an order, hold the goods for a set time and prevent an out-of-stock product from being ordered. That can be enough for one catalogue maintained in the store itself. A warehouse module or an integration is needed when the main stock figure lives in another system, there are several storage locations, or several sales channels have to be kept in sync.

What should the order button on an online store say?

If a consumer places an order electronically with a button or an equivalent action, it must indicate unambiguously that the order creates an obligation to pay. Immediately before the order, the key information required by the rules in force and the final amount must also be shown. A distance contract can also be concluded by email or by other means of distance communication, so the absence of a button does not cancel the seller’s duties to inform, deliver and honour the right of withdrawal.

Is an online store without its own warehouse a simpler project?

It can reduce the investment in stock, but technically you still need reliable availability information from the supplier and clear error handling. If your company is the seller, it remains responsible for the information, delivery, withdrawal and refund. Before launch you also have to test the situation in which the supplier says the product shown in the store is not, after all, available.

What must I check before launching an online store?

Run a full purchase on a phone with a realistic product and delivery, then check the order status, stock, emails, creation of the shipment, withdrawal and refund. Separately try a failed payment, an unavailable variant and an address outside the delivery zone. Check that the buyer sees the final amount and the obligation to pay before ordering, and that optional tracking scripts respect the consent choice.

RELATED SERVICE
E-commerce development

A store that sells, not just one that looks good. WooCommerce or Laravel from scratch — with Omniva, DPD and payments that work from day one. B2C, B2B and hybrid stores with stock levels synced in real time, multilingual and multi-currency operation, B2B pricing tiers and Core Web Vitals in the green.

Learn more →