Skip to main content

Ayurvexa

Ayurvexa, a Jaipur brand of liver, skin, heart and energy supplements, moved its online store from WordPress onto Dcrayon's multi-brand Laravel commerce platform in April 2026.A five-product...

Ayurvexa

Ayurvexa store at a glance

The main facts of the Ayurvexa store migration.

ItemDetail
Client and industryAyurvexa, nutraceutical supplements for liver, skin, heart, energy and general wellness
Market and audienceIndia; online buyers of health supplements
Engagement periodStore build activity Apr 2026 to Jun 2026; client won Apr 2026
Our scopeMove from WordPress to Dcrayon's multi-brand Laravel platform, store features and redirects; Instagram management and UGC video also contracted
Platform and stackLaravel 12, stancl/tenancy, Blade, Alpine.js, Tailwind CSS, Vite, PostgreSQL; Razorpay
Source: Dcrayon CRM record, platform repository history (Apr to Jun 2026) and the live store, checked 13 Oct 2026.

Challenge

Ayurvexa, a Jaipur brand of liver, skin, heart and energy supplements, moved its online store from WordPress onto Dcrayon's multi-brand Laravel commerce platform in April 2026.

A five-product supplement brand leaving WordPress

Ayurvexa sells five nutraceutical products, each aimed at one health concern: Liver Support, Skin Sculpt, Spirulina Bliss, CoQ10Life and Energize Q, plus five combination packs built from them. Its customers buy online across India. Dcrayon's CRM records the brand as a client won in April 2026, with Instagram management and UGC (user-generated content) video on the order and four invoices issued. In the same month, the platform's code history shows the Ayurvexa catalogue being imported onto Dcrayon's Laravel platform, the shared codebase that also ran other Dcrayon-built stores, each brand with its own database. This case study covers the store migration and build.

A small catalogue on a platform designed for large ones

The platform's standard homepage assumed categories with many products, shown in a scrolling category carousel above a grid of featured products. Ayurvexa has one product in each of its five health categories. Left as it was, the layout would have shown thin rows and a carousel with almost nothing to scroll.

Old WordPress links that were already in use

Product addresses from the WordPress site could still turn up in search results and in links shared earlier. A platform change without redirects would have sent every one of those visitors to an error page, and search engines would have treated the old pages as gone.

Supplement buyers who want advice before they pay

Someone choosing a liver or heart supplement often has a question first: is this right for me, and which product should I start with? A store that offers only a cart leaves that question unanswered.

Shoppers who prefer to pay on delivery

Some buyers do not want to pay the full amount before the parcel arrives. The store needed full prepaid payment as well as a middle option, where the buyer pays a small advance online and settles the rest at the door.

One brand's data, copy and messages kept apart from the others

On a shared platform, a cache, an email setting or a banner that is not scoped to one brand can show up on another brand's store. For a health brand, a wrong product photo or another brand's sender address in an order email undermines trust immediately.

Solution

Joining Dcrayon's multi-brand Laravel platform

The choice was between rebuilding Ayurvexa as a standalone WordPress or Shopify store, or adding it as one brand (a tenant) on Dcrayon's existing Laravel 12 platform. A standalone rebuild would have meant setting up checkout, courier booking, order emails and an admin panel again from nothing. The shared platform already ran those for other brands, so Ayurvexa joined it, and only the parts that are specific to a supplement brand had to be built. This sits within our custom web application work.

The platform uses the stancl/tenancy package. Every request is matched to a brand by its domain before any route runs, and requests to the central domain cannot reach a brand's pages. A central database holds the tenants and their domains, and each brand gets its own database for products, customers, orders and settings. Each brand's branding (name, logo, favicon and colours), business details (support contacts, GST number, legal name and address) and integration settings for payments, shipping, WhatsApp, Instagram, the Meta Pixel and GA4 are stored per brand, never in shared code. Files are stored per brand too: a tenant image service writes products, branding, banners and content images into that brand's own folder.

Fitting the layout to five products

Two commits on 6 Apr 2026 adapted the shared homepage. The category carousel now appears only if at least one category holds more than five products, which hides it on Ayurvexa, and when there are six or fewer featured products the grid centres them instead of leaving gaps. Brands with their own navigation get the logo on the left. A header ticker carrying Ayurvexa's offer lines, split on a separator in the theme settings, was later limited to Ayurvexa alone.

The platform resolves views in three layers: a brand's own view folder first, then the default storefront, then the core views. Ayurvexa had its own home page, product page and checkout views, with its own CSS and JavaScript, while everything else came from the shared storefront. A console command, ayurvexa:create-combos, built the five combination packs: each pairs two products, adds up their MRPs, prices the pair below the two bought separately, copies the first product's image and categories, and refuses to run outside the Ayurvexa tenant. Combos are stored as ordinary products, so they use the same cart, stock and checkout as the single supplements. Products can also carry a "Choose Your Pack" configuration, which the product page shows as pack options.

Redirects that kept WordPress links alive

On 17 Apr 2026 about 20 explicit permanent (301) redirects were added for old WordPress addresses; a 301 tells search engines a page has moved for good. The product route then works in order. A deleted product returns a 410 status, which asks search engines to drop the address instead of retrying it. An old product slug from a map of WordPress-era names, such as liver-support or coq10, redirects permanently to the current product. Anything else is matched by keywords from the slug against active product names. A fallback route at the end of the routing table applies the same 410 and keyword logic to any address no route recognises. When we checked on 13 Oct 2026, /products/liver-support and /products/coq10 both redirected to the current product pages. Redirect planning of this kind is part of our technical SEO service.

BMI calculator and free consultation booking

The BMI calculator page exists only on Ayurvexa: the controller returns not-found for every other brand on the platform. It takes weight in kilograms and height in feet and inches, and places the result in a band from underweight through to obese class II and above.

The free consultation form asks for a name, an email address, an Indian mobile number (checked against the pattern for ten-digit numbers starting 6 to 9), the product or concern the visitor is interested in (energy and stamina, liver health, skin radiance, nutrition and immunity, or heart health), a preferred date and an hourly time slot, and a question of up to 2,000 characters. Each request is saved in the store's enquiries table with the subject "Free Consultation Request" and emailed to the brand's team, and the form accepts no more than five submissions a minute from one visitor. A promotional banner on the home page can open the same form as a pop-up when the brand switches consultations on in its theme settings. A fix on 23 Apr 2026 removed hard-coded wording from the consultation email so that it reads correctly for this brand.

Razorpay, full prepaid and partial cash on delivery

Checkout only accepts a payment method from a fixed list, which covers cash on delivery, partial pay, Razorpay and UPI alongside the platform's other gateways. Guest phone numbers must be valid Indian mobile numbers, a saved address must be a valid stored address, and checkout is limited to ten attempts a minute.

For Razorpay payments, the signature Razorpay returns is checked with a constant-time comparison before the order is confirmed. Razorpay's webhook is verified against the raw request body with HMAC-SHA256 in middleware, before the controller sees it. Orders are matched to Razorpay by their Razorpay order ID and payments are written with an update-or-create, so a repeated notification updates the same record instead of creating a second one.

Partial cash on delivery takes an advance through the primary gateway. The advance amount is a store setting, the order records the advance and the balance due separately, and the payment is marked paid only when the amount received covers the full total. In late April 2026 the admin order views were updated to show what has been paid, what is still due on delivery and any refunds, and gaps in Ayurvexa's order emails were closed. This is the checkout side of our e-commerce solutions.

Keeping each brand's caches and emails separate

Separation needed checks beyond the database. Cache keys for settings and cached pages carry a tenant prefix. On 27 Apr 2026 the Instagram reels cache was made brand-specific, after Ayurvexa reels appeared on another brand's store; the key now includes the tenant ID. On 30 Apr 2026 the configuration bootstrapper, the code that loads a brand's settings at the start of each request, was changed to forget any mailer it had built for the previous brand, to clear any setting a brand does not define rather than inherit it, and to send through a brand's own mail server only when that brand has one, otherwise using the platform's mail server with the brand's address as the reply-to. Continuous integration also checks that no brand name is hard-coded into shared code.

Blade components and Alpine stores on the storefront

The storefront is server-rendered Blade with Alpine.js for interactive parts and Tailwind CSS, built with Vite. Reusable Blade components run from small to large. Small ones include alerts, inputs, the logo, breadcrumbs, trust badges and the WhatsApp and Instagram buttons. Mid-sized ones include modals, the product card, the FAQ section and the product structured-data block. Large ones include recently viewed, similar products, recommended products, the Instagram reels strip and the exit-intent pop-up. Layouts cover the storefront, checkout, guest pages and the admin panel.

Shared state lives in Alpine stores: cart for the basket, wishlist for saved items, toast for short messages, authModal for sign-in and registration, pdpPack for the pack selector on product pages, and freebie, which reads the cart and shows how far the shopper is from a free gift. Reusable Alpine components handle accordions, drop-downs, image galleries, modals, quantity selectors, search and tabs, with igReels running the reels strip and bmiCalculator running Ayurvexa's BMI page.

Structured data, sitemaps and product feeds

Product pages publish structured data for the product, brand, offer, shipping details and delivery time, the regions shipped to, the return policy, FAQ answers, the breadcrumb trail and the organisation. The sitemap index lists separate sitemaps for pages, products, categories, brands and blog posts, and is cached for an hour. A Google Merchant Center feed carries each product's ID, title, link, images, availability, price and sale price, brand, identifiers, Google product category, shipping and return policy labels, and a separate catalogue feed serves Meta. The robots file keeps private areas, such as accounts, checkout and administration, out of search. A newsletter sign-up offers a first-order code, with its own limit of five submissions a minute.

Admin access, sign-in limits and security headers

The admin panel uses its own authentication guard, requires two-factor authentication and records an audit trail of admin actions. Staff roles (manager, cashier, support and warehouse) are mapped to the admin sections each may open, such as orders, catalogue, customers, marketing, content, reports and settings. Platform-wide super administration sits on a separate guard in the central application. Repeated failed sign-ins lock further attempts for a period, keyed on the visitor's IP address and the email used. Forms are protected by Laravel's CSRF tokens (cross-site request forgery protection), and webhooks are verified by signature instead.

A security headers middleware runs on every response. A header request on 13 Oct 2026 showed HSTS (HTTP Strict Transport Security) for one year with subdomains and the preload directive, frame blocking, content-type protection, a strict referrer policy, a permissions policy that turns off the camera and microphone and limits location to the site, and a cross-origin opener policy that still lets payment windows open from checkout.

Delivery and checks on a shared codebase

Changes were tracked as commits and pull requests in the platform repository. The continuous integration pipeline compiles every Blade view, validates routes and configuration, checks that Blade directives are balanced, runs the brand-name check, builds the front-end assets and runs a dependency audit and a secret scan.

Where the Ayurvexa store keeps its data

The main tables in Ayurvexa's own database, with their real names.

EntityTable or fileWhat it holds
Productproducts and product_variantsSupplements and combos, MRP and price in decimal rupees, pack options
Orderorders and order_itemsTotals, paid amount, payment status, and advance and balance for partial cash on delivery
Paymentpayments and refundsGateway payments and refunds, written with update-or-create
ConsultationenquiriesFree consultation requests with topic, date and time slot
Contentblog_posts and newsletter_subscribersBlog articles and newsletter sign-ups
Brand registrytenants and domains (central database)Each brand on the platform and the domains that route to it
Source: database migrations and models in the platform repository before 26 Jun 2026, checked 13 Oct 2026.

Blade and Alpine pieces behind Ayurvexa

The reusable parts of the storefront, from small components to page-level widgets.

Component levelExamples from this buildUsed on
Small Blade componentsalert, input, breadcrumb, trust badges, WhatsApp and Instagram buttonsEvery page
Mid-sized componentsmodal, product card, FAQ section, product structured-data blockListings and product pages
Widgetsrecently viewed, similar and recommended products, Instagram reels, exit-intent pop-upHome and product pages
Alpine storescart, wishlist, toast, authModal, pdpPack, freebieEvery page
Ayurvexa-only piecesbmiCalculator, consultation form, offer ticker, own home, product and checkout viewsBMI, consultation and home pages
Source: views and front-end code in the platform repository, and the store's public front-end bundle, checked 13 Oct 2026.

Ayurvexa checkout and admin safeguards

Where the store protects payments, brand data and admin access, and how each was checked.

ControlWhere it appliesHow it was checked
Razorpay signature checked with a constant-time comparisonCheckout confirmationCode inspection of CheckoutController
Webhook verified against the raw body before the controller runsRazorpay webhooksCode inspection of the webhook middleware
Brand matched by domain; central domain blocked from brand pagesEvery requestTenant route configuration
Tenant-prefixed caches and per-brand mail settingsSettings, page cache, reels, order emailsCommits of 27 and 30 Apr 2026
Two-factor authentication and audit trailAdmin panelAdmin route middleware
HSTS with preload, frame blocking, content-type protectionEvery responseHeader request on 13 Oct 2026
Source: middleware, controllers and configuration in the platform repository, and live response headers, checked 13 Oct 2026.

Results

What changed for Ayurvexa's customers and team

Ayurvexa customers can shop by health concern, compare a single supplement with a combo and its pack options, check their BMI, book a free consultation for a time that suits them, ask a question on WhatsApp, and pay in full online or with partial cash on delivery. Visitors who follow an old WordPress product link land on the current product instead of an error page.

For the Ayurvexa team, orders show the amount paid and the balance due, and consultation requests arrive by email with the topic, date and time slot the visitor chose, which is what the team needs to call back. Products, combos, offers, blog posts and theme settings are managed from the store's admin panel. Sales and conversion figures for the new store are not published.

What changed for Ayurvexa customers

What the new store delivers for customers and for the Ayurvexa team.

OutcomeWhat changedStatus
Old links still workWordPress-era product URLs redirect to current pages; deleted products return 410Delivered
Help before buyingBMI calculator, consultation booking and WhatsApp chatDelivered
Payment choiceFull prepaid via Razorpay or a small advance with the balance on deliveryDelivered
Clear order recordsAdmin shows amount paid, balance due and refundsDelivered
A layout that fits five productsCarousel hidden and featured grid centred for a small catalogueDelivered
Source: the live store and platform repository, checked 13 Oct 2026.

Key takeaways

What a shared commerce platform asks of a small brand

A small brand gets a great deal from a shared commerce platform: a working checkout, courier and payment integrations and an admin panel from the first day. The price is discipline. Layouts must adapt to catalogues of very different sizes, and every cache key, mail setting and banner has to be scoped so that one brand's content never appears on another's store. On this project, that separation work was as much of the job as the BMI calculator or the consultation form.

A platform change is also a search event. Mapping old addresses to new ones before launch, and returning a clear 410 for products that no longer exist, protects links that took years to earn. For the same platform from another brand's side, read Natually's move from Shopify to Laravel. Our article on features a Laravel store needs and our guide to UPI payment architecture in India go deeper on the build decisions.

If you are planning a move off WordPress or Shopify and want your links and checkout to keep working, talk to our team.

CategoryWeb Development

Subscribe to Our Newsletter

Get the latest insights on digital marketing, web development, and business growth delivered straight to your inbox.