E-commerce with a Loyalty Program


Creating a Mobile App with a Loyalty Program — a New Distribution Channel for a Pharmacy Chain “Rigla”

Rigla is a large pharmacy chain present on a retail market through three brands: Rigla — high price tier, Bud Zdorov (Russian, “Get Well”) — middle price tier and Zhivika — low price tier.

Each has its target audience, geography, pricing, and loyalty program, thus it’s unwise from the marketing point of view to merge all audiences into one and make a single app.

Hence, we needed to make three separate apps with similar functionality. Given that each of them had to be written both for Android and iOS, this would amount to a total of six apps. That would take both a lot of time and money.

The challenges we faced were as follows:

  • Find an ultimate solution and make six apps without extra expenses.
  • Digitalize the loyalty program.
  • Implement the project on a tight schedule. We needed to launch the apps by the flu season. Rigla ordered the project before the COVID-19 pandemic happened.


The Choice of Flutter

Our suggestion to the client:

  • Make the apps on a single code base.
  • Write them on Flutter — a cross-platform solution by Google enabling programmers to write one code for both iOS and Android.

Three brands, six apps — one code.

Thanks to Flutter, we saved 40% of the budget compared to native development.

Interface Design

We evaluated apps of other pharmacy chains: compared their functionality and studied user feedback.
This was followed by a CJM workshop with the client’s team and a series of in-depth interviews. This way we found out that pharmacy customers can be divided into two groups:

  • “Routine” customers, e.g. people with chronic diseases. They know what medicine they need.
  • “Emergency” customers, e.g. people with acute pain. They have no idea what to buy.

The group a customer belongs to defines their behaviour and expectations they have of the app. A person from group 2 is likely to ask a pharmacist for advice: what to buy in a sore throat or joint pain.

We added search by conditions and major symptoms so that it’s easier for customers to find the right product without assistance

UX and UI

Firstly, we built a clickable UX prototype: the client checked it on its iPhone and offered feedback.

Gradually we made a prototype taking all the feedback into account. First we designed a UI for Rigla and then adapted it to Zhivika and Bud Zdorov brands. As a result we had a UI-kit — a final kit of graphic elements in different colors — for each of the brands.

We also customized our design for iOS and Android, where fonts and ratios of UI components differ

We established guidelines for the client’s content managers, explaining how to create banners that look good in a mobile app. It’s not recommended to use the same banners in a web app and a mobile app since it’s hard to read the same text in a mobile app.

Six Apps with a Single Code Base Written on Flutter

Apps made for each brand interact with their own backend: there are three sites on CMS Magento with almost identical APIs on GraphQL. All the apps are built from a single code base inserting constants from corresponding UI-kits and specifying which API from which site to work with.

The whole process is automated: a developer only has to write code once and with the help of Jenkins all six apps are updated at once.

Apps made for each brand interact with their own backend: there are three sites on CMS Magento with almost identical APIs.

We established automated builds with the help of Jenkins. It takes a single code to build an app for any of the brands: constants are inserted from corresponding UI-kits, and a specific API is selected from a corresponding site.

The whole process is automated: a developer only has to write code once and all six apps are updated at once.

Our approaches are well-documented: thanks to that it’s easy for new developers to get involved or for the client to turn it into an in-house project, if needed. All Flutter apps we make are based on standard SurfGear architecture.

Getting Around Restrictions of Warehouse Logistics

Pharmaceutical industry is bound by strict regulations. For instance it was illegal to sell medicines online or order home delivery until very recently. Products in stock are distributed through pharmacies in an uneven way and cannot be transferred from one pharmacy to another.

Therefore, we had to try dozens of scenarios — the logic turned out to be much more complicated compared to other e-commerce segments.

We took into account different delivery terms set for medicines and cosmetics, products in stock in each pharmacy and dividing orders into lots. Eventually we were left with seven possible checkout scenarios. Here are the three most common ones:

  • Some of the items can be delivered from one of the outlets, while the rest is left for customer pick-up in an outlet where the items are in stock.
  • All items are transferred for customer pick-up to one outlet, but only in a few days.
  • The whole order is delivered to a customer and paid for without the trouble of registration and authorization.

Thus, we created a “multi cart” with complex business logic, so that users feel comfortable in any scenario and notice no constraints.

User Analytics

In order to gather user analytics we use AppMetrica and Firebase. In this particular case we used our standard funnel, based on our great experience in e-commerce analytics. Besides that we accounted for particular characteristics of Rigla and can track respective events.

We carried on with the analysis even after the release in order to find growth points. For example, we optimized the search engine — the main application scenario.

Continuous Product Improvement

  • Added “Sale” section
    Users can book a product nearing its expiry date: the closer the date, the cheaper the product can get.
  • Finalized animation
    In the first release we cut back on microinteractions but now all animations are smooth and the app has become even nicer.
  • Adding items to the cart improved
    This process is not quite perfect on Rigla’s website: in order to add an item you have to click the plus button, then you see the loader pop up and have to wait for the screen to refresh. We managed to get rid of that: first we line up all the items and then send a request to the server. There’s no need to wait now — all the goods appear in the cart straight away!
  • Apple Pay and Google Pay Integrated
There are several scenarios when ordering. Customers can buy some products with delivery, others only with pickup. These are the specifics of the pharmacy business


We Made Mobile Apps for Three Pharmacy Brands with a Single Code

  • We had little time to implement the project and we made it. The whole project, including research and design, took us five months and we launched the first app — Rigla — in three months.
  • Rigla managed to launch its mobile apps on time: precisely when the Russian government lifted the ban on online drug trade.
  • Thanks to Flutter, Rigla saved 40% of the budget compared to native development.
  • 70% of Rigla’s online customers make purchases via their mobile devices.
  • An average purchase size in the app is several times bigger than offline purchases.
  • It’s been almost a year since the first release and we’re still making improvements to the app based on analytics we receive.
Request a free consultation with our experts & estimate your project
Estimate Project
Estimate project