Skip to content
TAQNIX
Odoo ModulesWordPress PluginsWordPress ThemesShopify ThemesApp TemplatesScripts & UtilitiesBlogSell on TAQNIX

Odoo eCommerce Mobile App documentation

A guide to the Odoo eCommerce Mobile App: installing the module, branding the app, designing the home page, payments, sign-in, notifications, building and publishing for Android and iPhone.

Documents version 1.0.0Updated Oct 24, 2026

Start here

In plain words: This package gives you a complete shopping app for iPhone and Android that sells what is in your Odoo website shop. It has two parts that work together: an Odoo module (taqnix_ecommerce_app) that you install on your Odoo server, and the Flutter source code of the app that you build and publish under your own name. The module decides how the app looks (logo, colors, home page with banners and sliders), which payment and sign-in methods it offers and which notifications it sends; the products, prices, stock, customers, orders and payments are the ones of your Odoo.
The app on a phone and its settings in Odoo.
The app on a phone and its settings in Odoo.
Tip: Changing the design of the home page, the colors or the payment methods in Odoo takes effect in every installed app the next time it opens. You publish a new version of the app only to change its code, name or icon.

What is in the package

ItemWhat it is
taqnix_ecommerce_app.zipThe Odoo 19 module: API for the app, branding, home page designer, payments, sign-in, notifications, Arabic translation.
flutter-app-source.zipThe Flutter project of the app (Android and iOS), with the setup script tools/setup.dart, its own README and tests.
documentation/This guide in English (index.html) and Arabic (index-ar.html), with PDFs.
licensing/The licence (OPL-1: one purchase = one shop and one app brand, updates included).
preview-images/Screenshots of the app and of the Odoo settings.
changelog.txtHistory of the versions.

How it works

PartWhere it runsWhat it does
Odoo moduleYour Odoo serverAnswers the app on https://your-shop/mo-app/v1/...: catalog, cart, checkout, orders, accounts, home page layout, branding.
Flutter appThe phones of your customersShows the shop, keeps the cart, signs customers in and opens the payment page.
Odoo website payment pageInside the app (web view)Takes the payment with the provider you configured in Odoo (card, wallets, local gateways) and confirms the order.
Firebase (optional)GoogleDelivers push notifications to the phones.
Tip: The app never talks to the database directly and it never contains a secret: the keys of your payment providers stay in Odoo, the key that sends notifications stays on the server.

What you need

ItemDetails
Odoo19.0 Community or Enterprise, with the apps Website, eCommerce and Discount & Loyalty (installed automatically with the module).
AddressA public https address for your Odoo (for example https://shop.example.com): the phones must reach it. A self-signed certificate does not work on phones.
Your shopPublished products with prices, a delivery method and at least one payment provider (or cash on delivery).
A computer to build the appA Mac for iPhone and Android apps (Windows or Linux can build Android only), about 30 GB of free space.
Developer toolsFlutter 3.41 or newer, Android Studio, and Xcode (the current version) with CocoaPods for iOS.
Store accountsGoogle Play Console (one-time fee) and Apple Developer Program (yearly fee) to publish.
OptionalA Firebase project (free) for push notifications; Google, Facebook and Apple developer settings for social sign-in.

Install the Odoo module

  1. Unzip the package. Inside is taqnix_ecommerce_app.zip; unzip it to get the folder taqnix_ecommerce_app.
  2. Copy the folder into one of the addons_path folders of your Odoo server and restart Odoo.
  3. Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
  4. Remove the “Apps” filter, search eCommerce Mobile App Connector and press Install.
# or from the command line
./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_ecommerce_app --stop-after-init
Tip: The module installs the Odoo eCommerce dependencies it needs. On Odoo.sh or a hosted Odoo, upload the folder through your Git repository or the hosting panel, then update the Apps list.
In plain words: After the installation a new app Mobile App appears in the main menu (for administrators and for users in the group Mobile app: manager).

Get your shop ready

In plain words: The app shows what the Odoo website shows, so prepare the shop first, as for the website.
WhatWhere in OdooNotes
ProductsWebsite → eCommerce → ProductsPublish them, add a price, images, categories (eCommerce Categories), variants (colors, sizes) and stock if you track it.
CategoriesWebsite → eCommerce → eCommerce CategoriesThe categories (with their image) are the ones of the category slider and the filters.
Delivery methodsWebsite → Configuration → Shipping MethodsPublish at least one. The app shows the ones that apply to the address and their price.
Taxes and currencyAccounting and Website settingsPrices are shown with or without tax like on your website (Website → Settings → Prices).
Discount codesWebsite → eCommerce → PromotionsPromo codes and coupons work in the cart of the app.
LanguagesWebsite → Configuration → Settings → LanguagesAdd the languages of your customers (for example Arabic); products, categories and messages follow the language of the phone.
Tip: Open your website on a phone first: if a product is not on the website it is not in the app.

Give the app your brand

In plain words: Open Mobile App → Settings. The tab Brand holds the name, the logo (shown on the start screen, the sign-in screens and the menu), an optional app icon, the colors and the look of the buttons, the corners and the side menu. Everything you change here is read by the app when it starts.
The Brand tab: name, logo, colors and style.
The Brand tab: name, logo, colors and style.
The result in the app.
The result in the app.
SettingEffect
LogoA square PNG of 1024 × 1024 is best. The same image makes the app icon unless you add an App icon.
Primary, secondary and accent colorButtons, links, selected items, price highlights and the top bar when its style is Primary.
Splash backgroundThe color behind the logo while the app loads.
Style and buttonsMaterial 3, how soft or contrasted the surfaces are, corner radius, filled, outlined or elevated buttons.
Layout directionFollow the language (right to left for Arabic and Hebrew), or force left to right or right to left.
Side menuShow or hide it; plain color, gradient or image background.

Design the home page

In plain words: Mobile App → Home layouts lists the layouts. A layout is a stack of blocks from top to bottom; the one marked In the app is shown. You can keep several layouts (for example one for a sale) and switch with Show in the app.
A layout: its blocks, the top bar and the page.
A layout: its blocks, the top bar and the page.
BlockWhat it showsMain options
BannersA slider, a sideways scroll, a grid or cards (banner blocks) of images.Each banner opens nothing, a product, a category, a search or a web page when tapped; autoplay, dots, countdown, image fit.
ProductsA slider, grid, list or sideways scroll of products.Latest, from a category, best sellers, top rated, on sale or chosen by hand; how many; countdown for a flash sale.
CategoriesThe categories as round icons, a grid, a slider or a list.All top categories or the sub-categories of one; sizes.
A banner block: images and what each one opens.
A banner block: images and what each one opens.
A product block: source, layout and countdown.
A product block: source, layout and countdown.
Banners, categories, new arrivals and a flash sale in the app.
Banners, categories, new arrivals and a flash sale in the app.
In plain words: The Top bar tab sets the title or logo, the search box, the colors and how the bar behaves when scrolling; the Page tab sets the page color and pull to refresh. Preview the data the app receives opens the exact data the phones get.
The top bar of the home page.
The top bar of the home page.
Tip: Heading, description and every banner text are translated per language like any other Odoo text: switch the language of your user and edit.

Take payments

In plain words: The app offers cash on delivery (the order is confirmed at once) and every online payment provider that is enabled and published in Odoo. For an online payment the customer sees the payment page of your website inside the app, pays with the provider and comes back to the confirmation.
Payment settings of the app.
Payment settings of the app.
  1. In Odoo open Website → Configuration → Payment Providers (or Accounting → Configuration → Payment Providers).
  2. Choose a provider (Stripe, PayPal, Adyen, Razorpay, Mollie, Paymob, Flutterwave, Authorize.Net, Worldline, Mercado Pago, Xendit and others), enter the keys they give you and set the state to Test first, then Enabled.
  3. Switch Published on, choose the payment methods and the countries and currencies it accepts.
  4. In Mobile App → Settings → Payments leave Online payment methods empty to offer them all, or pick the ones the app shows.
  5. Place a test order from the app and check the payment in Mobile App → Orders from the app.
Checkout: address, shipping method, payment method and totals.
Checkout: address, shipping method, payment method and totals.
The payment page of the provider inside the app.
The payment page of the provider inside the app.
The confirmation after payment.
The confirmation after payment.
Important: Each provider has its own rules (accepted currencies, countries, 3-D Secure, webhooks). Follow the Odoo documentation of the provider and test in test mode before you go live. Bank transfer works too: the order is confirmed with the payment instructions.

Sign-in and sign-up

In plain words: Customers can sign up and sign in with an email and a password, continue as a guest (if you allow it), or use Google, Facebook and Apple. The server checks every social sign-in token with the provider and accepts only tokens made for your app IDs. Staff users of Odoo can never sign in to the app.
Sign-in settings.
Sign-in settings.
The sign-in screen with the social buttons.
The sign-in screen with the social buttons.
MethodWhat to set upWhere
GoogleA Google Cloud project, an OAuth consent screen and OAuth client IDs: Web (its ID is also used by Android), Android (package name and SHA-1) and iOS (bundle ID). Paste the Web and iOS client IDs in Google client IDs.console.cloud.google.com → APIs & Services → Credentials
FacebookA Facebook app with Facebook Login; copy the App ID to Odoo, and the App ID and client token into the app (see the app README).developers.facebook.com
AppleAn App ID with the Sign in with Apple capability; paste the bundle ID in Apple client IDs. Apple requires it when the app offers another social sign-in.developer.apple.com → Certificates, IDs & Profiles
Tip: The native settings of each provider (URL schemes, client IDs, entitlements) are listed step by step in docs/native-setup.md inside the app folder.
In plain words: Forgot password sends the standard Odoo reset email. Delete my account in the app (required by Apple) deactivates the account and removes the personal data; the orders stay for your accounting.

Push notifications (optional)

In plain words: The app can tell customers when an order is placed or changes status (cancelled, partly or fully delivered), and you can send a message to every device. It uses Firebase Cloud Messaging, which is free.
Notification settings and messages.
Notification settings and messages.
  1. Create a project at console.firebase.google.com and add an Android app (your package name) and an iOS app (your bundle ID).
  2. In Odoo, Mobile App → Settings → Notifications, copy the project ID, the app IDs of the Android and the iOS app, the API key and the sender ID (Project settings → General).
  3. In Firebase open Project settings → Service accounts → Generate new private key and paste the whole JSON file in Service account JSON in Odoo. It stays on the server.
  4. For iPhone, upload an APNs authentication key in Firebase (Project settings → Cloud Messaging) and enable Push Notifications for the app ID at Apple.
  5. Customers allow notifications the first time they sign in. Use Mobile App → Send a notification for a message to all devices or to chosen customers.
Send a message to the devices.
Send a message to the devices.
Tip: Texts of the order notifications can use {first_name}, {order_name}, {order_status} and {total}.

Prepare your computer

  1. Install Flutter from flutter.dev (version 3.41 or newer) and run flutter doctor; fix what it reports.
  2. Android: install Android Studio, open it once, install the Android SDK and accept the licences with flutter doctor --android-licenses.
  3. iPhone (Mac only): install Xcode from the App Store, open it once to accept the licence, install the command line tools (xcode-select --install) and CocoaPods (sudo gem install cocoapods or brew install cocoapods).
  4. Unzip flutter-app-source.zip in a folder without spaces, then run flutter pub get inside it.
Tip: flutter doctor must show no red cross for the platforms you build for.

Connect the app to your shop

In plain words: The setup script writes the address of your shop and your package name into the project, takes the app name and colors from Odoo and downloads your logo and icon.
The Connect the app tab shows the command with your address.
The Connect the app tab shows the command with your address.
dart run tools/setup.dart --url https://shop.example.com --package com.yourcompany.shop

flutter pub get
dart run flutter_launcher_icons
dart run flutter_native_splash:create
OptionMeaning
--urlThe https address of your Odoo website (no trailing slash).
--packageThe unique ID of your app, like com.yourcompany.shop. It cannot change after publishing.
--nameOptional. The name under the icon; by default the name set in Odoo.
Tip: You can also pass the address when you run or build: flutter run --dart-define=SITE_URL=https://shop.example.com.

Run and test the app

  1. Start an Android emulator or an iPhone simulator, or plug in your phone.
  2. Run flutter run (add --dart-define=SITE_URL=... if you did not use the setup script).
  3. Walk through: home page, a category, search and filters, a product with options, cart, coupon, checkout with cash on delivery and with an online provider in test mode, orders, wishlist, sign-in and sign-up.
  4. In Odoo check Mobile App → Orders from the app and Devices.
Product page with options, stock and reviews.
Product page with options, stock and reviews.
Cart with a promo code.
Cart with a promo code.
My orders.
My orders.
Tip: To test against an Odoo on your own computer over plain http, run the debug build (the debug build allows http; release builds only allow https).

Build and publish the Android app

  1. Create the signing key once and keep it safe (without it you can never update the app): keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload.
  2. Create android/key.properties with storePassword, keyPassword, keyAlias=upload and storeFile (the path of the keystore). The app README shows the exact lines.
  3. Build: flutter build appbundle --release --dart-define=SITE_URL=https://shop.example.com. The file is build/app/outputs/bundle/release/app-release.aab.
  4. In Google Play Console create the app, fill the store listing (name, description, icon 512 × 512, feature graphic 1024 × 500, phone screenshots), the Data safety form, the content rating and the privacy policy URL.
  5. Upload the .aab to a testing track first. New personal developer accounts must run a closed test with at least 12 testers for 14 days before applying for production; organization accounts do not.
  6. Send the release for review and publish.
Important: Use the same package name and the same signing key for every update.

Build and publish the iPhone app

  1. In developer.apple.com create an App ID with your bundle ID and the capabilities you use: Sign in with Apple and Push Notifications.
  2. In App Store Connect create the app with the same bundle ID.
  3. Open ios/Runner.xcworkspace in Xcode, select the Runner target → Signing & Capabilities, choose your team and enable Automatically manage signing.
  4. Build: flutter build ipa --release --dart-define=SITE_URL=https://shop.example.com, then upload with Xcode (Window → Organizer → Distribute App) or the Transporter app.
  5. In TestFlight test the build, then in App Store Connect fill the listing, screenshots, privacy details and the review information, and submit for review.
Apple review checklistDone by the app?
Account deletion inside the appYes (Account → Delete my account)
Sign in with Apple next to other social sign-insYes (turn it on in Odoo)
Privacy policy and terms linksSet them in Odoo → Settings → Links
A demo account for the reviewerCreate a customer in Odoo and write it in the review notes
Payments for physical goods through your own gatewayAllowed: the app sells physical goods, not digital content

Day to day

In plain words: Work as you do for the website. Mobile App → Orders from the app lists the orders placed in the app, with the payment method and the delivery location the customer shared; confirm, deliver and invoice them as usual. Devices shows the phones signed in; Sign out every device in the Connect tab forces everybody to sign in again.
Orders placed from the app.
Orders placed from the app.
An order with the app details.
An order with the app details.
The same order in the app.
The same order in the app.
Tip: Maintenance mode (Settings → Links) shows your message instead of the shop; Minimum app version asks old apps to update.

Languages and right to left

In plain words: The app follows the language of the phone (English and Arabic are included; the layout becomes right to left for Arabic). Products, categories, banners, payment and shipping names and the messages of the server come from Odoo in the same language. The administration is also translated.
The home page in Arabic.
The home page in Arabic.
Checkout in Arabic.
Checkout in Arabic.
The settings in an Arabic Odoo.
The settings in an Arabic Odoo.
Tip: To add another language of the app, copy lib/l10n/app_en.arb to app_xx.arb and translate it; see the app README.

Updates

Replace the module folder with the new version, restart Odoo and run -u taqnix_ecommerce_app; your settings, layouts and devices are kept. For the app, unzip the new source next to your project, keep your android/key.properties and keystore, run the setup script again (it rewrites the shop address, the package name and the branding) and build. Keep the build number higher than the published one (version: in pubspec.yaml).

Security and privacy

TopicHow it is handled
SecretsProvider keys and the notification key stay in Odoo. The app contains only public identifiers.
SessionsA signed-in phone holds a random token; Odoo stores only its hash. Tokens of devices unused for a year are removed. Sign out and Delete account revoke them.
Social sign-inTokens are verified with Google, Facebook and Apple on the server, including the app ID they were issued for.
Staff accountsOdoo users with internal access cannot sign in to the app.
PaymentsHandled by your provider on the website payment page; the app never sees card data. The payment link is signed and expires after one hour.
Orders and addressesA customer sees only their own orders and addresses; guests see only the order they placed from the same app.
ReviewsOnly signed-in customers can write them.
PrivacyAccount deletion anonymises the customer. Write your privacy policy (the stores ask for it) and link it in the settings.
Tip: Protect sign-up from bots with your usual tools (firewall rate limits or a reverse proxy) as for any public Odoo address.

Good to know

LimitDetail
One shop per websiteEach Odoo website has one app configuration; a multi-website Odoo has one per website.
Prices of filtersThe price filter uses the public price of the product, before pricelist discounts.
VariantsProducts with many combinations: only existing variants can be bought in the app (create variants when you configure the product).
Phone loginSign-in by SMS code is not included.
Wallet and loyalty pointsNot included; promo codes and coupons are.
Wallet paymentsApple Pay and Google Pay buttons do not appear inside the payment web view; cards and other redirect methods work.
OfflineThe app needs a connection; it shows a friendly message when there is none.

For developers

In plain words: Skip this chapter if you only use the product.
curl https://shop.example.com/mo-app/v1/ping
# {"ok": true, "api_version": 1}
curl https://shop.example.com/mo-app/v1/homepage
curl "https://shop.example.com/mo-app/v1/products?per_page=5&orderby=price&order=asc"
curl -X POST https://shop.example.com/mo-app/v1/auth/login -H 'Content-Type: application/json' -d '{"email": "sara@example.com", "password": "..."}'
AreaEndpoints under /mo-app/v1
AppGET /ping, /homepage, /app-config, /branding/logo.png, /branding/icon.png
CatalogGET /categories, /products, /products/<id>, /product-attributes, /products/<id>/reviews; POST /write-review
CartPOST /cart, /cart/add, /cart/update, /cart/remove, /cart/apply-coupon, /cart/remove-coupon
CheckoutGET /checkout/form; POST /checkout/update-review, /checkout; GET /pay/<order> (signed link), /orders/<id>/payment-status
AccountPOST /auth/login, /auth/register, /auth/social-login, /auth/logout, /auth/profile, /auth/forgot-password, /auth/delete-account, /auth/fcm-token
Orders and morePOST /orders, /orders/<id>; GET/POST /addresses; GET/POST /wishlist, /wishlist/toggle, /wishlist/details
In plain words: Signed-in calls send Authorization: Bearer <token>; the guest cart is the cookie mo_cart (or the header X-Cart-Token); the language is the Accept-Language header or ?lang=. Errors are {code, message, data: {status}}. The Flutter code uses Riverpod, go_router and Dio; the folder map is in the app README. The module has 70+ automated tests (--test-tags /taqnix_ecommerce_app) and the app has unit tests (flutter test).

Troubleshooting

ProblemWhat to do
The app shows a connection errorOpen https://your-shop/mo-app/v1/ping on the phone. It must answer {"ok": true}. Check the address (https, no trailing slash), the certificate and that the module is installed on the right database.
The home page is emptyOpen Mobile App → Settings → Home page and choose a layout; add blocks to it.
A product is missingPublish it on the website and check its category and the website it belongs to.
No payment method in checkoutEnable and publish a provider, or turn on cash on delivery in Settings → Payments.
Payment page stays empty or goes back to the cartThe delivery address, a shipping method and the provider currency must fit the cart. Open the same order on the website to see the message.
Social sign-in says invalid tokenThe client ID in Odoo does not match the one the app was built with (Web client ID for Google, bundle ID for Apple).
No notificationsCheck the Firebase IDs, the service account, that the customer allowed notifications and (iPhone) the APNs key.
The old app does not see my changeLayout, colors and payments are read at start; close and reopen the app. Name and icon need a new build.

Support

Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.