How to Build a Custom Online Store Without Shopify on Creatr
- What you need
- A Creatr account and a Stripe account (test mode is fine)
- Token cost
- Moderate - catalog, cart, and checkout
- Time
- About 2 hours

Shopify is a fine choice for a standard catalog with standard pricing and a standard checkout. The moment your store needs something outside that box - customer-specific pricing tiers, vendor revenue splits, B2B approval flows, or a product catalog with attributes Shopify has no field for - the platform starts fighting you. Every workaround costs money, time, or both. This tutorial walks through building a custom online store on Creatr, where the store fits your business instead of the other way around.
Before you start
You do not write any code. Creatr takes a plain-English description of your app and ships a production web app, typically within 24 to 48 hours. Every step in this tutorial gives you a prompt you can hand directly to Creatr. Adapt the specifics to your actual product.
You will need:
- A clear picture of what makes your store non-standard. Write it down before you open Creatr. The more specific you are, the closer the first build lands.
- A Stripe account for payments. Creatr wires in the integration at build time - you just need the keys ready.
- Product data. A spreadsheet listing your products, variants, prices, and any custom attributes is enough to work from.
- Optionally, a QuickBooks account if you want orders to flow into your accounting automatically.
When Shopify is the better choice: if your catalog is straightforward, your pricing is the same for every customer, and you have no unusual fulfillment logic, Shopify's ecosystem of themes and apps will get you to market faster than a custom build. Use this tutorial when you have a specific reason Shopify does not fit.
Step 1 - Describe the store and what makes it different
The first prompt sets the architecture for everything that follows. Be direct about the non-standard parts. If you try to describe a generic store and add the custom logic later, you get a generic foundation that resists change.
Think through: Who buys from you? Is it the public, registered businesses, or both? Do different customers see different prices? Are there products that require approval before checkout? Does the catalog have attributes - materials, certifications, lead times, minimum order quantities - that a standard product page has no slot for?
Build a custom online store for [your business]. The store sells [what you sell]. Customers are [describe: public / registered businesses / a mix]. Products have these custom attributes that a standard Shopify store cannot handle: [list them]. Pricing works like this: [describe your pricing model - flat, tiered, customer-specific, volume discounts]. There is no existing off-the-shelf platform that fits this without heavy customization. Use Next.js for the frontend, a Postgres database, and wire in Stripe for checkout.
Send this prompt. Creatr will confirm the architecture before building. Review it and push back on anything that does not match your actual business logic.
Step 2 - Build the product catalog
The catalog is where most custom stores diverge from Shopify immediately. You might have products with a dozen custom fields, products that are configured-to-order, or a catalog that is only visible to logged-in customers. Describe it precisely.
If your products have variants, list how variants work. If pricing changes based on quantity or customer tier, say so here. If certain products are restricted to certain customers, include that.
Add a product catalog to the store. Each product has: name, description, price, SKU, inventory count, category, and these custom fields: [list your custom fields - e.g., material grade, lead time in days, minimum order quantity, certifications]. Products can have variants - [describe your variant structure, e.g., "each product can have a size and a finish variant, and each combination has its own price and SKU"]. The catalog is [publicly browsable / only visible after login]. Add an admin panel where I can add, edit, and archive products without touching code.
A good catalog prompt includes an example product. The more concrete your example, the less back-and-forth happens later.
Example product: "Grade 304 Stainless Hex Bolt". Custom fields: material grade = "304 stainless", tensile strength = "70,000 PSI", box quantity = 100. Variants: M6x10, M6x16, M6x20 - each with its own price and inventory count. Minimum order quantity: 5 boxes.
Step 3 - Build the cart
The cart prompt depends on your pricing model. A public store with flat prices needs a standard cart. A B2B store with volume discounts needs a cart that recalculates as quantities change. A store with minimum order quantities needs validation before checkout.
Add a shopping cart to the store. Cart behavior: [describe - e.g., "customers can add multiple products and variants, quantities update in real time, the cart shows a running subtotal, and volume discount pricing applies automatically when a customer adds more than [X] units of any product"]. Minimum order quantity validation: if a customer tries to check out with fewer than the minimum for any line item, show an error and prevent checkout. The cart should persist if the customer leaves and comes back.
If your store has B2B approval flows - where a cart requires manager sign-off before it becomes an order - add that here.
For business customers with an account type of "requires approval", add a "Submit for approval" button instead of a checkout button. The cart converts to a pending order that a manager in their organization can approve or reject from their account dashboard. Once approved, the customer receives an email and can complete payment.
Step 4 - Wire in Stripe checkout
Creatr integrates Stripe at build time. You do not configure payment flows manually. Tell Creatr what the checkout experience should look like and what happens after payment.
Add Stripe checkout to the store. On checkout, collect: customer name, email, shipping address. Shipping options: [describe your shipping options - e.g., "standard ground (free over $150, $12 flat under $150), 2-day air ($25 flat), local pickup (free)"]. After successful payment: create an order record in the database, send a confirmation email to the customer with order details and estimated delivery, and reduce inventory counts for each purchased item. If a payment fails, show a clear error and let the customer retry without losing their cart.
If you are splitting revenue between vendors - for example, a marketplace where each product comes from a different supplier - add that here. Stripe Connect handles vendor payouts; tell Creatr how the split works.
Each product is associated with a vendor. When an order contains products from multiple vendors, use Stripe Connect to route each vendor's portion of the payment to their connected Stripe account automatically. The platform fee is [X]% per transaction, deducted before the vendor payout.
Step 5 - Order management and an admin
An order needs to go somewhere after payment. Creatr can build an admin panel where you view, update, and fulfill orders - or it can push orders into an existing tool like QuickBooks.
Add an order management section to the admin panel. For each order, show: order number, date, customer name, line items, total, payment status, fulfillment status. Admin can update fulfillment status to: processing, shipped (with a tracking number field), delivered, refunded. When fulfillment status changes to "shipped", automatically send the customer an email with the tracking number. Add a filtered view: orders by status, orders by date range, orders by customer.
If you are connecting QuickBooks:
When an order is marked as paid in Stripe, automatically create a corresponding invoice in QuickBooks using the QuickBooks integration. Map: order total to invoice amount, customer email to QuickBooks customer, product line items to invoice line items using [your QuickBooks item names or codes]. Mark the invoice as paid automatically.
Step 6 - Inventory management
Inventory is easier to get right from the start than to retrofit. If your store sells physical goods, you need counts that decrement on purchase and alert you when stock is low.
Add inventory management to the store. Each product variant has an inventory count. When an order is placed, decrement the inventory count for each purchased variant. If a variant reaches zero, mark it as out of stock on the storefront and prevent it from being added to carts. When a variant's count falls below [X] units, send an email to [your admin email] with the product name, variant, and current count. Add an inventory section in the admin panel where I can manually adjust counts and see a log of adjustments with timestamps.
If you receive inventory in batches, add a purchase order or restock flow:
In the admin panel, add a "Restock" action for each variant. When I click Restock, I enter a quantity received. The system adds that quantity to the current count and logs the restock event with the date and quantity.
Step 7 - Customer accounts
Customer accounts let buyers track orders, reorder quickly, and - for B2B stores - manage their organization's users and saved addresses. Describe what an account needs to do for your customers.
Add customer accounts to the store. Customers can register with email and password or sign in with Google. An account includes: order history (with the ability to view order details and reorder with one click), saved shipping addresses, and saved payment methods via Stripe. For business accounts, add an organization structure: one admin user can invite additional users to their organization. All users in an organization share a billing address and order history view.
If your store has customer-specific pricing:
Business accounts have a pricing tier assigned in the admin panel: standard, silver, or gold. Product prices displayed on the storefront and in the cart reflect the logged-in customer's tier. Guest visitors see standard pricing. Admins can change a customer's tier from the customer management section of the admin panel.
Step 8 - Test the purchase flow end to end
Before you ask Creatr to deploy, walk through the entire purchase flow in the preview environment. Testing a checkout flow has a specific shape - do not skip steps.
In the preview environment, set up a test scenario: create a test product with at least two variants and a minimum order quantity of 2. Create a test customer account. Add items to the cart, verify that the subtotal is correct and minimum order validation works. Proceed to checkout using Stripe's test card number 4242 4242 4242 4242 with any future expiry date and any CVC. Confirm that: the order appears in the admin panel, the customer receives a confirmation email, inventory counts decrease correctly, and the order is created in QuickBooks if that integration is active. Then test a failed payment using Stripe's decline test card 4000 0000 0000 0002 and confirm the cart is preserved and the error is clear.
Also test edge cases that are specific to your store's non-standard logic. If you have B2B approval flows, submit a cart for approval and test the approval and rejection paths. If you have vendor splits, verify the payout amounts in the Stripe dashboard against the expected split.
Test the B2B approval flow: create a business account with "requires approval" status, add items to the cart, submit for approval. Log in as a manager in the same organization and approve the order. Verify the customer receives an approval notification email and can complete checkout. Then test rejection: submit a second cart for approval, reject it as the manager, and verify the customer receives a rejection email and the cart is preserved so they can edit and resubmit.
Step 9 - Ship and iterate
A working store in preview is not a finished store. The first version reveals what you missed and what your actual customers struggle with. Shipping the first version is the fastest way to find out.
Deploy the store to production. After deployment, set up: a custom domain [your domain], SSL, and a post-purchase email sequence - a confirmation email immediately after purchase and a shipping notification email when the order status changes to "shipped". Add a basic analytics view in the admin panel showing: total orders this week and this month, revenue this week and this month, top 5 products by units sold this month.
Once live, iterate based on what you observe. Common first iterations on custom stores:
- Checkout drop-off: customers are leaving at a specific step. Ask Creatr to simplify that step or add a guest checkout option.
- Missing product filters: customers are searching for products by attributes you have but are not exposing as filters. Add faceted search on your custom fields.
- Admin friction: the fulfillment workflow takes too many clicks. Ask Creatr to add bulk status updates or a keyboard shortcut.
Add bulk fulfillment actions to the order admin: let me select multiple orders with checkboxes and mark them all as "shipped" in one action, entering a single tracking number that applies to all selected orders. This is for orders that ship in the same batch.
See also: Add Stripe payments to your app for more detail on Stripe configuration, and Build an admin dashboard if your admin needs expand beyond order management.
Recap
A custom store built on Creatr fits your business rules instead of asking you to fit Shopify's. The steps above follow a consistent pattern: describe the non-standard behavior precisely, use copyable prompts as the input to Creatr, test each layer before moving to the next, and ship before you run out of things to perfect.
The parts that matter most for a successful build:
- Step 1 sets the foundation. A vague first prompt produces a generic store that is hard to customize.
- Step 2 is where most custom stores diverge. Custom catalog attributes defined early save significant rework later.
- Step 8 is not optional. Testing the full purchase flow in a preview environment before going live catches the class of bugs that only appear when all the pieces connect.
The non-standard logic you described in Step 1 is exactly what makes a custom build worth doing. If that logic fits cleanly into a Shopify app, use Shopify. If it does not, the build you just walked through is the faster path.

Full Stack Engineer at Creatr, building DeepBuild - the system that ships production web apps in 24 hours. Niraj works across the entire stack, from database architecture to frontend delivery, and has a sharp focus on shipping things that actually work in production.