Mobile App for WooCommerce documentation
A step-by-step guide for everyone, no coding needed: set up your store, design the app, and build your Android app online. Developers will also find the source-code and REST API chapters.
Documents version 1.0.2Updated Oct 23, 2026
Start here
What you bought: three parts that work together
| Part | What it is | Who needs it |
|---|---|---|
1. The pluginmobile-app-for-woocommerce-plugin.zip | Goes on your WordPress store. It lets you design the app's home screen, choose colours and login options, send notifications and build the app. | Everybody |
| 2. The online App Builder (a tab inside the plugin) | Makes the Android app file for you on our servers. You fill in a form and press one button. No programming tools needed. | Most people |
3. The app source codeflutter-app-source.zip | The full code of the app (Flutter). Use it if you want an iPhone version, want to change how the app works, or prefer to build it yourself. | Developers |
Which way should I go?
| I want… | Do this |
|---|---|
| An Android app, quickly, with no technical work | Follow chapters 3 to 12. You never touch the source code. |
| An iPhone app | Chapters 3 to 9 for the store setup, then chapter 13 (needs a Mac and a developer). |
| To change the app's design or code | Chapters 13 and 15. |
The big picture in 8 steps
- Check your store is ready (chapter 3).
- Install the plugin (chapter 4).
- Design the home screen (chapter 5).
- Choose colours, login and links (chapters 6 and 7).
- Create a free Firebase project for notifications (chapter 8).
- Build the Android app online (chapter 10).
- Install it on your phone and test it (chapter 11).
- Publish it to Google Play (chapter 12).
Words you will see
| Word | What it means |
|---|---|
| App layout | One screen of your app (usually the home screen), designed in WordPress with blocks. |
| Block | A building piece of a page: a banner slider, a row of categories, a grid of products. |
| API | The "messenger" between your store and the app. The app asks your store for products; your store answers. You do not need to do anything with it. |
| Firebase | A free Google service that sends push notifications to phones and powers Google login. |
| Push notification | A message that pops up on the customer's phone, even when the app is closed. |
| APK | The Android app file. You install it on a phone to test. |
| AAB (App Bundle) | The Android file that Google Play asks for when you publish. |
| Package name | The app's unique ID, like com.yourshop.app. It never changes after you publish. |
| HTTPS | The padlock in the browser. Your store address must start with https://. |
| Permalinks | The way your store builds web addresses. Anything except "Plain" works. |
| Purchase code | The code that proves you bought this product. The builder asks for it. |
| OTP | A one-time code sent by SMS so people can log in with their phone number. |
| Flutter | The technology the app is written in. Only developers need it. |
Before you start: check your store
Checklist
| Check | Why | How |
|---|---|---|
| WordPress 6.0+, WooCommerce 8.0+, PHP 7.4+ | Required versions | Dashboard → Tools → Site Health → Info |
| Your store address starts with https:// | Phones refuse plain http | Ask your hosting company to enable the free SSL certificate |
| Permalinks are not "Plain" | The app reaches your store through /wp-json/ | Settings → Permalinks → choose "Post name" → Save |
| The store is Live | New stores start in "Coming soon" mode and the app would see nothing | WooCommerce → Settings → Site visibility → Live |
| You have products | An empty store makes an empty app | Products → Add New |
Accounts you may need
| Account | For | Cost |
|---|---|---|
| Google (Gmail) | Firebase (notifications). Needed. | Free |
| Google Play Console | Putting the app on Google Play | One-time fee |
| Apple Developer | Putting an iPhone app on the App Store | Yearly fee |
| Facebook developer, Apple sign-in, SMS provider | Only if you want those login methods | Varies |
Install the plugin
- In your WordPress dashboard open Plugins → Add New → Upload Plugin.
- Choose the file
mobile-app-for-woocommerce-plugin.zipand press Install Now, then Activate.Use the inner zip files only. Do not upload the big complete-package zip. - Two new menu items appear on the left: App Layouts and App Settings. Three sample layouts were created for you.
Check that it works
Open this address in your browser (replace with your own store address):
https://yourstore.com/wp-json/mo-app/v1/homepage
If you see a page of text full of curly brackets, the plugin works. If you see "Active App Layout not configured", that is normal for now: you choose the layout in chapter 6.
Design your home screen
- Go to App Layouts and open Modern Store Homepage (or press Add Post for a new one).
- Click the blue + button and search for Mobile. You will find three blocks: Mobile: App Banners, Mobile: App Categories, Mobile: App Product Collection.
- Add the blocks you want and drag them into the order you like.
- Click a block and use the settings on the right to change it (see the tables below).
- Press Update (or Publish).
The three blocks
| Block | Shows | Main settings you will use |
|---|---|---|
| App Banners | Pictures that slide, or a grid of promotional pictures | Add images; choose what happens when tapped (open a product, a category, a web link, or nothing); slider or grid; height; rounded corners; autoplay |
| App Categories | Your product categories as round pictures | Style (scroll sideways, grid or list); item size; how many; choose a parent category to show its sub-categories |
| App Product Collection | A grid or a scrolling row of products | Choose a category; how many products; card size; columns; an optional countdown timer for sales |
Make it pretty (all three blocks)
- Title and description with their own colours.
- Background: a colour, a gradient or a picture.
- Spacing: padding above and below, rounded corners.
The side panel: App Screen Settings
In the right-hand panel you will find App Screen Settings. It controls the top bar and the search bar of this screen:
| Setting | What it does |
|---|---|
| App Bar Title / Logo | The name or logo at the top of the screen |
| Hide App Bar | Full-screen look with no top bar |
| Background / Text colour | Colours of the top bar |
| Show Bottom Search Bar | Adds a search box and lets you set its hint text |
| Pull to refresh | Customers can swipe down to reload |
| Pinned / Floating | Whether the top bar stays or hides when scrolling |
What is saved behind the scenes (for the curious)
Each layout is saved as simple block text like this. You never have to type it, it is only here so you know there is no magic:
<!-- wp:wc-mobile/banners {"layoutType":"slider","bannerHeight":170,"showDots":true,"autoplay":true} /-->
<!-- wp:wc-mobile/categories {"title":"Shop by category","displayStyle":"horizontal_scroll"} /-->
<!-- wp:wc-mobile/products {"title":"Fresh picks for you","layoutType":"grid","gridColumns":2,"limit":6} /-->App Settings, tab by tab
General Settings
| Setting | What to do |
|---|---|
| Active App Homepage | Choose your layout here. This is the step that switches the home screen on. |
| App Layout Direction | Leave on System Default. Choose Right-to-Left to force Arabic-style layout for everyone. |
| Legacy Accent Color | Only used if you turn the theme options off. You can ignore it. |
Drawer Menu
Switch the slide-out menu on or off, show or hide My Wallet and Reward Points (they need extra plugins, see chapter 14), and choose its background: a colour, a gradient or a picture address.
Legal & Policies
Paste the web addresses of your Privacy Policy, Terms & Conditions and Return Policy pages. Stores such as Google Play require a privacy policy.
Support & Social
Your support email, WhatsApp number (with country code, for example +971…) and your Facebook, Instagram and X pages.
App Info & Updates
After you publish, paste the Play Store and App Store links. Minimum App Version: if a customer has an older version than this number (for example 1.0.5), the app asks them to update before continuing. Leave it empty until you really need it.
Theme (Flex)
| Setting | What it changes |
|---|---|
| Primary Brand Color | Main buttons, active menu item, highlights. Pick your brand colour. |
| Secondary / Accent Color | Small highlights such as badges |
| Surface Blend Mode and Strength | How much of your brand colour tints the backgrounds. "Level Surfaces, Low Scaffold" with strength 7 is a gentle, recommended look. |
| Top Bar Style | Whether the top bar is plain or coloured |
| Roundness | Corner roundness of cards and pictures (0 sharp, 12 soft, 30 very round) |
| Main Button Style | Filled, with shadow, or outline only |
| Button colour and corners | Use the brand colour or choose a special one |
| Modern Design (Material 3) | Leave on |
Let customers log in
| Method | What you need | Difficulty |
|---|---|---|
| Email and password | Nothing, always on | None |
| A Firebase project (chapter 8) with Google sign-in switched on, and the SHA fingerprints of your app added to Firebase | Medium | |
| A Facebook developer app: its name, ID and client token go into the App Builder (chapter 10) | Medium | |
| Apple | Apple Developer account. Required by Apple if you offer other social logins in an iPhone app | Medium |
| Phone number (OTP) | An SMS provider: 2Factor (Indian +91 numbers only) or OTPless | Medium |
| Phone Login ONLY | Hides email and social buttons: customers only enter their phone number | Easy once OTP works |
Setting up phone login (OTP)
- Open the SMS / OTP section further down in the Integrations tab.
- Choose 2Factor or OTPless as the provider.
- Paste the key(s) from your provider into the boxes that appear.
- Tick Enable Phone Login at the top, then Save All Settings.
Set up Firebase (notifications and Google login)
Part A: create the project and register the Android app
- Go to console.firebase.google.com and sign in with your Google account.
- Press Add project, give it your shop's name and finish the wizard (you can turn Google Analytics off).
- Inside the project press the Android icon to add an Android app.
- In Android package name type the package name you want for your app, for example
com.yourshop.app. Write it down: you will type the same one in the App Builder. - Press Register app, then Download google-services.json. Keep this file safe. You can skip the other steps of the wizard.
Part B: copy four values into the plugin
- In Firebase press the gear icon → Project settings → tab General.
- Scroll to Your apps. Copy the API key, Project ID, App ID and Messaging Sender ID (the Sender ID is under the Cloud Messaging tab).
- In WordPress open App Settings → Integrations & APIs → Firebase Configuration and paste each value into its box.
Part C: the key that lets your store send notifications
- In Firebase project settings open the Service accounts tab.
- Press Generate new private key. A small file ending in
.jsondownloads. - Open that file with a text editor (Notepad, TextEdit), select everything and copy it.
- Paste it into the big box Firebase Service Account JSON in the plugin and press Save All Settings.
Part D (only for Google login)
- In Firebase open Authentication → Sign-in method and switch on Google.
- After your first build, add the app's SHA-1 and SHA-256 fingerprints in Project settings → your Android app. For Google Play builds use the fingerprints that Google Play shows under App integrity.
- Download
google-services.jsonagain and use the new file for the next build.
Notifications and messages to customers
Automatic order notifications
In Integrations & APIs tick Order Placed and Order Status Updated to send a push notification to the customer's phone whenever an order is placed or changes status (processing, shipped…).
Below, Notification Message Templates let you write your own wording. You can use these placeholders, which are replaced with real details:
| Type | Becomes |
|---|---|
{order_id} | The order number |
{order_status} | The new status |
Title: Order #{order_id} update
Message: Your order is now {order_status}. Thank you for shopping with us!WhatsApp and SMS (optional)
- WhatsApp: sends order receipts and updates through Meta Cloud API, Twilio or UltraMsg. Paste the provider's token and the sender number.
- SMS: sends order updates with 2Factor, MSG91, Twilio or Unifonic. Tick Order Updates via SMS and paste the provider's key.
Send your own announcement
- Open the Send Notification tab.
- Type a title and a message (for example "Weekend sale: 20% off fruit").
- Choose All users, or Selected users and search by name or email.
- Press send. A green message means Firebase accepted it. A red message tells you what to fix.
Build your Android app online (App Builder)
What you need on the table first
| Item | Where to get it |
|---|---|
| Your purchase code | From your purchase receipt. Each purchase code builds one app for one store address. |
| Your store address | For example https://yourshop.com |
| An app name and package name | You decide: for example "My Shop" and com.myshop.app. The package name must be the same one you typed in Firebase. |
| google-services.json | Downloaded in chapter 8, Part A |
| WooCommerce keys | Created below (2 minutes) |
| Three pictures | App icon (square, 1024 × 1024), a loading logo, and a splash picture |
| Your email address and phone number | So we can send you the download link |
Create the WooCommerce keys (one time)
- Open WooCommerce → Settings → Advanced → REST API → Add key.
- Description: Mobile app. User: your admin account. Permissions: Read/Write.
- Press Generate API key. Copy the Consumer key and Consumer secret into a safe note. The secret is shown only once.
Fill in the App Builder
- Open App Settings → App Builder.
- Under Connect to Cloud Builder type your Site URL and Purchase Code, then press Fetch App Details. A green message says the connection works and the form below opens.
- Basic App Information: app name, package name, your email, phone and two-letter country code (for example AE, IN, US).
- Security Keys: paste the Consumer Key and Consumer Secret. Add a Google Maps key only if you want customers to pick their address on a map.
- Facebook Login Setup: fill only if you use Facebook login.
- Branding Images: pick the splash colour, then choose the App Icon, Loading Logo, Splash Image and the Firebase Config file (
google-services.json). Each file uploads the moment you choose it and shows a green Uploaded Successfully. - Choose the Build Output Type: APK to test on your own phone, App Bundle (AAB) for Google Play.
- Press Save Details, then Start Android Build.
What happens next
| Status | Meaning |
|---|---|
| Pending | Your build is in the queue. The server starts the next waiting build every few minutes. |
| In progress | Your app is being made. |
| Completed | Done. You receive an email with a download link ("Download APK" or "Download AppBundle"). |
| Failed | You receive an email saying so. Check the picture, Firebase file and package name, then build again. |
Rules to know
- All four files are required: icon, loading logo, splash image and
google-services.json. - The package name must appear inside your
google-services.json. On your very first build, if they differ, the builder adopts the package name from the file. - One purchase code allows the number of apps stated on your licence (normally one app for one store address). If you see "maximum number of apps reached", contact support.
- Some licences are limited to APK builds. The builder then makes an APK even if you chose App Bundle.
- The builder makes Android files. For iPhone see chapter 13.
- Your uploaded pictures and Firebase file are removed from the build server after about three months.
When something goes wrong
| You see | Do this |
|---|---|
| Red message after Fetch App Details | Check the store address (with https) and the purchase code. Make sure your hosting allows outgoing connections. |
| "Email and Phone are required" | Fill both fields and save again. |
| "Icon / Splash / Logo / Google services file is missing" | Upload the missing file and build again. |
| "The google-services.json file does not contain the package name" | Your Firebase app was registered with a different package name. Fix one of them so both match. |
| No email after a long time | Check spam. Make sure the email in the form is correct, save, and contact support with your store address. |
apps.taqnix.com) over a secure connection. Nothing is sent until you press the buttons in this tab. Create a key just for the app, and delete it under WooCommerce → Settings → Advanced → REST API when you no longer need the builder.Install the app on your phone and test it
- Open the email on your Android phone and tap Download APK (or download on a computer and send the file to the phone).
- Open the downloaded file. Android may ask you to allow installing from this source. Allow it for this one time.
- Open the app. Wait a few seconds: the splash screen shows, then your home screen.
- Walk through this checklist.
| Test | OK? |
|---|---|
| The home screen shows your banners, categories and products | ☐ |
| Colours and name look right | ☐ |
| Open a product, choose a variation, add to cart | ☐ |
| Create an account and log in | ☐ |
| Place a test order with cash on delivery | ☐ |
| The order appears in WooCommerce → Orders | ☐ |
| You receive the order notification on the phone | ☐ |
| Every login method you switched on works | ☐ |
| Privacy policy and contact links open | ☐ |
Publish your app to the stores
Google Play (Android)
- Create a Google Play Console developer account.
- Create a new app and fill in the store listing: short and long description, an icon, screenshots of the app and a feature graphic.
- Add the link to your privacy policy (required).
- Fill in the content questionnaires (ads, data safety, target age). Explain that the app uses location to fill in the delivery address, and does not show ads.
- Build an App Bundle (AAB) in the App Builder, upload it under Production → Create release, and send it for review.
- Review usually takes from a few hours to a few days. Afterwards paste the store link into App Settings → App Info & Updates.
Apple App Store (iPhone)
An iPhone app needs a Mac with Xcode and an Apple Developer account, so this part is done from the source code with a developer's help (chapter 13). Apple also requires Sign in with Apple if the app offers other social logins, and a privacy policy.
For developers: build the app from the source code
One-time setup
- Install Flutter 3.41 or newer (this installs Dart too).
- Run
flutter doctorand fix every item it reports (Android SDK and licences, Xcode, CocoaPods). - Unzip
flutter-app-source.zip, open a terminal in the folder and run:
flutter pub get
Point the app to your store
Open lib/core/constants/app_config.dart and change two lines:
static const String siteUrl = 'https://yourstore.com'; // no slash at the end static const String appName = 'My Store';
The API path /wp-json/mo-app/v1 is added for you. To test with a store on your own computer use an address the phone can reach: Android emulator http://10.0.2.2:8888/wp, iPhone simulator http://localhost:8888/wp.
Name, ID, icon, splash and version
| What | Command or file |
|---|---|
| Package name (both platforms) | dart run change_app_package_name:main com.yourbrand.appDefault is com.taqnix.groceryapp. Then check Bundle Identifier in Xcode. |
| Name under the icon | Android: android:label in android/app/src/main/AndroidManifest.xml. iPhone: Display Name in Xcode. |
| App icon | Replace assets/icon/icon_android.png (1024 × 1024) then rundart run flutter_launcher_icons |
| Splash screen | Replace assets/images/splash.png, set the colour in pubspec.yaml (block flutter_native_splash) then rundart run flutter_native_splash:create |
| Version | version: 1.0.0+11 in pubspec.yaml (name + build number). Raise the number after the plus sign for every store upload. |
Firebase files
The package has no Firebase files: they belong to your own project (chapter 8).
- Android: put
google-services.jsonintoandroid/app/, then add the Google services plugin. Inandroid/settings.gradle.ktsadd insideplugins { }:
id("com.google.gms.google-services") version "4.4.2" apply falseand in android/app/build.gradle.kts add inside plugins { }:
id("com.google.gms.google-services")- iPhone: open
ios/Runner.xcworkspacein Xcode, dragGoogleService-Info.plistinto the Runner folder and tick Copy items if needed.
Without these files the app still shops normally, but push notifications and Google login are off.
Facebook, Google, Apple, maps
In ios/Runner/Info.plist replace the placeholders:
<string>fbYOURAPPID</string> <!-- keep the fb prefix --> <key>FacebookAppID</key><string>YOURAPPID</string> <key>FacebookClientToken</key><string>CLIENT-TOKEN</string>
For Android follow the flutter_facebook_auth package guide. Switch on Google and Apple in Firebase Authentication; Apple sign-in also needs the Sign in with Apple capability in Xcode. Razorpay needs no key in the app: it is read from your WooCommerce Razorpay settings.
Run and build
flutter run # on a phone or emulator flutter build apk --release # Android APK flutter build appbundle --release # Android AAB for Google Play flutter build ipa --release # iPhone (on a Mac)
Sign the Android app for Google Play
Release builds use the debug key until you add your own. Create a key once and keep it safe:
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
Create android/key.properties:
storePassword=YOUR_PASSWORD keyPassword=YOUR_PASSWORD keyAlias=upload storeFile=/Users/you/upload-keystore.jks
and in android/app/build.gradle.kts load it and use it in signingConfigs / buildTypes.release as described in the Flutter signing guide. For iPhone choose your team in Xcode → Signing & Capabilities.
What the app can do
| Area | What customers can do |
|---|---|
| Home | See your banners, categories and products as you designed them; pull down to refresh. |
| Search and filters | Search, and filter by category, price and product options (colour, size…). |
| Product page | Pictures, price, options, description, reviews; write a review; add to wishlist. |
| Cart | Change quantities, remove items, use coupon codes. |
| Checkout | Fill the same address fields as on your website, choose shipping and payment. Cash on delivery finishes inside the app, Razorpay opens its own payment sheet, other payment methods open a secure web page and return to the app. |
| Account | Log in or register, edit profile, saved addresses (with map), orders and order details, log out. |
| Wallet and reward points | See balance and history. Needs the plugins TeraWallet and WooCommerce Points and Rewards. Switch the menu entries on in App Settings → Drawer Menu. |
| Side menu and info | Privacy, terms and returns pages, contact links, forced update screen. |
| Notifications | Order updates and your own announcements. |
For developers: the REST API
Base address: https://yourstore.com/wp-json/mo-app/v1. Logged-in calls send the header X-App-Token that the login call returns.
Try it
# The home layout and global settings
curl https://yourstore.com/wp-json/mo-app/v1/homepage
# Products: page 1, 10 items, search for "milk"
curl "https://yourstore.com/wp-json/mo-app/v1/products?page=1&per_page=10&search=milk"
# Log in and keep the token
curl -X POST https://yourstore.com/wp-json/mo-app/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"customer@example.com","password":"secret"}'
# Use the token to read the customer's orders
curl https://yourstore.com/wp-json/mo-app/v1/orders -H "X-App-Token: YOUR_TOKEN"Dart example (inside the app)
final res = await dio.get('/products', queryParameters: {'category': 'fruits', 'per_page': 20});
final products = res.data['products'];All endpoints
| Endpoint | Purpose |
|---|---|
GET /homepage | Settings (theme, currency and tax, login methods, drawer, links, versions) and the active layout. |
GET /products, GET /products/{id} | Products. Parameters: page, per_page, include, search, category, attributes, min_price, max_price, orderby, order. |
GET /product-attributes | Filter options, optionally for one category. |
GET /products/{id}/reviews, POST /write-review | Reviews. |
GET /categories | Categories with pictures and counts. |
POST /auth/register, /auth/login, /auth/logout | Email and password accounts. |
POST /auth/send-otp, /auth/verify-otp | Phone login with a one-time code. |
POST /auth/social-login | Google, Facebook or Apple login with the provider's token. |
GET/POST /auth/profile, POST /auth/fcm-token | Profile and the phone's push token. |
GET /cart, POST /cart/add, /cart/update, /cart/remove, /cart/apply-coupon, /cart/remove-coupon | Cart. |
GET /checkout/form, POST /checkout/update-review, POST /checkout | Checkout fields, totals and placing the order. |
GET /orders, GET /orders/{id} | The customer's orders. |
GET/POST /addresses, PUT/DELETE /addresses/{id} | Saved addresses. |
GET /wishlist, GET /wishlist/details, POST /wishlist/toggle | Wishlist. |
GET /wallet, GET /points | Wallet and points (extra plugins required). |
The plugin's includes/api folder has one file per group with the exact parameters.
Problems and fixes
| What you see | What to do |
|---|---|
| The app shows a loading error or no products | Open https://yourstore.com/wp-json/mo-app/v1/homepage in a browser. It must load without a login. If not: use https, set permalinks to anything but Plain, set the store to Live, and check that no security plugin or firewall blocks /wp-json/. |
| The web address says "Active App Layout not configured" | App Settings → General Settings → Active App Homepage: choose a layout and save. |
| I changed a colour or the layout and the app did not change | Press Save All Settings (or Update on the layout), then pull down to refresh or reopen the app. |
| The home screen is empty | The layout has no blocks, or the categories and products block found nothing. Add products and check categories are not empty. |
| The banners are grey | The banner picture addresses are wrong, or the pictures are not public. Re-add them from the Media Library. |
| Notifications do not arrive | Check the Firebase Service Account JSON is pasted in full, the package name is the same everywhere, the phone allowed notifications, and the customer logged in once. |
| Google login fails | Add the SHA-1 and SHA-256 of the signing key to Firebase, download google-services.json again, rebuild. |
| The OTP code does not arrive | 2Factor works for Indian numbers only. Use OTPless for other countries. Check your provider's balance and key. |
| Wallet or points show nothing | Install and activate TeraWallet and WooCommerce Points and Rewards. |
| Fetch App Details fails | Check address and purchase code; see chapter 10. |
| My release app cannot connect (own build) | The Android manifest needs the INTERNET permission. It is included; keep it if you replace the file. |
| iPhone build fails in Xcode | Run cd ios && pod install --repo-update, add GoogleService-Info.plist, choose a signing team and a unique bundle ID. |
| The cart or checkout looks odd in the app | The checkout form comes from WooCommerce. Check your checkout fields and payment methods in WooCommerce → Settings. |
Updating and removing
Update the plugin by uploading the new zip (Replace current with uploaded); your layouts and settings are kept. Update the app by building a new version and uploading it to the stores. To remove the plugin, deactivate and delete it; your app layouts stay in the database until you delete them from App Layouts.
Support
Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace item page where you purchased the package. When you write, include your store address and what you see on the screen.