An online store is the rare piece of software where the definition of success is unambiguous. It either takes money from people who want to give it, or it does not. Everything else — the framework, the design system, the admin panel — matters only insofar as it moves that number. Yet most e-commerce projects spend their budget on the parts customers never see and starve the three screens where every order is won or lost.
This guide covers building an online store that converts: the architecture underneath, the performance work that pays for itself, the catalogue and checkout decisions that quietly cost or earn you percentage points, and the operational reality of payments, tax and fraud. It is written for engineers and technical founders, and it assumes no prior commerce experience.
What you will learn
- The anatomy of a commerce system and which parts you should never build yourself
- How platform choice actually constrains you — and when it stops mattering
- Why performance is a conversion feature, with the numbers that matter
- Catalogue, search and merchandising decisions that change revenue
- A checkout design that removes the standard reasons people abandon
- Payments, tax, fraud and the operational work that starts after launch
- What a store is made of
- Choosing a platform without regret
- Architecture patterns: monolith, headless and composable
- Performance is a conversion feature
- Catalogue, search and merchandising
- The product page
- Cart and checkout, step by step
- Payments, tax and compliance
- Fraud, abuse and chargebacks
- Measuring what matters
- Nine mistakes that cost real money
- Order lifecycle and the operations behind the button
- Content, SEO and the traffic that does not cost per click
- Frequently asked questions
1. What a store is made of
Every commerce system, whatever its badge, contains the same nine capabilities. Knowing them is what lets you evaluate any platform in an hour rather than a month.
| Capability | What it owns | Build it yourself? |
|---|---|---|
| Catalogue | Products, variants, attributes, media, categorisation | Rarely — but you will customise the model |
| Pricing | Base price, currency, tiers, promotions, tax treatment | No, but understand it deeply |
| Inventory | Stock levels, reservations, backorders, multi-location | Only if your fulfilment is unusual |
| Cart | Line items, applied promotions, calculated totals | No |
| Checkout | Address, shipping choice, payment, order creation | Customise the UI, never the money path |
| Payments | Authorisation, capture, refunds, disputes | Never |
| Orders | State machine from placed to fulfilled to returned | Sometimes — it encodes your operations |
| Customers | Accounts, addresses, order history, consent | No |
| Fulfilment | Picking, shipping, tracking, returns | Integrate; the warehouse rarely bends |
The rule underneath the table: never build the money path. Card handling, tokenisation, 3-D Secure, dispute flows and the compliance obligations behind them are solved problems with enormous downside risk. Use a payment provider's hosted or embedded elements, keep raw card data out of your systems entirely, and spend your engineering effort on the parts that differentiate you.
2. Choosing a platform without regret
The market splits into four categories, and the choice is mostly about how unusual your business is.
| Category | Examples of fit | Strength | Where it hurts |
|---|---|---|---|
| Hosted SaaS | Standard retail, fast launch, small team | Nothing to operate; payments, tax and PCI handled | Constrained data model; platform fees; limited deep customisation |
| Open-source, self-hosted | Complex catalogues, B2B rules, regulated markets | Total control; no revenue share | You own hosting, security, upgrades and performance |
| Headless commerce | Multi-channel, custom front-ends, content-led brands | Front-end freedom; commerce logic still bought | Two systems to keep in step; more moving parts |
| Fully custom | Marketplaces, subscriptions with unusual billing | Fits the business exactly | You have signed up to build tax, fraud and returns |
Three questions settle it faster than any feature matrix. How unusual is your pricing? Standard prices and discounts fit any platform; contract pricing per customer, bundles with component stock, or usage-based billing eliminate most hosted options. How unusual is your fulfilment? Ship-from-store, made-to-order, digital delivery and split shipments each strain a standard order model. How many channels? One website suits a monolith; web plus app plus marketplace plus in-store points at headless.
The honest defaultFor most new stores, a hosted platform with a well-built theme will outperform a custom build for the first two years — not because it is more capable, but because it forces you to spend your time on merchandising, photography, copy and shipping economics, which is where early revenue actually comes from. Migrate when a specific, quantified constraint blocks you, not in anticipation of one.
3. Architecture patterns: monolith, headless and composable
The integrated monolith
Storefront, admin and commerce logic in one application. Fewer moving parts, simpler deployment, and every feature works together because it was designed together. The constraint is the templating layer: when the design brief exceeds what the theme system supports, you fight the framework on every screen.
Headless
The storefront is a separate application calling commerce APIs. You gain complete front-end freedom, the ability to serve web and app from one back end, and independent deployment of the customer-facing layer. You take on API latency in the critical path, cache invalidation as a first-class problem, and the loss of any admin preview that assumed a coupled front end.
Headless earns its cost when the front end is genuinely differentiating or when multiple channels share commerce logic. It is expensive theatre when applied to a single conventional storefront.
Composable
Best-of-breed services for search, promotions, content, payments and order management, stitched together. Powerful for large operations with genuinely specialised requirements, and unforgiving for small teams: every seam is an integration to build, monitor and upgrade, and failures become distributed.
The rendering decision
Whatever the shape, one decision affects revenue directly: how pages are rendered. Product and category pages should be server-rendered or statically generated, because search engines and first-paint speed both depend on it. Cart and account pages can be client-rendered — they are behind an interaction and rarely need indexing. A store where the product page is an empty shell until JavaScript loads is leaving both organic traffic and conversions on the table.
4. Performance is a conversion feature
Speed is not an engineering vanity metric in commerce. Slower pages measurably reduce completed orders, and the effect is strongest on mobile and on poor connections, which is where a growing share of traffic lives.
The budget that matters
| Metric | Target | Why it affects revenue |
|---|---|---|
| Largest contentful paint | Under 2.5s | When the product image appears; before that the page feels broken |
| Interaction to next paint | Under 200ms | Tapping "add to cart" must respond immediately or people tap twice |
| Cumulative layout shift | Under 0.1 | Shifting layouts cause mis-taps — often on the wrong variant |
| Time to first byte | Under 600ms | Everything downstream inherits this delay |
| JavaScript shipped | Under 200KB compressed | Parsing cost dominates on mid-range phones |
Where the wins actually are
- Images. Usually the largest payload on any store. Serve modern formats, generate responsive sizes, set explicit dimensions to prevent layout shift, and lazy-load everything below the fold except the main product image, which must load eagerly.
- Third-party scripts. The most common cause of a slow store. Analytics, chat widgets, review platforms, heat maps and four abandoned tags nobody remembers adding. Audit them quarterly, load them after interaction where possible, and require an owner and a justification for each.
- Caching layers. Category and product pages are read overwhelmingly more often than they change. Cache aggressively at the edge, and invalidate on the specific events that matter — price change, stock transition, content edit — rather than on a timer.
- Fonts. Subset them, preload the one used above the fold, and always specify a fallback so text is readable while the custom font loads.
A useful discipline: set a performance budget in the build pipeline and fail it. Without a gate, page weight only ever increases, because every individual addition is small and reasonable.
5. Catalogue, search and merchandising
Model variants properly, once
The most consequential data decision in any store is how products and variants relate. A product is what a customer conceives of ("this jacket"); a variant is what ships and has stock ("this jacket, navy, medium"). Price, stock, weight, barcode and images belong to the variant; name, description and category belong to the product. Getting this wrong produces years of workarounds, because every downstream system inherits the mistake.
Search is a revenue system
Visitors who use search convert at a substantially higher rate than those who browse — they have already declared intent. That makes bad search unusually expensive. A search that works needs typo tolerance, synonyms tuned to your customers' vocabulary rather than your internal terminology, filters generated from real attributes, and a genuinely helpful empty state that suggests alternatives instead of apologising.
The highest-value maintenance task in commerce is reading your zero-result search queries weekly. Every one is a customer who wanted to buy something and could not find it, and the fix is often a synonym or a category name rather than new inventory.
Merchandising rules
Default sort order on a category page has a direct effect on revenue. "Newest first" is rarely right; a blend of popularity, margin and availability usually beats it. Whatever you choose, ensure out-of-stock items sink rather than surface, and never let a filter combination produce an empty page without offering a way back.
6. The product page
This page does more work than any other. It must answer, quickly and without scrolling to hunt: what is this, what does it cost, will it fit, when will it arrive, and what happens if it is wrong.
| Element | What it must do | Common failure |
|---|---|---|
| Imagery | Show scale, texture and the product in use | One catalogue shot on white |
| Price | State final price including tax treatment | Surprise costs revealed at checkout |
| Variant selection | Show what is unavailable rather than hiding it | Silently missing options that look like a bug |
| Delivery | Give a date, not a duration | "Ships in 3–5 business days" |
| Returns | State the policy where the decision is made | A link in the footer |
| Social proof | Reviews with substance, including critical ones | Only five-star reviews, which reduce trust |
| Add to cart | Respond instantly and confirm clearly | A silent action that leaves people unsure |
Two implementation details matter more than they look. Changing a variant should update price, images, stock and the URL without a full page reload, so the selection is shareable. And the add-to-cart action should be optimistic — update the interface immediately, reconcile with the server afterwards, and roll back visibly if it fails. Waiting a second for a spinner on the single most important button on the site is an avoidable loss.
7. Cart and checkout, step by step
Roughly seven in ten carts are abandoned. Most of that is browsing behaviour and cannot be recovered, but a meaningful slice is self-inflicted: costs revealed late, forced account creation, too many fields, and payment methods people do not use.
The cart
Show the full cost picture as early as honestly possible — including shipping estimate and tax treatment. Make quantity changes instant. Show stock warnings before checkout rather than during it. If you offer free shipping above a threshold, show the remaining amount; it is one of the few genuinely effective nudges because it is useful information rather than pressure.
Checkout, in order
- Never force account creation. Guest checkout with an optional "save these details" at the end converts better and produces the same account.
- Ask for email first. It enables abandoned-cart recovery and lets you recognise returning customers.
- Use address lookup. Fewer fields, fewer typos, fewer failed deliveries.
- Show shipping options with dates and prices together. The choice is always a trade-off between the two.
- Offer the payment methods your market actually uses. Cards, digital wallets, and the local methods that dominate in your regions. Wallets are especially valuable on mobile because they eliminate typing entirely.
- One page or several — but always show progress. The number of steps matters less than knowing how many remain.
- Never lose entered data on an error. A validation failure that clears the form is among the most reliable ways to lose an order.
The one thing that must never break
Order placement must be idempotent. A customer on a train taps "pay", the connection drops, and they tap again. Without an idempotency key, you have charged them twice and created two orders. Generate a unique key when checkout begins, send it with the payment request, and have the server behave as follows:
| Situation | Correct behaviour |
|---|---|
| First submission with a given key | Process normally, create one order, store the result against the key |
| The same key replayed with the same cart | Return the original order and payment result — no second charge, no second order |
| The same key with a different cart | Reject with a conflict, because the client has a bug that would otherwise be silent |
| A key never seen again | Expire it after a day or two; keys are a retry safety net, not a permanent record |
8. Payments, tax and compliance
Authorisation and capture
Payments have two phases. Authorisation reserves funds; capture takes them. Capturing at order placement is simplest and correct for digital goods and immediate fulfilment. Authorising at placement and capturing at dispatch matches physical retail better and avoids refunds for items that turn out to be unavailable — but authorisations expire, typically within about a week, so long lead times need re-authorisation logic.
Strong customer authentication
In several major markets, card payments require an additional verification step. Your checkout must handle a challenge appearing mid-payment, the customer completing it in a separate context, and the result arriving asynchronously. Design for this from the start; bolting it on later means rewriting the payment state machine.
Tax
Tax is the requirement most likely to be underestimated. Rates depend on what is being sold, where the buyer is, where you are established, and whether they are a business. Cross-border digital sales, marketplace rules and registration thresholds all add cases. Use a tax service; the compliance cost of getting it wrong far exceeds the subscription, and the rules change without asking your opinion.
Data obligations
Collect only what you need, state why, and honour deletion requests — while retaining what tax law requires you to keep, which is often longer than customers expect. Keep marketing consent separate from transactional email. Store no raw card data, ever; if your systems never touch it, an entire category of risk disappears.
9. Fraud, abuse and chargebacks
Fraud is a business decision disguised as a technical problem. Blocking everything suspicious also blocks legitimate customers, and over-blocking costs more than the fraud in most honest stores.
- Score, do not just block. Approve low-risk orders automatically, review the middle band manually, and decline only the clearly fraudulent.
- The signals that matter most are mismatches: billing and shipping in different countries, an account created minutes before a large order, many cards on one account, and unusual velocity from one address.
- Promotion abuse is more common than card fraud. Limit codes per customer, per card and per address, and validate at redemption rather than only at generation.
- Instrument disputes. Track your dispute rate as a first-class metric; processors intervene above a threshold, and the intervention is unpleasant.
- Keep evidence automatically. Delivery confirmation, device and address data at order time, and the terms accepted. Winning disputes depends on evidence you collected before you knew you needed it.
10. Measuring what matters
| Metric | Definition | What moves it |
|---|---|---|
| Conversion rate | Orders divided by sessions | Speed, product page clarity, checkout friction |
| Add-to-cart rate | Sessions reaching the cart | Search quality, imagery, price transparency |
| Checkout completion | Orders divided by checkout starts | Payment options, unexpected costs, form design |
| Average order value | Revenue divided by orders | Bundling, thresholds, relevant recommendations |
| Return rate by product | Returns as a share of units | Sizing guidance and accurate imagery |
| Zero-result search rate | Searches returning nothing | Synonyms, catalogue gaps, naming |
| Repeat purchase rate | Customers ordering again within a period | Delivery experience, product quality, service |
Segment everything by device. Mobile typically carries most of the traffic and converts at roughly half the desktop rate, and a blended number hides where the problem is. When a change appears to improve conversion, check basket composition too — discounting improves conversion and can reduce profit at the same time.
11. Nine mistakes that cost real money
- Revealing shipping cost only at the final step. The single most cited reason for abandonment, and entirely avoidable.
- Forcing account creation. A pure friction tax on first-time buyers, who are exactly the ones you cannot afford to lose.
- Modelling variants as separate products. Fragments stock, ratings and reporting forever.
- Unaudited third-party scripts. The most common cause of slow stores, and the easiest fix.
- Non-idempotent order placement. Double charges destroy trust faster than any bug.
- Hiding out-of-stock variants. Looks like a broken interface; showing them unavailable with a notify option keeps the intent.
- Ignoring zero-result searches. Free, specific demand signal that most stores never look at.
- Treating tax as an afterthought. Retrofitting correct tax handling touches pricing, checkout, invoicing and reporting simultaneously.
- Optimising the homepage. Most revenue enters through product and category pages from search and ads; the homepage is often the least valuable page to redesign.
12. Order lifecycle and the operations behind the button
Most e-commerce writing stops at the payment confirmation. In practice, the order state machine is where a store's engineering quality is really tested, because it is the part that touches warehouses, couriers, customer service and accounting simultaneously.
A workable state model has fewer states than teams expect and more transitions. An order is placed when payment is authorised and the order record exists. It becomes confirmed when stock is genuinely allocated, which may be seconds or hours later. It moves to fulfilling when the warehouse accepts it, shipped when a carrier scans it, and delivered on confirmation. Along the way it can be cancelled, partially shipped, returned or refunded, and several of these can apply to individual lines rather than the whole order.
Three design rules prevent most of the pain. First, model state at the line level, not the order level; the moment one item is out of stock, an order-level state becomes a lie. Second, make every transition an event with a timestamp and an actor, so customer service can answer "what happened to my order" without guessing. Third, never let the customer-facing status be computed by a separate piece of code from the internal one — two sources of truth about an order's state produce support tickets forever.
The integrations around this are where reality intrudes. Warehouse systems are frequently batch-based and will not accept real-time calls. Carrier tracking updates arrive late, out of order, and occasionally for orders you did not send. Accounting needs an immutable record even when an order is later corrected. Build every integration to be replayable and idempotent, keep the raw payload of every message you receive, and assume that any external system can send you the same event three times.
Returns deserve explicit design rather than being treated as an exception path. They are a normal part of retail, they are a large share of customer service volume, and the ease of the return process is one of the strongest predictors of whether someone orders again. A self-service return that produces a label without a conversation is expensive to build once and cheaper than the phone calls forever after.
13. Content, SEO and the traffic that does not cost per click
Paid traffic is the fastest way to test a store and the most expensive way to run one. Organic traffic compounds, and its technical requirements are largely an engineering responsibility rather than a marketing one.
Rendering. Product and category pages must return meaningful HTML on the first response. Search engines increasingly execute JavaScript, but doing so is slower and less reliable than reading server-rendered markup, and the same first-paint advantage that helps crawlers also helps customers on slow connections.
URL and canonical discipline. Filters and sort orders generate combinatorial URLs, most of which should not be indexed independently. Decide which faceted pages are genuinely valuable landing pages, allow those, and canonicalise the rest. Left unmanaged, this creates thousands of near-duplicate pages that dilute the value of the ones you care about.
Structured data. Marking up products with price, availability and review data enables richer search results that measurably improve click-through. It is a small, well-specified engineering task with an unusually direct commercial return, and it must be kept accurate — marking an out-of-stock item as available is worse than no markup at all.
Content that answers pre-purchase questions. Buying guides, sizing information, comparison pages and genuinely useful care instructions attract people earlier in their decision, and they reduce returns by setting accurate expectations. This is the one area where an e-commerce team's writing effort reliably outperforms additional feature work.
Do not break what already ranks. Replatforming without a comprehensive redirect map is among the most expensive mistakes in commerce: traffic that took years to earn disappears in a week. Every old URL needs a permanent redirect to its nearest equivalent, and the map should be tested before launch rather than discovered from analytics afterwards.
14. Frequently asked questions
Hosted platform or custom build for a new store?
Hosted, in almost every case. The first two years should be spent learning what customers want, which products sell, and what shipping actually costs — none of which is an engineering problem. Move to something more custom when you can name the specific constraint blocking you and quantify what removing it is worth.
Is headless worth the extra complexity?
Only when the front end is genuinely differentiating or several channels share the same commerce logic. Headless buys design freedom and multi-channel reuse; it costs you cache invalidation, API latency in the critical path, and two systems to keep aligned. A conventional single storefront rarely recovers that cost.
How much does a one-second improvement in load time gain?
Published figures vary widely because they depend on baseline speed, device mix and category — improvements from a very slow baseline matter far more than shaving time off an already fast site. The reliable way to know is to measure your own funnel by device and connection speed. What is consistent across studies is direction: faster converts better, and mobile is where the gap is widest.
How do we handle inventory across several sales channels?
Pick one system as the source of truth and push from it; reconciling two authoritative systems is a losing game. Reserve stock at checkout start with a short expiry rather than at payment, so two customers cannot buy the last item simultaneously. Decide the oversell policy in advance — cancel with an apology and a discount, or backorder with a clear date — because it will happen.
Do product reviews actually help?
Yes, and more than most teams expect — but only when they are credible. A page of exclusively five-star reviews reduces trust; a mix including specific criticism increases it. Reviews also produce the sizing, fit and durability information your product copy does not, which reduces returns. The main cost is moderation, which is ongoing.
What about subscriptions and recurring billing?
Treat it as a different product with a different failure mode. The hard parts are not charging cards; they are dunning when a card expires, proration when a plan changes mid-cycle, pausing, and the state machine covering trial, active, past-due, cancelled and reactivated. Buy this capability unless recurring billing is your product.
How important is site search for a small catalogue?
Less important below roughly a hundred products, where good category navigation carries most of the load — but still worth doing well, because searchers convert at a much higher rate. Above a few hundred products, search becomes the primary navigation method and deserves dedicated investment.
What should we build first?
The narrowest complete path to revenue: a small catalogue with genuinely good imagery, a fast product page, guest checkout with one card provider and one wallet, honest delivery dates, and order confirmation email. Then instrument the funnel and fix whichever step leaks most. Everything else — wishlists, loyalty, recommendations, personalisation — is an optimisation of a machine that must first work.
Key takeaways
- Never build the money path. Payments, tax and card handling are bought, not written.
- Speed is revenue. Set a performance budget, enforce it in the pipeline, and audit third-party scripts relentlessly.
- Model variants correctly on day one. It is the data decision you cannot cheaply undo.
- Show the full cost early. Late surprises are the leading cause of abandoned checkouts.
- Make order placement idempotent. Assume the network fails at the worst possible moment, because it will.
- Read your zero-result searches. The cheapest recurring source of revenue insight any store has.
A high-converting store is not a design achievement. It is the accumulated result of removing small frictions from a path people already wanted to walk — and then refusing to let those frictions creep back in.
Enjoyed this article?
Get more engineering insights from ELIVTECH — or talk to us about your project.
Get in touch