Cards are not the default
Most orders arrive as cash on delivery or through mobile wallets, which foreign platforms treat as an edge case to be bolted on.
A custom commerce platform built for the Bangladeshi market: taka pricing, cash on delivery, local wallet payments, courier integrations and Meta tracking that reports on profit. The shop owns the code and the data, and platform hosting costs $0 a month.
15 pieces of the build, every one a real page from the finished site.

Server-rendered for speed and search visibility, with a section builder that lets the shop assemble campaign homepages, banners, countdowns and collections without touching code or installing an app.
Rendered at the edge, no origin server

Manual collections for hand-picked ranges and smart collections driven by title, type, tag, price or stock. Sorting and filters are configurable, so a campaign page can be built in minutes.
Manual and rule-based collections

Price, type and product-option filters, live type-ahead search, quick add straight from the grid, and recently viewed items, so the catalog stays navigable as it grows.
Type-ahead search with quick add

Each category gets a proper landing page with its own copy and structure, so a new range slots into the store and into search results without a redesign.
4 collections at launch, built to extend

Ordered galleries with zoom, variant-specific images, compare-at pricing, live stock messaging, and both Add to Cart and Order Now paths. Selecting a variant updates price, image and availability instantly.
Up to 3 option dimensions per product

Variant-level price, SKU, cost, weight and stock, with low-stock urgency drawn from actual inventory rather than a fake counter, plus back-in-stock signup when something sells out.
Variant-level stock and pricing

Large imagery, structured specifications, and reviews with verified-buyer matching, so a handmade product is as easy to trust online as it is in person.
Reviews matched to real orders

Editable rich-text pages let the brand explain how things are made and who makes them, which is what separates a handmade shop from a marketplace listing.
Merchant-editable content pages

Delivery times, cash on delivery, personalisation, care and returns answered in public. In this market the cash-on-delivery question is the one that decides whether a first-time buyer orders at all.
Objections handled before checkout

A contact form that stores enquiries in the admin with new, read, replied and archived states, alongside the WhatsApp and Facebook routes the shop already uses.
Enquiries tracked inside the admin

A full blog with cover images, tags, scheduling and related posts. Care guides answer questions after purchase, which cuts support messages and return requests.
Scheduled publishing built in

Inside Dhaka, outside Dhaka and personalised-item timelines are published, and the same zone logic drives shipping rates and delivery dates at checkout. The promise and the system agree.
Zone-based rates, dates and slots

Home and decor gets the same structure as every other range, so the catalog can grow into new categories without a redesign or a developer.
Collections the merchant creates

Personalisation, lead times and made-to-order expectations are set on the product page, which is where returns are prevented rather than processed.
Expectations set before checkout

Refund, shipping and care policies published plainly. In a cash-on-delivery market, clear terms are part of the operations system, not legal filler.
Written to be read, not to hide
Hosted commerce platforms are built around a Western card-payment model. Selling in Bangladesh means solving a different set of problems.
Most orders arrive as cash on delivery or through mobile wallets, which foreign platforms treat as an edge case to be bolted on.
A monthly platform fee is only the start once reviews, wishlists, returns, page building, email, and analytics each need their own paid app.
Booking parcels by hand and copying tracking numbers does not scale, and it hides the delivery data that protects margin.
Fake orders and failed deliveries cost real money on every parcel that ships and comes back.
That only works if Pixel and server-side events agree with the product catalog, and most setups quietly disagree.
A new checkout rule or report can mean a higher plan, another app, or simply being told it is not possible.
Each goal made the next one possible.
Source code, data model, and deployment held by the business rather than rented from a vendor.
Design the checkout around how customers actually pay, not around a card form with COD attached.
bKash, SSLCommerz, and manual wallet methods handled natively, with an incentive to pay in advance.
Book parcels from the order, then bring delivery status back into fulfilment automatically.
Join cost snapshots to orders so reporting shows margin instead of a flattering top line.
Risk scoring, phone and IP blocking, and order verification before an expensive parcel ships.
Architect it so the platform bill stays at zero while the business is small, and scales deliberately.
6 calls that shaped the build, and the reasoning I apply to custom commerce work.
Most platforms begin with card payments and add Bangladesh through apps and manual work. I began with taka, cash on delivery, wallets, and couriers, so the awkward parts are native instead of patched.
Checkout is where margin is decided. Owning it means an advance-payment discount, a delivery slot, or a verification rule can ship the same week it is needed.
Pixel, server-side events, and the product catalog all use the same variant identifiers. Without that, retargeting quietly misfires and reporting never reconciles.
Booking a parcel is the easy half. Returning delivery status to fulfilment is what turns courier choice into a measurable decision rather than a habit.
Cost is captured on the order line at the time of sale, so historical margin stays accurate even after prices and products change.
When reviews, returns, email, couriers and analytics share a source tree and a schema, an update cannot silently break the checkout.
Every stage writes back to the order, so the shop can see which advert produced a delivered, profitable sale.
Campaign, source, and medium captured from the first click and carried through the session.
Browser and server events fire together, deduplicated, using the same variant IDs as the catalog feed.
A server-backed cart with early email capture, so an abandoned basket can still be recovered.
Local methods, an advance-payment incentive, and risk checks before anything is dispatched.
The parcel is booked from the order and tracked without anyone retyping a consignment number.
Courier status returns to fulfilment, turning delivery performance into data the shop can act on.
A review request goes out after delivery, and the customer enters segmentation for retention.
Shopify is an excellent product for merchants who want a standard hosted platform. For this shop, owning the code won on both cost and control.
Shopify list pricing checked in August 2026 and subject to change. Payment-gateway fees apply to both. The $0 figure covers platform hosting within Cloudflare's free tier and excludes domain, advertising, gateway, SMS, and email costs.
What the shop runs on today, and what it is no longer paying for.
Money that would go to a platform subscription and a stack of apps goes into products, delivery, and advertising instead.
Risk scoring and verification stop a share of the failed cash-on-delivery parcels before they ever ship.
Deduplicated events and matching catalog IDs mean the numbers in Meta reconcile with the orders in the database.
Failed searches, wishlists, and views on sold-out items show what customers wanted and could not buy.
Delivery performance by courier, payment type, and risk level turns a habit into something measurable.
A new rule, report, or integration is a code change, not a plan upgrade or a search for the right app.
The platform hosting is, with a clear boundary worth stating:
Shopify is the right answer for many merchants. It was not the right answer here:
Most setups fire a Pixel and stop. This one closes the loop:
Several layers, because no single check is reliable on its own:
Custom is the right call when your workflow is the thing that makes you money:
If your workflow is the thing that makes you money, it should not be limited by what an app marketplace happens to offer.