Ödeme sayfasındaki hataları düzelterek satışları ve müşteri sadakatini nasıl artırabilirsiniz?

Yayınlanan: 2022-05-25

Modern, hızla gelişen dijital dünyada müşteriler, işletmelerin sunduğu çevrimiçi fırsatlara güveniyor ve her şeyin mükemmelden daha az olmamasını bekliyor. Müşteri yolculuğunda herhangi bir hatayla karşılaşan bu müşteriler, kötü hizmeti hatırlayacak ve alternatif ürün/hizmet aramayı tercih edeceklerdir. Bu nedenle herhangi bir zorluğu önlemek ve iş performansını sürekli izlemek çok önemlidir.

Bu durumda, satışları ve müşteri sadakatini artırmak için ödeme sayfasındaki hataları düzeltmekte güçlük çeken bir tüketici elektroniği ve ev aletleri perakendecisi için OWOX BI ekibi tarafından sağlanan çözümü açıklıyoruz.

İçindekiler

  • Meydan okuma
  • Hedef
  • Çözüm
    • Adım 1. Hatalar hakkında veri toplayın
    • Adım 2. İşlem verileri
    • Adım 3. Elde edilen verileri kullanın
  • Sonuçlar

Meydan okuma

Her gün yaklaşık 700.000 kişi, ürün incelemelerini okumak veya satın almak istediklerini bulmak için etrafa göz atmak için perakendecinin web sitesini ziyaret ediyor. Ancak, kullanıcılar bazen ödeme sayfasında çevrimiçi bir siparişi tamamlamalarını engelleyen ve bu nedenle şirketin gelirini azaltan web sitesi hatalarıyla karşılaşabilirler.

Hedef

Analistler ve test uzmanları, tipik hata senaryolarını tanımlamak için müşteri şikayetlerini dikkatlice incelediler. Uzmanların yeniden üretmeyi başardığı hatalar düzeltildi. Kritik hataların geri kalanı kurulum izlemeyi gerektiriyordu. Önceden, şirket bu tür verileri toplamak için kullanmıyordu, kalan hataların tam sayısını ve dönüşüm oranlarını nasıl etkilediğini değerlendiremedi. Şirketin ayrıca, kullanıcının sipariş vermesine yardımcı olmak için her bir hatanın belirli bir kullanıcıyla nasıl bağlantılı olduğunu bilmesi gerekiyordu.

Analistler, web sitesinde kritik hataların izlenmesini kurmayı ve müşterilerin ödeme sayfasında başarılı bir şekilde sipariş vermelerine yardımcı olmak için ellerinden gelenin en iyisini yapmayı seçtiler. Bu, satışları artıracak ve müşteri web sitesi deneyimini iyileştirecektir. Zorlu faktör, şu anda web sitesinde bir şey sipariş etmeye çalışan müşterilerin hiçbirini kaybetmemek için gerçek zamanlı izlemenin gerekli olmasıydı.

Çözüm

Hedefe ulaşmak için aşağıdaki plan hazırlandı:

  1. Hatalar hakkında veri toplamak ve bunları Google BigQuery'ye göndermek için ek kodu web sitesine yerleştirin.
  2. Elde edilen verileri işleyin ve şirketin ihtiyaçlarına göre yapı ile tabloya aktarın.
  3. Kullanıcılar ve hatalarla ilgili verileri, sipariş vermelerine yardımcı olmak için müşterilerle iletişime geçecek çağrı merkezlerine göndermeyi düzenleyin.

Şirketin veri akışı şöyle görünüyor:

Adım 1. Hatalar hakkında veri toplayın

Şirket, kullanıcıların çevrimiçi yaptıklarını izlemek için Google Etiket Yöneticisi'ni kullanıyor. Yine de, web sitesindeki tüm mantık hataları standart Google Etiket Yöneticisi yöntemleriyle izlenemez. Bu nedenle özel komut dosyaları özel olarak yazılmış ve gerekli web sitesi sayfalarında Google Etiket Yöneticisi aracılığıyla uygulanmıştır. Komut dosyaları, ayrıntılı hata verilerini DataLayer'a ekler .

Ardından, Google Etiket Yöneticisi etiketlerinin yardımıyla, hata verileri OWOX BI Pipeline aracılığıyla Google BigQuery'ye gider. Bu, Google BigQuery'deki web sitesinden neredeyse gerçek zamanlı olarak örneklenmemiş ham veriler elde edilmesini sağlar.

Analistler API'yi kullanarak kullanıcılarla ilgili verileri CRM'den Google BigQuery'ye göndererek bulut veri ambarında ihtiyaç duydukları tüm verileri elde eder:

  • Hata zamanı.
  • Hata türü.
  • Kullanıcı kimliği.
  • Kullanıcı e-posta adresi.
  • Kullanıcı şehri.
  • Sepetteki mevcut ürün durumu.

Adım 2. İşlem verileri

OWOX BI Pipeline kullanılarak çok çeşitli parametrelere sahip veri tabloları elde edildi. OWOX BI analistleri, tablodan veri çekmek için bir SQL sorgusu oluşturdular ve onu belirli bir yapıyla döndürdüler: her satırın tek bir hataya eşit olduğu bir dizi satır.

SQL sorgusu örneği aşağıdadır:

    Select date, hour,minute, email, description, City, productIds, productnames, productprice, cartquantity, cartamount, From ( 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 = ƋdiscountCart' then Ƌ% discount unavailable online (in cart)' when action = 'absent' and error = ƋdiscountCheckout' then Ƌ% 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, FROM (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_], DATE_ADD(CURRENT_TIMESTAMP(), 0 ,'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), 0 , 'DAY') ) 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'), 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'), 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
Select date, hour,minute, email, description, City, productIds, productnames, productprice, cartquantity, cartamount, From ( 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 = ƋdiscountCart' then Ƌ% discount unavailable online (in cart)' when action = 'absent' and error = ƋdiscountCheckout' then Ƌ% 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, FROM (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_], DATE_ADD(CURRENT_TIMESTAMP(), 0 ,'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), 0 , 'DAY') ) 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'), 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'), 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

Sorgu sonucunda analistler aşağıdaki bilgileri içeren bir tablo elde ettiler:

  • Tarih;
  • Saat;
  • Dakika;
  • Kullanıcı e-posta adresi;
  • Hata tanımlaması;
  • Kullanıcı şehri;
  • Sepetteki ürünün kimliği;
  • Sepetteki ürünlerin isimleri;
  • Sepetteki ürünlerin fiyatı;
  • Sepetteki toplam ürün sayısı;
  • Sepetteki ürünlerin toplam fiyatı.

Ardından, tablolardaki bilgileri otomatik ve saatlik olarak güncelleyen OWOX BI BigQuery Reports eklentisi kullanılarak Google E-Tablolar'a veri aktarımı kuruldu. Bu, raporun her zaman bir önceki saate ait hatalarla ilgili güncel verileri içerdiği anlamına gelir.

Aşağıda böyle bir raporun bir örneğini bulabilirsiniz:

Adım 3. Elde edilen verileri kullanın

Sorumlu kullanıcılar her saat başı (çalışma saatlerine göre 09:00 - 18:00) hatalarla ilgili raporu otomatik olarak alırlar. Ardından, düzeltilmesi gereken kritik sorunlar olması durumunda şirketin geliştiricilerine ve kullanıcıları arayıp telefonda bir siparişi tamamlamalarına yardımcı olan müşteri başarı yöneticilerine gönderirler.

Sonuçlar

  • Yapılandırılmış rapor, kullanıcıların satın alma yapmasını engelleyen web sitesi hatalarını izlemek için oluşturulmuştur.
  • Şirketin geliştiricileri, web sitesine bir geri bildirim formu ekledi. Giriş yapmayan kullanıcılar bir hata gördüğünde otomatik olarak belirir, böylece sorunu bildirmelerine ve iletişim bilgilerini bırakmalarına olanak tanır. Bu, şirketin herhangi bir hataya veya hataya hızla tepki vermesine ve ayrıca oturum açmayan kullanıcıların kişileri de dahil olmak üzere müşteri tabanını genişletmesine yardımcı olur.
  • Firmanın çağrı merkezleri, ürünü sepete ekleme ve ödeme sırasında sorun yaşayan kullanıcılar hakkında hızlı bir şekilde bilgi alabilmektedir. Çağrı merkezi operatörleri, alışveriş sepetinin içinde ne olduğunu öğrenir ve satın alma işleminin tamamlanmasına yardımcı olur.
  • Web sitesi hatası nedeniyle arama alan kullanıcıların yaklaşık %3'ü, telefonda sipariş vermeyi başarıyla tamamlıyor. Bu, şirkete, hatalar göz ardı edildiğinde kaybedilecek olan 1.600 dolar daha veriyor.