Service · E-Commerce
A store built around how you sell, not around what a platform will let you do
Shopify charges a cut of every sale. WooCommerce breaks every time WordPress updates. A custom-built store has no transaction fees, no plugin maintenance nightmares, and no checkout locked behind a $2,300/month plan. You own the code, you own the customer data, and you can hand it to any developer at any time. Starting at $2,800–$5,000.
What a store built to sell needs
Every one of these is a place where a rushed build, a boxed platform, or a generic template leaves money on the table.
Individual pages per product category
A single "shop" page that lists every product you sell won't rank in Google for specific product searches. A shopper searching for "handmade soy candles" or "sterling silver hoop earrings" needs to land on a page built around that exact phrase. Category pages targeting specific product types rank independently in search results, each with its own headline that Google uses in search results and its own description summary. Google also gets behind-the-scenes labels telling it exactly what kind of products are on each page. They also make the shopping experience faster for people who already know what they want — a customer looking for candles shouldn't scroll past your entire gift and home goods catalog to find them. For small collections under 20 products, one well-organized catalog page can work. For anything larger, individual category pages are worth the structure because they pay off in search traffic and in converting the visitors who land there.
A checkout designed around your selling model
Platforms give you a checkout you adapt your business to. A custom build gives you a checkout designed around how you actually sell. If you sell physical goods with different shipping weights, the checkout captures the address first and calculates real carrier rates before asking for payment. If you sell digital downloads, there's no shipping step — the download link goes out automatically after payment confirms. If you sell a mix of made-to-order and in-stock items, the checkout communicates different fulfillment timelines per item in the same cart. Shopify's checkout is locked to their template unless you're on Shopify Plus at $2,300 per month. With a custom build, the checkout behavior is specified up front and built to match — no plan upgrade required to unlock the way you need it to work.
Secure payment processing with no platform taking a cut
Stripe integration covers every major card type, Apple Pay, Google Pay, and subscription billing. PayPal and Square are also available. The payment forms are hosted directly by the processor, so card data is never stored on your server — your legal liability for handling payment data is minimal by design, and you're not required to undergo an annual security audit. Order confirmation emails, refund records, and failed payment retry notices are all handled automatically by the processor. The key difference from Shopify is straightforward: no platform transaction fee on top of your processor's rate. Shopify charges 0.5–2% of every sale on top of the standard ~2.9% processor fee if you use any payment processor other than Shopify Payments. On $250,000 in annual sales, that's $1,250–$5,000 per year paid to Shopify for the privilege of not using their payment processor.
An order and inventory system your team can use on day one
The admin panel is built for the person actually running the store, not for a developer. Order management shows the full fulfillment queue, lets you filter by status or date, mark orders as shipped with tracking numbers, and process refunds — all in plain English, no technical knowledge required. Inventory tracks per-SKU quantities and decrements automatically when an order comes in. Products with variants (size, color, material) each track their own inventory independently. A low-stock alert emails you when any item drops below a threshold you set so you're not blindsided by selling out. For stores with a team, staff accounts with role-based permissions let a fulfillment employee update order status without having access to pricing or financial reporting.
Customer accounts that make repeat purchasing frictionless
Returning customers who can check out with a saved address and see their order history in one place are more likely to come back than customers who have to re-enter their information every time. The account system covers registration, login, password reset, and saved addresses. Guest checkout runs alongside account creation — first-time buyers aren't required to register before they've decided to trust you. Account creation is offered after the purchase completes, where it feels helpful rather than like a gate. All customer data sits in your database: purchase history, addresses, account records. If you ever switch hosting providers or bring on a different developer, the entire customer database exports cleanly. No platform permission required, no data portability request, no risk of your customer list being held hostage on a subscription you're trying to leave.
Product information in Google search results
Behind-the-scenes labels tell Google exactly what information is on each page and how to display it. For product pages, that means Google can show your price, stock availability, and review count directly in search results — before a shopper clicks through. This matters because shoppers are far more likely to click a result that shows the price and availability upfront compared to a plain blue link with no details. Every product page in a custom build gets these labels as a default, not an add-on. Category pages get labels that tell Google how your site is organized, so the breadcrumb trail appears correctly in search results. When you offer filtered views or pagination of products, a special signal prevents Google from treating each variation as a duplicate page that dilutes your search ranking. The sitemap file — the map telling Google what's on your site — updates automatically as products are added or archived. These aren't things to configure later — they're in the build from the start.
Fast load times and a mobile shopping experience that converts
Most online shopping happens on a phone. A checkout that requires zooming, horizontal scrolling, or fighting with small tap targets loses sales at the exact moment when the customer was ready to pay. A custom-built store loads in under a second on standard hosting, whereas stores built on page-builder platforms often load in 3–5 seconds on mobile because they include so much extra code running behind the scenes. The mobile checkout is tested on actual iOS and Android devices: tap targets are sized for thumbs, form fields trigger the right keyboard automatically (number pad for card numbers, email keyboard for email addresses), and product images load at the right resolution for the screen size so the page doesn't feel slow on mobile data. This is how the store is built, not a feature to optimize later.
Why your checkout loses sales (it's not the price)
Cart abandonment sits at around 70% across all e-commerce categories. That means roughly seven out of every ten shoppers who add a product to a cart don't complete the purchase. Most store owners attribute this to price sensitivity or indecision. The data tells a different story: the majority of abandonment is caused by checkout friction, not buyer hesitation. These are fixable design problems, not market problems.
The single biggest abandonment trigger across all checkout research is forced account creation before payment. Shoppers who arrive at a checkout and are required to create an account before they can proceed drop off at a staggering rate — particularly on first purchases from a store they've never used. They came to buy a product, not to manage a relationship with your brand. Eliminating forced registration and offering guest checkout as the primary path, with optional account creation at the end of a successful purchase, consistently lifts checkout completion rates. The person who just had a successful purchase experience is the right time to invite an account — not the person still deciding whether to trust you.
The second-largest trigger is surprise shipping costs revealed at the final step. A shopper who adds a $45 item to the cart, goes through the checkout process, and then sees a $12 shipping charge appear for the first time at the payment step feels tricked — even if the charge is reasonable. Showing estimated shipping on the cart page, offering flat-rate shipping that's visible on product pages, or qualifying free shipping at a threshold visible in the cart reduces the "surprise" effect that causes last-second abandonment more than almost any other single factor.
The third trigger is a checkout that looks untrustworthy at the payment step. When the URL changes to something the shopper doesn't recognize, there's no visible SSL padlock, or the card form has no branding from a processor they know — Stripe, PayPal, Visa — shoppers who have been burned by fraudulent stores before (and many have) bail immediately. A checkout using Stripe's hosted payment fields shows Stripe's branding at the card entry step. Payment logos (Visa, Mastercard, Apple Pay) visible at the payment step signal that this is a normal, legitimate transaction environment. An order summary review screen before the final "Place Order" click lets shoppers confirm what they're buying before committing. These aren't aesthetic details — they're the mechanics of trust at the moment that determines whether revenue lands.
What this means in practice: a well-built custom checkout eliminates all three of these friction points as defaults. Guest checkout is primary. Shipping cost is visible before the payment step. The payment UI uses Stripe's hosted fields with recognizable branding. The order confirmation page and confirmation email look like they came from a professional business. None of this is complicated — but it requires a checkout built with conversion in mind, not a platform template where these behaviors are locked behind a higher-tier subscription.
Where e-commerce stores lose customers in the purchase journey
Understanding where a customer drops off tells you exactly what to fix. The purchase journey for an online store follows a predictable path: find the store, land on a product or category, decide whether to trust it, add to cart, go through checkout, complete the purchase. Each step has drop-off, and most of that drop-off is caused by something a better-built store would have handled differently.
Search and land. A shopper searches for what they want and either finds you or doesn't. If your store shows up for "custom ceramic mugs," the shopper should land on a ceramic mugs category page — not your homepage, not a generic shop page. When the search result promises one thing and the landing page delivers something different, the shopper bounces immediately. Dedicated category and product pages with search-targeted titles fix this by matching the landing destination to the query. This is why category page structure matters as much for conversion as it does for SEO.
Assess the product and trust the store. Once they land, they're running two parallel evaluations: is this the right product, and is this a legitimate store? The product evaluation depends on your product photography, descriptions, and how clearly you answer practical questions (dimensions, materials, what's included, how long it ships). The trust evaluation happens through signals the site either has or doesn't: SSL padlock, visible return policy link, recognizable payment logos in the footer or on the product page, professional design that doesn't look like a template they've seen on ten other stores. A store that fails the trust check loses the sale regardless of how good the product is.
Add to cart and begin checkout. The cart-to-checkout transition is where surprise costs create abandonment. Showing a shipping estimate on the cart page and surfacing the return policy link before the customer reaches the payment step reduces the last-second hesitation that sends people back to comparison shopping. Abandoned cart email recovery — an automated email sent to logged-in customers who left mid-checkout — typically recovers 5–15% of otherwise-lost carts at no additional ad spend. It's available as part of the build for stores where that recovery rate is meaningful to the bottom line.
Complete payment and feel confident. The order confirmation page and confirmation email are the last impression the store makes on a first-time buyer. A confirmation view that shows a clear order number, itemized list, expected ship date, and a contact path if something is wrong converts first-time buyers into repeat customers at a meaningfully higher rate than a generic "thanks for your order" screen. The confirmation email is often forwarded or checked multiple times during the wait for delivery — it should look like it came from a professional business, not a default PHP mailer with no logo and a bare-bones layout.
Why Shopify and WooCommerce solve different problems than a custom build
Shopify and WooCommerce both work. This isn't a takedown of either. The question is whether they're the right fit for your store's specific requirements, cost structure, and how you expect the business to grow — and for a meaningful segment of stores, the answer is no.
The Shopify problem is fee accumulation that never stops. The Basic plan is $39 per month. The main plan is $105 per month, and it adds a 1% transaction fee if you use any processor other than Shopify Payments. On top of the plan fee, most serious stores end up paying for four to six Shopify apps: reviews, email capture, abandoned cart recovery, advanced shipping rules, subscription management, loyalty programs. Each one is a separate monthly charge — together they commonly run $150–$300 per month for a full feature set (as of mid-2026). Over three years, the cumulative cost of a plan plus apps plus transaction fees often exceeds the one-time cost of a custom build, and the bill never ends. Your checkout remains locked to Shopify's template and your customer data lives on their servers, not yours.
The WooCommerce problem is different: it's not fee accumulation, it's maintenance debt. WooCommerce is a WordPress plugin, which means every WordPress update, every WooCommerce update, and every other plugin in your stack needs to be tested after each update because plugin conflicts can break your checkout silently. Those who don't actively maintain their WooCommerce stack accumulate security vulnerabilities. Those who do maintain it accumulate update-day anxiety and occasional hours debugging why the cart stopped working after an overnight automatic update. See what plugin sprawl means for a store's security for the specifics.
Every store using the same Shopify theme looks like every other store on that theme. Shoppers who browse multiple stores recognize the template before they recognize your brand — which is the opposite of what an independent retailer needs to establish itself. When your checkout, product grid, and cart page are visually identical to five competitors, "powered by Shopify" in the footer is the only truly distinctive thing on the page. A custom store has the visual identity you specify, a checkout structured around how your products need to be sold, and nothing in the footer advertising that you built your store on someone else's infrastructure.
A custom PHP store is yours from day one. The code, the database, the customer list, the order history — none of it depends on a subscription staying current or a platform deciding to change pricing, shut down an API, or sunset a feature your store depends on. Full Shopify vs. custom comparison →
Pricing
E-commerce builds start at $2,800 for a standard store: a defined catalog, Stripe or PayPal checkout, customer accounts, an order management dashboard, and email receipts. The range is $2,800–$5,000 depending on catalog size, variant complexity (multiple sizes and colors per SKU), calculated shipping rates, coupon and discount code systems, or a more involved admin dashboard. Technical SEO — behind-the-scenes labels on every product, category pages optimized for search, a sitemap telling Google what's on your site, and registration with Google Search Console — is included with every build, not an add-on.
Subscription billing (recurring orders, membership products, software access) and multi-vendor or marketplace builds are scoped separately after a discovery call. These involve Stripe's subscription API, customer-facing subscription management, and billing webhook infrastructure that adds meaningful scope beyond a standard catalog store.
Managed hosting starts at $30 per month (nightly backups, SSL, DNS, uptime monitoring, and server-level security patching). For routine catalog updates, price changes, and seasonal copy, the $50 per month tier adds one hour of content edits plus application-level security patching. Larger catalog additions or new features are quoted as small projects. Full pricing breakdown → For a detailed cost comparison against Shopify and WooCommerce, see how much an e-commerce website costs →
E-commerce web design questions
How much does a custom e-commerce website cost?
Custom e-commerce builds run $2,800–$5,000. A standard store with a defined product catalog, Stripe checkout, customer accounts, an order management dashboard, and email receipts sits in that range. The main factors that push the number up are catalog size, variant complexity per product (size, color, material all tracked separately), whether you need live carrier shipping rates calculated at checkout, coupon and discount code systems, or a more detailed admin dashboard.
The comparison that matters isn't the build cost vs. a Shopify setup fee — it's the build cost vs. total platform spend over three years. A store on Shopify's main plan at $105/month, with a 1% transaction fee on outside processor sales, and a paid app stack commonly running $150–$300/month for a full feature set (as of mid-2026), runs roughly $3,000–$5,000 per year in platform overhead before touching your processor fees. Over three years that's roughly $9,000–$15,000 — and the bill never stops. A custom build in that range pays for itself in fee avoidance well before year three. See the detailed cost breakdown →
Does each product category need its own page?
For any store that wants to rank in search, yes. A general shop page listing all your products is not what Google shows someone searching for "handmade soy candles" or "custom leather wallets." That searcher needs to land on a page specifically built around that query — its own title, its own meta description, its own product grid, its own structured data. Category pages rank independently for the product types they cover and bring in shoppers with specific purchase intent rather than browsers with general curiosity.
Category pages also improve the shopping experience for people who already know what they want. A customer looking for earrings shouldn't scroll through your full jewelry catalog. For stores with fewer than 20 products, a well-organized single-page view with clear sections and anchor links can work fine. For anything larger, category pages pay off in search traffic, in conversion rate (because the visitor landed on exactly what they searched for), and in paid search campaigns if you ever run them — because each category page becomes a proper landing destination for the matching ad group.
Which payment processors do you work with?
Stripe is the default and fits most stores well. It covers every major card type, Apple Pay, Google Pay, and subscription billing through one integration, with strong fraud detection built in. PayPal Checkout, Square, and Authorize.net are also available. The processor you use is your call — the integration works the same way regardless.
All payment processing uses the processor's hosted payment fields, so card data is never stored on your server. This means you have minimal legal liability for handling payment data and you're not required to undergo an annual security audit. Automatic systems handle the operational events: order confirmation emails send when payment succeeds, refund records update when a refund processes, and payment retry notices go out for subscription billing. Stores that sell internationally may benefit from Stripe's built-in support for international payment methods like SEPA, iDEAL, and Klarna — those integrations are set up based on which markets you're selling into.
How does this compare to Shopify for a small store?
For a store doing under $50k per year with a straightforward catalog and no unusual checkout requirements, Shopify works as a starting point. The hosted infrastructure is convenient and the fees at low volume are manageable. If you're trying to validate demand before investing in a custom build, starting on Shopify makes sense.
Past that point, two things shift. First, the fee math starts working against you — transaction fees, the monthly plan, and app stack costs accumulate into a recurring spend that a custom build eliminates. Second, checkout limitations start mattering. Shopify's checkout is locked to their template unless you're on Shopify Plus at $2,300/month. Custom cart logic, tiered pricing by customer group, unconventional fulfillment flows, or checkout steps that don't fit their standard pattern mean either accepting the constraint or paying for Plus. A custom store has none of those ceilings. See what plugin sprawl means for security if you're weighing WooCommerce, and the full Shopify vs. custom comparison →
How do customer accounts and checkout work?
Registered customers can store shipping addresses, view their full order history, and manage returns or exchanges without contacting support. Guest checkout runs alongside the account system — first-time buyers can complete a purchase without creating an account, and account creation is offered after the purchase completes, when it feels helpful rather than like a requirement. Forcing registration before payment is one of the most-studied abandonment triggers in e-commerce; this build eliminates it by design.
All customer data lives in your database on your hosting environment. Your customer list, order history, and purchase records are yours to export, query, or migrate at any time without restriction. Security on the account system follows current PHP best practices: CSRF protection on all form submissions, rate limiting on login attempts to block brute-force access, and secure session handling. If you ever switch hosting providers or bring on a different developer, the full customer and order database exports cleanly — no platform permission required, no data held hostage on a subscription you're leaving.
What SEO comes included with the build?
Every product page gets behind-the-scenes labels that tell Google to display your price, stock status, and review count directly in search results, before someone clicks through. This increases click-through rate against competitors showing as plain blue links. Category pages get their own search headline, search summary, and labeling so Google understands how your site is organized. When you offer filtered views or pagination of products, a special signal prevents Google from treating each variation as a duplicate page. The sitemap file telling Google what's on your site updates automatically whenever a product is added, archived, or changed — it requires no manual maintenance.
Special preview tags on product and category pages control how your links appear when customers share them on social media, in text messages, or in email — product name, photo, and price showing up correctly instead of a broken preview. Google Search Console is set up and the sitemap submitted at launch. For stores running content marketing alongside the catalog — buying guides, product comparison posts, care instructions — the internal linking structure between content and product pages is built in so search authority flows correctly through the site. What's included in SEO setup →
What's in the admin panel and how do I manage my store?
The admin is built for the person running the store, not for a developer. Everything is labeled in plain English. Product management lets you create, edit, and archive products with images, descriptions, prices, SKU numbers, inventory quantities, category assignment, and variant configuration for things like size and color. Order management shows the full fulfillment queue: filter by status or date, mark orders as shipped with tracking numbers, and process refunds — all from one screen. Customer management lets you browse accounts and pull up purchase history. Basic reporting shows revenue by date range and top-selling products.
Additional admin features can be scoped based on what your operation needs: bulk price editing for large catalogs, coupon and discount code management, shipping rate configuration by zone and weight, low-stock email alerts, and CSV product import/export for stores importing from a supplier catalog. For stores with a team, staff accounts with role-based permissions let a fulfillment employee update order status without having access to pricing or financial data. The goal is an admin that handles your actual daily workflow without navigating a feature-heavy platform designed for a different business than yours.
Can the store handle subscriptions or recurring billing?
Yes, through Stripe's subscription billing. Subscription products can sit in the same catalog alongside one-time purchases. A customer picks a billing interval at checkout — weekly, monthly, quarterly, annually — and Stripe handles the recurring charge automatically. When each renewal succeeds, the renewal order is created in your system automatically and a confirmation email is sent to the customer. This works whether you're shipping a physical product on auto-replenishment, granting access to a digital service, or running a membership program.
Failed payment handling is built in: if a card declines, Stripe automatically attempts the charge again on a schedule, and emails prompt the customer to update their payment method. If the card problem is never resolved, subscription pausing or cancellation can be triggered automatically. Customers can manage their own subscriptions through the account dashboard — updating payment methods, pausing, or canceling without needing to contact you. Subscription billing is priced separately from a standard catalog build and is quoted after a discovery call covering your billing model, what customers can self-manage, and what the fulfillment workflow looks like for each renewal. See payment integration options →
How does my customer data and privacy work?
Your store collects customer names, shipping addresses, email addresses, and purchase history. None of that is shared with third-party ad platforms or analytics services by default — no Shopify pixel, no Facebook Conversion API, no Google tag built into the store. If you choose to add ad tracking for attribution or analytics for conversion data, those are implemented as your explicit decision, not platform defaults you have to opt out of. A privacy policy and terms of service covering your data collection practices are included at launch.
Customer data lives in your database on your hosting server. You control retention periods, data deletion requests, and exports at any time. If your customer base includes EU residents, legal compliance — cookie consent management, the ability for customers to request their data be deleted, and data export in a format they can read — can be built into the store from the start. California customers also have rights around their data privacy; the store supports those requirements through the same infrastructure. Security and data protection basics →
Can the store connect to my shipping carrier or fulfillment software?
Live shipping rate integrations with USPS, UPS, and FedEx are available. When a customer reaches the shipping step, their address and the cart's total weight are sent to the carrier and live shipping quotes come back for the customer to choose from. This is more accurate than a flat fee for stores with varied product weights and dimensions, and it removes the "is this shipping charge fair?" hesitation that flat rates sometimes trigger for customers close to or far from your location.
ShipStation integration for bulk label printing and automatic tracking number updates is available for higher-volume stores where the manual per-order workflow stops making sense. For stores using a third-party fulfillment center, the order management system can notify the fulfillment center automatically whenever a purchase completes. The specific setup depends on which fulfillment partner you use; that gets discussed during the initial discovery call. For stores that also sell at retail and need inventory to sync in real time between online orders and an in-store point-of-sale system, that integration is set up based on which point-of-sale system you're running.
How long does a custom e-commerce build take?
A standard store with up to 50 products, Stripe checkout, customer accounts, and an order management dashboard generally runs four to six weeks from a signed scope to launch. Timeline is most affected by catalog complexity — the number of products, the number of variants per product, and whether any products have downloadable assets or custom configuration options. I send a data template spreadsheet at kickoff so you can fill in product names, descriptions, prices, inventory counts, and image file names in bulk rather than entering them one at a time in the final week.
Builds with subscription billing, live shipping carrier integrations, fulfillment software connections, or a more complex admin dashboard add two to four weeks depending on what's involved. The staging environment is live throughout development — you can test the checkout with Stripe's test cards, browse the admin, and flag anything that needs adjustment before going live. Rush timelines are available for stores with a specific launch date: a product campaign window, a seasonal opening, or a business partnership already generating traffic. Ask about rush availability →
Will my store work on phones?
Yes, and mobile is the primary experience — not a desktop layout squeezed to fit a smaller screen. More than half of online shopping happens on phones, and a checkout that requires zooming, horizontal scrolling, or tapping on links that are too small loses sales at the exact moment the customer was ready to pay. A custom build doesn't have this problem because mobile is tested throughout development, not as a QA step at the end.
Every part of the store is tested on actual iOS and Android devices: product browsing, the cart, checkout forms, and payment processing. Tap targets are sized for thumbs, not fingers. Form fields trigger the correct keyboard automatically — number pad for card numbers, standard keyboard for names, email keyboard for email, phone keyboard for phone numbers. Product images load at the optimal resolution for each screen size so pages don't slow down on mobile data connections. The cart and checkout flow requires no horizontal scrolling on any common device size. These are the defaults, not things to optimize after launch.
Also relevant: Shopify vs. custom store · e-commerce website cost · payment integration · website security basics · web application development
Stop paying Shopify a cut of every sale you worked to earn
Tell me what you sell, your current platform, and what your checkout actually needs to do. I'll scope a store built around your business — no transaction fees, no template limitations, no monthly subscription just to keep the lights on.
Get a quote