Skip to content

Web Design

Online Store Launch Checklist for Malaysia

Everything to check before launching an online store in Malaysia: payment gateway and FPX, shipping zones, SST and legal pages, products, speed, tracking.

By Zahid Aramai

Online Store Launch Checklist for Malaysia

The store is built, the products are in, and everyone wants to press launch. This is the checklist I run before any WooCommerce store I build goes live in Malaysia. Half of it is technical and half of it is business and legal; both halves lose you money if skipped.

For the bigger picture of what a store build involves, start with the ecommerce website design page; this article is only the gate at the end. Every screenshot below comes from a fresh WooCommerce install, so you can find the same screens in your own store.

Payment

  • Test a real transaction through every payment method with a small amount, then refund it. FPX, card, e-wallet. Check the order email, the status change and the settlement entry at the gateway.
  • Confirm the gateway settles to the business bank account and know the settlement time (next day, two days, weekly).
  • Decide on cash on delivery or bank transfer as fallbacks, and if you offer them, make the order confirmation clear about what happens next.
  • Check the store’s currency is MYR everywhere, including emails and invoices.

Payment methods live under WooCommerce, then Settings, then Payments. A Malaysian gateway such as Billplz, toyyibPay, senangPay or iPay88 is added as a plugin and then appears in this list next to the built-in offline methods.

The WooCommerce Payments settings screen with the business location set to Malaysia, listing Stripe, PayPal Payments and the offline payment methods
WooCommerce, Settings, Payments: a local gateway plugin adds its own row to this list.

Each method reaches a different kind of customer and fails in a different way, so each one needs its own test.

Method Who uses it What to test
FPX online banking Local bank customers Moves to processing alone
Debit or credit card Card users, buyers abroad Bank verification, refund
E-wallet Customers paying by phone Comes back to your site
Cash on delivery Wary of paying online Confirmation explains it
Bank transfer Business buyers Waits on hold until paid

The currency setting is on the General tab. Check it once here and then check it again in a test order email, because a theme or an invoice plugin can print its own symbol.

WooCommerce currency options showing Malaysian ringgit (RM), MYR, with the symbol on the left and two decimals
WooCommerce, Settings, General: currency set to Malaysian ringgit with two decimals.

How to run a proper test order

Most gateways give you a sandbox or test mode with fake bank and card details. Use it first, because it costs nothing and shows you the whole flow. Then switch the gateway to live mode and place one real order for the smallest product you sell.

The six steps of a test order: cart, checkout, gateway, callback, processing status and order email01Cart02Checkout03Gateway04Callback05Processing06Email sentStuck on pending payment? Step 04 is blocked.
A test order passes six steps; the callback from the gateway to your site is the one that most often breaks.

Follow that order from end to end. In WooCommerce, go to the Orders screen and confirm the status moved from pending payment to processing without you touching it. If it stayed on pending, the gateway’s callback URL is not reaching your site, which is usually a security plugin or a caching rule blocking it. Fix that before launch, not after the first customer pays and gets no confirmation.

A new WooCommerce order showing the status field set to Pending payment and the customer set to Guest
Every order starts as Pending payment; the gateway's callback is what moves it to Processing.

Then refund the order from the gateway dashboard or from inside WooCommerce, and check the refund arrives in the bank account.

Shipping

  • Shipping zones for Peninsular Malaysia, Sabah and Sarawak, with correct rates for each. East Malaysia rates are the most common pricing mistake I see.
  • Free shipping threshold set deliberately, with the margin checked.
  • Self-pickup option if you have a shop, with the address and hours on the confirmation.
  • Courier account opened (the gateway or a courier aggregator) and the tracking number flow decided: who enters it and when the customer gets it.
  • International shipping switched off unless you have priced it.

A new store starts with no zones at all, which is the screen below. The selling and shipping locations on the General tab decide whether an address outside Malaysia can check out, so set them before you add a single rate.

The empty WooCommerce Shipping zones screen with the Add zone button and the explanation of what a shipping zone is
WooCommerce, Settings, Shipping: a new store starts with no zones.
WooCommerce General settings showing the store address set to Malaysia, Kuala Lumpur, and the Selling location(s) field set to Sell to all countries
The default Selling location is all countries; change it to Malaysia unless you have priced international shipping.

A simple Malaysian setup needs only three zones.

Zone Regions Methods
Sabah and Sarawak Sabah, Sarawak, Labuan Flat or courier rate
West Malaysia Peninsula, KL, Putrajaya Flat rate, free, local pickup
Catch-all Anything not matched None, so no checkout

Setting up shipping zones in WooCommerce

Open WooCommerce, then Settings, then Shipping. Add one zone for West Malaysia and one for Sabah and Sarawak, and pick the states or postcodes that belong to each. A zone is matched from the top down, so put the narrower zone first and leave a final catch-all zone empty or with no methods, so an address you did not plan for cannot check out with a wrong rate.

The WooCommerce Add zone screen with fields for zone name, zone regions and a limit to specific postcodes link, and an Add shipping method button
Add zone: name it, pick the states or postcodes, then add the shipping methods.
A Kuching address is checked against three zones from the top and matches Sabah and Sarawak firstAddressKuching01 checked firstSabah and SarawakMatch02West Malaysia03 catch-allEverywhere else, no method
WooCommerce uses the first zone that matches, so the last zone catches every address you did not plan for and offers no rate.

Inside each zone choose the method: flat rate, free shipping above a minimum order, or local pickup. WooCommerce’s own flat rate charges per order, per item or per shipping class, not by weight. Weight-based rates come from a table rate or courier plugin, and they only work if every product has a weight. A product with no weight is charged as if it weighs nothing, and that is how stores end up paying the courier more than they charged.

Before launch, place test orders to a Johor address, a Kota Kinabalu address and a Kuching address and read the rate at checkout against your courier’s rate card. If the numbers do not match, the zone is wrong.

Address Should match Compare with
Johor West Malaysia Peninsular rate card
Kota Kinabalu Sabah and Sarawak Sabah rate card
Kuching Sabah and Sarawak Sarawak rate card
  • SST status confirmed with your accountant and tax rules set in the store.
  • Business name, SSM number and contact details in the footer and on the contact page.
  • Terms and conditions, refund and return policy, shipping policy and privacy policy published and linked from the footer and the checkout. The privacy policy must reflect the Personal Data Protection Act requirements for the data you collect.
  • Age or licensing rules if you sell restricted products.

WooCommerce only knows about your legal pages once you point it at them. The terms page is chosen on the Advanced tab, and a fresh install leaves it empty, as you can see here.

WooCommerce Advanced settings, Page setup, showing the Cart, Checkout and My account pages set and the Terms and conditions field still empty
WooCommerce, Settings, Advanced: the Terms and conditions page is empty until you choose one.

The refund and return page should answer five questions: what can be returned, within how many days, in what condition, who pays the return shipping, and how the money comes back. The shipping policy should state dispatch cut-off times and typical delivery windows for West and East Malaysia. The privacy notice should say what personal data you collect (name, phone, address, email), why, who receives it (the courier and the payment gateway at minimum), and how a customer can ask to see or correct it. WooCommerce lets you set the terms and privacy pages under Settings, then Advanced, and show a consent line at checkout.

The five questions a refund and return page must answer1What can be returned?2Within how many days?3In what condition?4Who pays the return shipping?5How does the money come back?
The five questions a refund and return page should answer before a customer has to ask them.
Page Must state Link it from
Refund and return The five questions above Footer and checkout
Shipping policy Cut-off and delivery times Footer, product pages
Privacy notice Data, purpose, recipients Checkout consent line
Terms and conditions Seller, orders, payment Checkout checkbox
Footer Name, SSM number, contact Every page

If your accountant says you must charge SST, set it up under the Tax tab with the right rate and decide whether prices on the site show with or without tax. If you are not sure, ask before launch, not after the first month of orders.

Products

  • Every product has a clear title, a description in the customer’s language, the price including any tax display rule, stock quantity, weight and dimensions for shipping, and at least two photos sized and compressed for the web.
  • Variations (size, colour) work and each has stock.
  • Categories make sense to a customer, not just to your warehouse.
  • A WhatsApp enquiry button on every product for the customers who want to ask first.

The product data box is where most of these fields live. The price sits on the General tab, already in ringgit once the currency is set.

The WooCommerce Product data box on the General tab, with empty Regular price (RM) and Sale price (RM) fields
Product data, General: regular and sale price in ringgit.

The Shipping tab is the one people skip. Note the zero in the weight field: that is what a courier plugin will charge for if you leave it.

The WooCommerce Product data box on the Shipping tab, with Weight (kg) showing 0, empty length, width and height fields and No shipping class selected
Product data, Shipping: weight in kilograms and dimensions in centimetres, both empty on a new product.
Field Where Why it matters
Title and description Product editor Answers before WhatsApp
Regular price Product data, General Follows tax display rule
Stock quantity Product data, Inventory Stops overselling
Weight and dimensions Product data, Shipping Courier rates need them
Two or more photos Image and gallery Compressed for phones
Variations Variations tab Stock per size or colour

Checkout and accounts

  • Guest checkout enabled. Forcing account creation is the fastest way to lose a first order.
  • Checkout fields reduced to what you need to deliver; Malaysian address format, postcode validation, phone number required for the courier.
  • Order confirmation, processing and completed emails tested, in the right language, with your logo and the WhatsApp number for questions.
  • Abandoned-cart follow-up decided: an email, a WhatsApp message, or nothing yet.

Guest checkout is a single box on the Accounts and Privacy tab. On a new install it is ticked; check that nobody unticked it during the build.

WooCommerce Accounts and Privacy settings with Enable guest checkout ticked and the account creation options below it
WooCommerce, Settings, Accounts and Privacy: keep guest checkout ticked.

The emails tab lists every message the store sends. Open each customer email you rely on and send yourself a test order to see it with your logo and wording.

The WooCommerce Emails list showing New order, Cancelled order, Failed order, Order on-hold, Processing order, Completed order, Refunded order and other emails with their recipients
WooCommerce, Settings, Emails: the processing and completed order emails are the ones every customer receives.

Check the checkout on a phone with your thumb, not your mouse. Can you tap every field without zooming? Every extra field costs you orders, so remove company name and any “how did you hear about us” box unless you truly use the answer.

Checkout field Keep or remove, and why
Name, address and postcode Keep: the courier needs them
Phone number Keep and require: the courier calls
Email Keep: order emails and receipts
Company name Remove: few retail buyers need it
How did you hear about us Remove, unless you act on it
  • Product and category pages load in under three seconds on a phone on mobile data. Most Malaysian shoppers buy on a phone.
  • Images converted and compressed; the store does not ship four-megabyte photos.
  • Page titles and descriptions written for products and categories; structured data for products in place so prices and stock show in Google.
  • Sitemap submitted in Google Search Console; the staging store removed from the index if it was ever crawled.

Test a product page and the checkout in PageSpeed Insights, not only the home page. If you want help with the search side after launch, the SEO services page explains what I do for stores.

What to check Where Passes when
Product page on a phone PageSpeed Insights, mobile Loads in under three seconds
Checkout page PageSpeed, then your phone Fields tap without zooming
Image weight PageSpeed Insights No photo near four megabytes
Product structured data Rich Results Test Price and stock detected
Sitemap Search Console, Sitemaps Read without errors
Staging copy A site: search for it Nothing shows up

Tracking

  • Google Analytics 4 with ecommerce events: view item, add to cart, begin checkout, purchase. Test a purchase and confirm it appears.
  • WhatsApp taps and phone calls tracked as events with the page they came from.
  • Meta pixel or TikTok pixel if you will advertise there, tested the same way.
  • Search Console connected and the Business Profile linking to the store.
The four GA4 ecommerce events in order, from view_item to purchase, narrowing like a funnelview_itemadd_to_cartbegin_checkoutpurchasepurchase fires once, right total, MYRWhatsApp taps tracked with their page
The four ecommerce events to see in GA4 during a test order, with the purchase event checked hardest.

Use the GA4 DebugView or the tag assistant while you place the test order, and check that the purchase event fires once, with the right total and currency. A purchase event that fires twice, or fires again when the customer refreshes the thank-you page, makes every report afterwards wrong.

Security and backups

  • SSL on every page, including the checkout.
  • Daily off-site backups running before the first order, because losing orders is worse than losing pages.
  • Updates policy decided: who updates WooCommerce and the payment plugin, and where they test first. An untested update on a live store is how a checkout silently breaks for a week.
  • Admin accounts limited to people who need them, with two-factor authentication.

A restore you have never tried is a hope, not a backup. Restore the backup to a test location once, before launch, and confirm the orders and products come back. If you do not want to own this job, a website maintenance plan covers updates, backups and monitoring.

The backup loop: daily backup, copied off-site, test restore, check that orders come back01Daily backup02Copied off-site03Test restore04Orders come back?
A backup only counts once step three has been done and the orders and products came back.
Job Decide before launch
SSL Renews itself; checkout shows the padlock
Backups Daily, off-site, restored once as a test
Updates A named person, tested before live
Admin accounts Few people, all with two-factor

Operations

  • Who receives the order notification, who packs, who prints the label, and the cut-off time for same-day dispatch.
  • Stock sync plan if you also sell in a physical shop or on a marketplace.
  • Reply window for WhatsApp enquiries published on the site.
  • A returns process you can actually run.

Write the answers down as a single path from order to tracking number, with a name against every step.

The path of one order from email to tracking number, with the question each step must answerOrder emailWho receives it?PackWho packs it?Print labelWho prints it?DispatchBefore what cut-off?Tracking numberWhen does the buyer get it?
Every step from the order email to the tracking number needs a named person and a time.

Common launch mistakes and how to fix them

These are the problems I see most often on stores that skipped a step above.

  • Test mode left on. The gateway still runs in sandbox, so customers “pay” and nothing arrives. Check the gateway setting on launch day and again after the first real order.
  • Emails going to spam. Order emails sent from the web server land in junk folders. Send them through a proper mail service and authenticate your domain.
  • Cache serving the cart. A caching rule that stores the cart or checkout page shows one customer another’s basket. Exclude cart, checkout and account pages from the cache.
  • Missing weights. Products without weight ship at the wrong price. Filter the product list by empty weight and fill the gaps.

The same mistakes, side by side with the symptom you will notice first:

Mistake What you notice Fix
Test mode left on Orders but no money Switch the gateway to live
Emails going to spam Did my order go through? Mail service, signed domain
Cache serving the cart Strangers’ items in a cart Exclude cart and checkout
Missing weights Courier costs more than charged Fill every product’s weight
Callback blocked Paid orders stay pending Allow the callback URL
Purchase event twice GA4 revenue above the bank Fire once per order

The first week after launch

Place a real order yourself on day one, from a phone, on mobile data, paying with FPX, and time how long it takes from landing on the home page to the confirmation screen. Then watch the analytics for drop-offs at checkout. Read every enquiry; the questions customers ask in week one are the gaps in your product pages. Ask the first ten customers for a review. Add the store link to your Business Profile, social profiles and WhatsApp Business catalogue.

A panel summarising the first week after launch: a real FPX order from a phone on day one, watching checkout drop-off through day seven, reading every enquiry, and asking the first ten customers for a review
The first week in four habits, then the store link goes on every profile you own.

What to measure after launch

Look at a few numbers on the same day every week.

  • Sessions by source, so you know whether orders come from Google, social media, ads or direct visits.
  • The step-by-step drop-off from product view to cart to checkout to purchase. The biggest drop is where to work first.
  • Conversion rate and average order value, read together. A higher conversion rate on cheaper orders may not be an improvement.
  • WhatsApp taps per product page. A product with many taps and few orders usually has a missing answer in its description, such as size, delivery time or material.
  • Failed or abandoned payments at the gateway, which often point to a technical fault rather than a hesitant customer.
Number Where What it tells you
Sessions by source GA4, Acquisition reports Which channel sells
Drop-off by step GA4, Funnel exploration Where to work first
Conversion and order value GA4 or WooCommerce Analytics Real growth or not
WhatsApp taps per product GA4 events by page A missing answer
Failed payments Gateway and Orders, Failed A technical fault

Change one thing at a time and write it down, otherwise you will not know what worked. My past projects page shows the kind of sites I have built.

Next step

If you are about to launch a store and want someone to run this list with you, or you want the store built with the list already ticked, the ecommerce website design page explains what a WooCommerce build from me includes and the pricing page has the figures. Or send the store address on WhatsApp and I will go through it.

The WooCommerce Store package card from the zahidaramai.com pricing page: from RM7,500, five to eight weeks, with payment gateway integration, shipping zones, tax and order email flows listed
The WooCommerce Store package on my pricing page includes the payment, shipping and email set-up this checklist tests.

Questions

Questions readers ask

Do I need a registered company to open an online store in Malaysia?

You need a business registration with SSM to open a merchant account with a Malaysian payment gateway, and most courier accounts ask for it too. Sole proprietorship or enterprise registration is enough to start; a Sdn Bhd is not required.

Which payment gateway should I use?

For a WooCommerce store in Malaysia the common choices are Billplz, toyyibPay, senangPay and iPay88 for FPX and e-wallets, with Stripe for international cards. Compare the per-transaction fee, the settlement time and whether the gateway charges a monthly fee; the right answer depends on your order volume.

Do I have to charge SST on online sales?

It depends on what you sell and your turnover; many small retailers are below the registration threshold. Check with your accountant or the Royal Malaysian Customs Department before launch and set the tax rules in the store accordingly.

How long does a store take to build?

Five to eight weeks from the day the product content is ready, which is usually the slowest part. This checklist is the launch gate at the end of that period.

Let's get in touch

Need this done for your own website? 

I build and look after WordPress websites for businesses in Malaysia. Tell me about yours on WhatsApp and I will reply within one working day.

Reply within one working day

Message Zahid directly

WhatsApp
+60 11-5197 8879
Hours
Monday to Saturday 10 am to 6 pm · Sunday closed
Based in
Kuala Lumpur, Malaysia

Send three things for a quote in one reply

  1. 01Your current website, if you have one
  2. 02What the website must do for your business
  3. 03When you need it live
WhatsApp Zahid