M.video Boosts Sales and Customer Loyalty by Fixing Errors at the Checkout Page

About M.video

M.video is the top consumer electronics and home appliances retailer in Russia that adopted the strategy of omnichannel retailing. This let its customers order online or by phone and choose the courier or shop collection options for delivery. The aforementioned strategy became the driving engine of the company’s success, allowing M.video to increase internet sales by 41.3%.

Our cooperation with M.video has long been productive, and we’ve already told about how M.video optimized ad campaigns with assisted conversions and how the company evaluated the impact of the online advertising on offline sales. This time we’re talking about how M.video fixed errors at the checkout page to increase sales and customer loyalty.


Around 700,000 people visit www.M.video.ru per day, to read product reviews or browse around to find what they’d like to buy. However, users may sometimes experience website errors at the checkout page that prevent them from completing an order online, thus, decreasing the company’s revenue.


M.video’s analysts along with testers carefully studied the customer complaints to define the typical error scenarios. The errors that M.video managed to reproduce were fixed. The rest of the critical bugs required a setup monitoring. M.video didn’t use to collect such data, remaining unable to evaluate the exact number of bugs and how they affect the conversion rates. The company also needed to know how each bug was connected with a certain user, in order to help the user place an order.

M.video’s analysts chose to set up monitoring critical bugs on the website and do all their best to help customers successfully place orders at the checkout page. This would increase sales and improve customer website experience. The challenging factor was that M.video required real-time monitoring in order not to lose any of the customers currently trying to order something on the website.


To reach the goal, the analysts from M.video and OWOX BI made up their minds to follow this plan:

  1. Place the additional code on the website to collect data about errors and send them to Google BigQuery.
  2. Process the obtained data and export it to the table with the structure according to company’s needs.
  3. Organize sending data about users and errors to call centers that would contact customers to help them place an order.

Here’s how the company’s data flow looks:

data movement scheme

Now let’s dive in every step that M.video took.

Step 1. Collect information about errors.

The company uses Google Tag Manager to track what users do online. Though, not all logic errors on the website can be tracked by standard GTM ways. This is why M.video’s specialists wrote some custom scripts and implemented them through GTM on the necessary website pages. The scripts add the detailed error data to the DataLayer.

Next, with the help of the GTM tags, the error data goes to Google BigQuery through the OWOX BI Pipeline. This allows M.video obtain raw unsampled data from the website in Google BigQuery, in near real time.

Using the API, M.video’s analysts send the data about users from CRM to GBQ, obtaining all the information they need in the cloud data warehouse:

  • Error time.
  • Error type.
  • User ID.
  • User email address.
  • User city.
  • Current product status in the cart.

Step 2. Process data.

Using OWOX BI Pipeline, M.video obtained the data tables with a wide range of parameters. That’s why the OWOX BI analyst created an SQL query to pull data from the table, returning it with a definite structure: a set of lines where each line equals a single mistake.

Below is the SQL query example:

date, hour,minute, email, description, City, productIds, productnames, productprice, cartquantity, cartamount,
SELECT usererrors.date as date, usererrors.hour as hour, usererrors.minute as minute, usererrors.userEmail as email, usererrors.action as action,  usererrors.error as error,
case when action = 'disabled' and error = 'buttonCreateOrder' then 'Unable to checkout in cart'
when action = 'notAdded' and error = 'productToCart' then 'Unable to add product to cart'
when action = 'open' and error = 'emptyCart' then 'Product can not be viewed in cart'
when action = 'open' and error = 'HoldingPageCheckout' then 'Maintenance work in progress (after checkout)'
when action = 'absent' and error = '5discountCart' then '5% discount unavailable online (in cart)'
when action = 'absent' and error = '5discountCheckout' then '5% discount unavailable online (at the checkout page)'
when action = 'disabled' and error = 'buttonSubmit' then 'Button "Place Order" not working at the checkout page'
else 'Other' end as description,
Dimensions.city as City, Dimensions.productids as productIds, Dimensions.productnames as productnames, customMetrics.productprice as productprice, customMetrics.cartquantity as cartquantity, customMetrics.cartamount as cartamount,

        (SELECT date, hour,minute, hitId, userEmail, eventInfo.eventAction as action, eventInfo.eventLabel as error, hour(CURRENT_TIMESTAMP())+2-hour as currenthour
from TABLE_DATE_RANGE([mvideo-ru:Streaming.streaming_],

where eventInfo.eventCategory = 'Errors' and userEmail is not null

group by 1,2,3,4,5,6,7,8) as usererrors
 left join
   (SELECT hitId, MAX(IF(customDimensions.index=4, customDimensions.value, NULL)) WITHIN hitId  AS city, MAX(IF(customDimensions.index=21, customDimensions.value, NULL)) WITHIN hitId AS productids,
   Max(IF(customDimensions.index=22, customDimensions.value, NULL)) WITHIN hitId AS productnames
from TABLE_DATE_RANGE([mvideo-ru:Streaming.streaming_],
DATE_ADD(CURRENT_TIMESTAMP(), 0 , 'DAY') )) as Dimensions
 ON Dimensions.hitId=usererrors.hitId
 left join
 (SELECT hitId, MAX(IF(customMetrics.index=1, customMetrics.value, NULL)) WITHIN  hitId AS productprice, MAX(IF(customMetrics.index=4, customMetrics.value, NULL)) WITHIN hitId AS cartamount, Max(IF(customMetrics.index=5, customMetrics.value, NULL)) WITHIN hitId AS cartquantity

 FROM TABLE_DATE_RANGE([mvideo-ru:Streaming.streaming_],
DATE_ADD(CURRENT_TIMESTAMP(), 0 , 'DAY') )) as customMetrics
ON customMetrics.hitId=usererrors.hitId
where usererrors.currenthour=0
  ORDER BY date asc, hour asc, minute asc, email asc

As the result of the query, the analysts obtained a table containing following information:

  • Date.
  • Hour.
  • Minute.
  • User email address.
  • Error description.
  • User city.
  • ID of the product in the cart.
  • Names of products in the cart.
  • Price of products in the cart.
  • Total number of products in the cart.
  • Total price of products in the cart.

Then the analysts from M.video and OWOX BI set up the data import to Google Sheets, using the OWOX BI BigQuery Reports add-on that updates the information in the tables automatically and hourly. This means that the report always contains the up-to-date information about errors for the previous hour.

You can find an example of such a report below:

Example of report in Google Sheets

Step 3. Use the obtained data.

The M.video’s employees in charge automatically receive the report about errors every hour (9 AM to 6 PM, according to working hours). Next, they send it to the company’s developers in case there are critical issues to fix, and to the customer success managers who call users and help them complete an order on the phone.


  • M.video obtained a structured report on the website errors that prevent users from making a purchase.
  • Company’s developers added a feedback form to the website. It automatically appears each time users who did not log in see an error, thus, allowing them to report the problem and leave their contact details. This helps the company quickly react to any errors or bugs, as well as extend the customer base, including contacts of the users who did not log in.
  • The call centers of the company can quickly get information about users that face problems while adding the product to the cart and checking out. The call center operators get to know what’s inside the cart and help finish the purchase.
  • Around 3% of users who received a call from M.video because of the website error, successfully finish placing the order on the phone. This gives the company an additional $1,600 that would have been lost if errors were ignored.

Save your time and money with OWOX BI Pipeline.