سلة البريد المهجورة: دليل للكسلان

أولاً ، قليلاً صاخبة :) عاجلاً أم آجلاً ، فإن أي متجر على الإنترنت لديه مشكلة في إعداد سلة مهجورة. الإحصائيات والشعور بفقدان الأموال المص في المعدة لا يعفي أحدًا.

النسبة المئوية للسلال المهجورة من 2006 إلى 2017


النسبة المئوية للسلال المهجورة من 2006 إلى 2017
المصدر

النسبة المئوية للسلال المهجورة للربع الأول من عام 2018 حسب الصناعة:
النسبة المئوية من السلال المهجورة للربع الأول من عام 2018 حسب الصناعة
المصدر

في الوقت نفسه ، على الرغم من الإحصاءات المتاحة بشكل عام ، لا تستخدم معظم المتاجر عبر الإنترنت الميزات المتاحة ولا تربط سلة مهجورة. تظهر دراسة "منزلية" حديثة من EmailSoldiers بوضوح أن معظم المتاجر لا تهتم بها على الإطلاق.

الإحصاءات الحالية للسلال المهجورة المتصلة


بحوث جنود البريد الإلكتروني
المصدر

في الوقت نفسه ، كل شخص (ونحن أيضًا ، لسنا قديسين) يلاحقون حركة المرور ، ويعرضون الإعلانات وتصميمات الإعلانات ، ولكن لا تحاول حتى إعادة الشخص الذي كسر في اللحظة الأخيرة.

ولكن في التكرار الأول ، يمكنك الحصول على زيادة في الطلبات باستخدام حرف بدون محتوى ديناميكي ، ما عليك سوى تكوينه. ابذل جهدًا مرة واحدة فقط حتى تجلب في الخلفية أموالًا - أليست هذه خرافة؟

بطبيعة الحال ، فإن الرسالة التي تحتوي على محتوى ديناميكي يتم فيها سحب البضائع من السلة قد تعمل بشكل أفضل. أو ربما تكون قطة أخرى ذات عيون حزينة أكثر تأثيرًا على جمهورك. أو تسحب البضائع الموصى بها إلى البضائع الموجودة في السلة وترى أنها يتم شراؤها في كثير من الأحيان من الرسائل وزيادة متوسط ​​الشيك. أو ستحصل على سلسلة من الحروف التي سيكون التحويل أكبر منها.

يمكنك تحسين واختبار الحروف من سلة مهجورة إلى فكرة مثالية غير قابلة للتحقيق ، ولكن أي حرف تم تكوينه مرة واحدة أفضل بالفعل من لا شيء.

التحويل لسلة مهجورة وفقًا لـ RetailRocket


تحويل RetailRocket للسلة مهجور
المصدر

وهكذا ، بدأنا الرفيق أرتيم ألكسندروف تقديم السلة من الجانبين.

التنفيذ الفني


TOR للتكامل


صف بإيجاز جوهر المهمة.

المهمة: ربط عربة مهجورة للموقع xxx.xx بخدمة Mailchimp البريدية

نعطي جميع المواد اللازمة.

مفتاح API: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-usXX

من أين تحصل على المفتاح؟

من أين تحصل على المفتاح؟

نعطي رابط للوثائق

معرف الورقة التي نقوم بتوصيل المتجر بها: XXXXxx

أين يمكنني الحصول على معرف الورقة؟

أين يمكنني الحصول على معرف الورقة؟

يجب إنشاء خدمة بريد مقدما. بمجرد تلقي خدمة البريد الإلكتروني لطلب API ، يتم إنشاء الرسالة تلقائيًا وإضافة المرسل إليه إلى قائمة الانتظار لإرسالها.

بالنسبة لحالتنا ، اخترنا المنطق التالي لإرسال سلة مهجورة:
يضيف المستخدم المصرح له على الموقع السلع إلى السلة ، ولا يكمل المعاملة ولا يكمل الطلب ، وتبقى السلة بدون تغيير لمدة ساعة واحدة. بعد ذلك ، يتم إرسال طلب إلى Mailchimp ، حيث يتم إرسال البريد الإلكتروني وتكوين طلب المستخدم وصور المنتج وسعر البضائع ورابط إلى سلة المستخدم.

قالب التخطيط


عند إنشاء أتمتة لسلة مهجورة ، يسألك mailchim على الفور ما إذا كان سيكون هناك حرف واحد أو أكثر ويقترح اختيار متجر متصل.

إنشاء أتمتة لعربة مهجورة في Mailchimp

في القوالب الأساسية ، يقدم mch خيارًا من ثلاث قطع:

حدد رسائل لسلة Mailchimp المهجورة
  1. سلة مهجورة مع السلع الديناميكية
  2. سلة مهجورة مع توصيات البقالة (تحتاج إلى تكوين بشكل منفصل)
  3. سلة مهجورة بدون بضائع (مجرد رسالة نصية)

في أفضل التقاليد ، إذا كان لديك الوقت ، يمكنك تكوين السلة بنفسك.

تبدو المنتجات الديناميكية بدون الأنماط شيئًا من هذا القبيل (ننسى المسافة البادئة ، يتم عرضها بشكل قبيح هنا):

<table> <tbody> *|ABANDONED_CART:[$total=3]|* <table> <tbody> <tr> <td> <a href="*|CART:URL|*" title="*|PRODUCT:TITLE|*" target="_blank"> <img src="*|PRODUCT:IMAGE_URL|*"> </a> </td> <td> *|PRODUCT:TITLE|* — *|PRODUCT:PRICE|* </td> </tr> </tbody> </table> *|END:ABANDONED_CART|* </tbody> </table> *|END:ABANDONED_CART|* </tbody> </table> 

يبدو أنه إذا قمت بتغيير الرقم في المتغير * | ABANDONED_CART: [$ total = 3] | * ، فسيعرض الحرف كمية مختلفة من البضائع ، ولكن لا ، ضع 5 على الأقل ، 100 على الأقل ، يرفض mch إظهار كمية أخرى.

وهو أيضًا غريب بعض الشيء ، يتم استبدال المتغير * | PRODUCT: PRICE | * بقيم تنسيق RUB288 ، ولسبب ما ، من المستحيل أيضًا تغيير هذا ، ولكن المزيد عن ذلك لاحقًا.

من أجل التغيير ، حاولنا استبدال المتغيرات بعدد الألعاب والتكلفة الإجمالية للطلب ، التي نرسلها عبر واجهة برمجة التطبيقات ، لكن البريد الإلكتروني هنا قال لا. حسنا ، فليكن.

كلمة للمبرمج :)


مع mailchimp كانت هناك تجربة تاريخية للتكامل مع خدمة الطرف الثالث ، كل شيء بسيط وواضح هناك. وثائق ودية للغاية (بالطبع باللغة الإنجليزية) ، ولكن لم تكن هناك حواف خشنة وعملت من الركلة الأولى.

كما تم إدخال آلية الاشتراك من خلال نماذج خاصة على موقعنا. هنا ، شعرنا تمامًا بالغموض والغموض في وثائق mailchimp. اللغة الإنجليزية ليست مشكلة لمطور متمرس ، ولكن معرفة لهجة Klingon ليست ضمنية بشكل افتراضي.

البيانات الأولية هي: لغة php7 وإطار yii2 ، والتي نمت بالفعل بشكل ساحق مع نظامها البيئي. على سبيل المثال لدينا بالفعل 6 مشاريع صغيرة تحاول استخدام المكونات المشتركة في كل من الواجهة الأمامية والواجهة الأمامية. وبناءً على ذلك ، فإن تنفيذ أي مهمة يتطلب حل مشروعها بشكل مستقل ، لكن هذا لا يعني استقلالية إطار العمل ، لأنه عليك أن تدفع ثمنها مع ساعات العمل البشرية ، والتي يوجد دائمًا نقص فيها.

بعد تلقي مهمة التكامل ، يجب علينا أولاً أن ننظر حولنا. ما يعطى لنا؟ أولاً ، خدمة mailchimp التي تحتاج إلى تكوين صداقات معها. نذهب إلى github ونرى أن هناك الكثير من التطبيقات. لكن الاختيار بسيط - الحزمة الأكثر شعبية من 1.5k نجوم ( drewm / mailchimp-api ).

تعطي الحزمة غلافًا بسيطًا على تفاعل الراحة مع قرد البريد. يمكننا فقط الحصول على هذا من خلال منطقنا.

ثانياً ، لقد حصلنا على وثائق . استنادًا إلى الوثائق ، لدينا مورد متجر بموارد متداخلة: سلة ، عميل ، طلب ، منتج ، قاعدة ترويجية. لسلة مهجورة بدون منتجات موصى بها ، نحتاج فقط إلى المنتج والعربة والعملاء. تتكون سلة التسوق بدورها من مجموعة خط سلة التسوق ، ويحتوي المنتج على متغيرات المنتج.

قمنا بتحليل المهمة على النحو التالي:

  1. تحميل بيانات المتجر إلى المتاجر
  2. قم بتنزيل جميع المنتجات القابلة للشراء من المنتجات
  3. قم بإعداد تحميل السلال مع المستخدمين وفقًا لجدول زمني

حسنًا ، لنذهب. بادئ ذي بدء ، نأخذ جوهر "المتجر". قررنا استخدام الإصدار التجريبي والقتالي من المتجر على الفور ، واعتمادًا على متغير البيئة المسؤول عن وضع البكر / المنتج ، عملنا إما مع متجر أو مع متجر آخر.

لتنزيل بيانات المتجر ، نطرق إلى طلب آخر على / التجارة الإلكترونية / المتاجر بالمجموعة التالية من المعلمات:

 [ 'id' => 'dev.***.ru', 'list_id' => '****', 'name' => '*** - test', 'domain' => 'dev.***.ru', 'email_address' => 'admin@***.ru', 'currency_code' => 'RUB', 'primary_locale' => 'ru', 'money_format' => '₽', ] 

هناك العديد من الخيارات ، ولكن كل هذا يتوقف على الاحتياجات. لأن لن نستخدم تفاصيل الاتصال بالمتجر في خطابات ، ولم نملأ حقول الهاتف والعنوان والمنطقة الزمنية وما إلى ذلك.
لكن مفاجأة صغيرة كانت تنتظرنا. يبدو أن مجال money_format تم إنشاؤه خصيصًا للقدرة على تقديم السعر بتنسيق مناسب لنا. ولكن عند بناء قالب سلة مهجورة ، فإن رقاقة البريد تستبدل RUB بعناد قبل الرقم. Mailchimp ، توقف!

بعد التنزيل ، يمكننا التحقق من البيانات باستخدام طلب الحصول على العنوان / التجارة الإلكترونية / المتاجر لرؤية جميع المتاجر المحملة ، أو / التجارة الإلكترونية / المتاجر / {معرف} للحصول على البيانات في متجر معين.

الآن يمكنك إضافة جميع البيانات الأخرى ، لأن المتجر هو النقطة الجذرية في شجرة البيانات لدينا ، لأنه سنقوم بتحميل جميع البيانات الأخرى إلى متجر معين.

لذا ، حتى تتمكن صحة الأم والطفل من استبدال السلع في سلة مهجورة ، يحتاج إلى إطعام هذه السلع. للقيام بذلك ، لدينا العنوان / التجارة الإلكترونية / المتاجر / {store_id} / المنتجات ، حيث نرسل الطلبات اللاحقة لإنشاء المنتجات في النظام.

 [ 'id' => '742', 'title' => '', 'handle' => 'kastrulya', 'url' => 'http://***.ru/catalog/kastrulya/', 'description' => ' —    .  ,       .  ,        !           !', 'type' => '', 'vendor' => '  ', 'image_url' => 'http://***.ru/images/742/product.png', 'variants' => [ [ 'id' => '742', 'title' => '', 'url' => 'http://***.ru/catalog/kastrulya/', 'price' => 890, 'sku' => 'KA453', 'inventory_quantity' => 1000, 'image_url' => 'http://***.ru/images/742/product.png', 'visibility' => 'visible', ], ], ] 

ما هو رائع جدا؟ حسنًا ، أولاً ، يجب أن يتكون كل منتج من عرض منتج واحد على الأقل. في جوهره ، المنتج عبارة عن حاوية لتحميل عروض المنتج. علاوة على ذلك ، قد يتقاطع معرف المنتج وعرض المنتج ، لأن هذه موارد مختلفة في واجهة برمجة تطبيقات MCH.

وهنا بدأ التقصير في توثيق صحة الأم والطفل. كان عليّ أن أخمن ، حتى لو لم يكن الأمر صعبًا ، ولكن يمكنك القيام بذلك بشكل طبيعي ، وليس كما هو الحال دائمًا.

تم وصف حقل المقبض بأنه "مقبض المنتج". حسنًا ، بعد التشاور ، قررنا أن هذا جزء من عنوان URL المتعلق بالمنتج نفسه (التصنيع باستخدام الحاسب الآلي). ولكن تم تأكيد ذلك فقط خلال الاختبارات.

يمكنك أيضًا إرفاق مجموعة من الصور بالمنتج ، لكننا قررنا أنه لن يكون مفيدًا لنا ، وبالتالي تم تحميل الصورة الرئيسية فقط لكل من المنتج وكل عرض منتج.

وهنا واجهنا مشكلة ، لسبب ما لم تظهر البضائع في قوالب مخطط البريد.

بدأنا الحفر في قفص الاتهام للمنتج. ووجدوا مجال رؤية مع وصف فاخر:

وصف مجال الرؤية

حسنًا ، اكتب سلسلة! وماذا يمكن نقله هناك؟ لماذا يستحيل وصف كل المعاني الممكنة ؟! يمكنني أن أرسل هناك ، على سبيل المثال ، "أرني رجاءً!".

لحسن الحظ هناك طلب مثال!

طلب مثال

حسنًا ، هذا لا يلغي المشكلة. لا أعرف القيم الأخرى التي قد تكون مفيدة.

تعامل الجميع مع هذا! يمكن الآن لمسوق البريد الإلكتروني التحقق من توفر السلع في النظام من خلال إنشاء قالب بمشاركة السلع أو جميعها من خلال نفس طلبات الحصول باستخدام وحدة التحكم.

بعد ذلك ، نواجه مهمة تحميل السلال المهجورة في MCH. في البداية ، تبادر إلى الذهن خياران:

  1. في كل مرة تقوم فيها بتغيير السلة (إضافة / إزالة البضائع) ، نكرر هذا الإجراء في MCH. من السلبيات - يقترح عدد كبير من الطلبات إلى خدمة خارجية نفسها على الفور.
  2. مرة واحدة كل دقيقة ، شاهد السلال التي لم تتغير منذ أكثر من ساعة. ثم نرسلها إلى MCH. هناك مشكلة واحدة فقط - تتبع السلال التي تم استئنافها بعد ذهابهم إلى MCH.

أولاً ، نقوم بتقديم طلب إلى قاعدة البيانات الخاصة بنا (يشار إليها فيما يلي باسم قاعدة البيانات) لبياناتنا في نافذة من 1 ساعة إلى 3. لماذا 3؟ بعد ساعة من التغيير الأخير ، نرسل السلة إلى النظام. في MCH الحد الأدنى للفاصل الزمني الممكن لإرسال السلة هو 1 ساعة. لذلك ، من الناحية النظرية ، بعد ساعتين ± 5 دقائق ، سيتم إرسال خطاب. حتى 3 ساعات قيمة حتى مع الهامش.

بعد استلام البيانات من قاعدة البيانات ، نقوم بتقديم طلب الحصول على العنوان / ecommerce / stores / {store_id} / carts. وبالتالي ، نحصل على جميع السلال التي تجلس في نظام التجارة الإلكترونية وتنتظر دورها لإرسالها (أو التي تم إرسالها بالفعل). لماذا نحتاج هذا؟ من الضروري التزامن مع بياناتنا. سنرسل جميع السلال المستلمة من قاعدة البيانات ، لكننا بحاجة إلى حذف تلك السلال التي لم تعد في نطاق 1-3 ساعات. بعد 3x - بيانات غير ذات صلة بالفعل. ما يصل إلى ساعة - سلال يمكن تجديدها مرة أخرى ، أو تقديم طلب.

للحذف ، نحتاج فقط إلى العثور على الفرق بين الصفيفين / مجموعات السلال.
بعد استلام السلال التي يجب حذفها ، نرسل طلب حذف / تجارة إلكترونية / مخازن / {store_id} / carts / {cart_id}.

بعد ذلك ، نأخذ السلال للتنزيل وإرسالها عن طريق الطلبات اللاحقة إلى النظام في دورة.

تبدو معلمات السلة مثل هذا:

 [ 'id' => '1207', 'customer' => [ 'id' => '25', 'email_address' => 'email@example.com', 'opt_in_status' => false, ], 'currency_code' => 'RUB', 'order_total' => 1597, 'checkout_url' => 'http://***.ru/cart/abandoned/?cart=eyJpdGVtcyI6eyI1OTgwIjoxLCIzNDA0IjoxLCI3NzMiOjEsIjkwNTgiOjEsIjkwOTEiOjEsIjE4ODciOjEsIjc4NCI6MSwiNTExMSI6MSwiODA1MyI6MSwiMTk0MSI6MSwiNTQ0NSI6MSwiNzk1NCI6MywiOTA2NyI6NCwiOTA2NSI6NCwiNzg0MyI6MSwiOTA2NiI6M30sInByb21vY29kZSI6bnVsbH0%253D', 'lines' => [ 0 => [ 'id' => '123', 'product_id' => '5980', 'product_variant_id' => '5980', 'quantity' => 1, 'price' => 841, ], 1 => [ 'id' => '124', 'product_id' => '3404', 'product_variant_id' => '3404', 'quantity' => 1, 'price' => 756, ], ], ] ؟ سلة //***.ru/cart/abandoned/ = eyJpdGVtcyI6eyI1OTgwIjoxLCIzNDA0IjoxLCI3NzMiOjEsIjkwNTgiOjEsIjkwOTEiOjEsIjE4ODciOjEsIjc4NCI6MSwiNTExMSI6MSwiODA1MyI6MSwiMTk0MSI6MSwiNTQ0NSI6MSwiNzk1NCI6MywiOTA2NyI6NCwiOTA2NSI6NCwiNzg0MyI6MSwiOTA2NiI6M30sInByb21vY29kZSI6bnVsbH0٪ 253D، [ 'id' => '1207', 'customer' => [ 'id' => '25', 'email_address' => 'email@example.com', 'opt_in_status' => false, ], 'currency_code' => 'RUB', 'order_total' => 1597, 'checkout_url' => 'http://***.ru/cart/abandoned/?cart=eyJpdGVtcyI6eyI1OTgwIjoxLCIzNDA0IjoxLCI3NzMiOjEsIjkwNTgiOjEsIjkwOTEiOjEsIjE4ODciOjEsIjc4NCI6MSwiNTExMSI6MSwiODA1MyI6MSwiMTk0MSI6MSwiNTQ0NSI6MSwiNzk1NCI6MywiOTA2NyI6NCwiOTA2NSI6NCwiNzg0MyI6MSwiOTA2NiI6M30sInByb21vY29kZSI6bnVsbH0%253D', 'lines' => [ 0 => [ 'id' => '123', 'product_id' => '5980', 'product_variant_id' => '5980', 'quantity' => 1, 'price' => 841, ], 1 => [ 'id' => '124', 'product_id' => '3404', 'product_variant_id' => '3404', 'quantity' => 1, 'price' => 756, ], ], ] 

ومرة أخرى ، نموذج التقييم المفضل لدينا هو "تخمين كيفية عمل هذه الحقول". على سبيل المثال ، من خلال طريقة البحث العلمي ، تم الكشف عن أنه من الممكن عدم إنشاء مشترٍ مع طلب منفصل. من الضروري نقل الحد الأدنى المطلوب من الحقول ، وسيتم إنشاؤه تلقائيًا إذا لم يكن في النظام. في حالتنا ، قصرنا أنفسنا على id ، والبريد الإلكتروني ، opt_in_status. المعلمة الأخيرة هي المسؤولة عن حالة اشتراك المستخدم في الورقة. إذا كان ذلك صحيحًا ، فهذا يعني أن الدولة مشتركة ، وإلا كانت المعاملات.

يتم تحميل قائمة المنتجات دون مشاكل من خلال مصفوفة Cart Cart Lines ، والتي بدورها تعد موردًا لكيان Cart. على سبيل المثال يمكننا إدارة هذه المجموعة بشكل منفصل مع طلبات الراحة.

حسنًا ، هذا هو الحال؟ لكن لا.

عند الاختبار ، لاحظنا أن إرسال السلة نفسها يتم إرسالها مرة واحدة فقط. على الرغم من أننا قمنا بإزالته من النظام وتحميله مرة أخرى. لا شيء يقال في أي مكان ، ولا كلمة واحدة! ونتيجة لذلك ، وبصورة تجريبية ، بمساعدة بعض الأم ، اتخذنا كأساس الفرضية القائلة بأن سلة بالمعرف نفسه يمكن إرسالها مرة واحدة فقط.

هنا أتفق تمامًا مع منشئي المحتوى على أن هذا التقييد يحفظنا من الرسائل غير المرغوب فيها للمستخدمين. لكن اكتب عنه! لسنا بحاجة إلى أسئلة ، لدينا ما يكفي من أخطائنا الصوفية في الشفرة التي نكتبها.

بعد أن فعلنا كل هذا ، بدأت MCH ترسل لنا رسائل جميلة عن السلة المهجورة. ثم ظهر سؤال ثان. إذا قام المستخدم بإلقاء السلة وإعادتها من الرسالة إلى حسابه الخاص ، أي أنه كان مفوضًا لحظة النقر على الرابط ، ثم سيصعد إلى سلته دون مشاكل. وهكذا اتضح أن الرسالة تقول "قيد التشغيل! خذ سلتك مرة أخرى! "، وعندما نعبرها نقول ،" عفوًا ، فقد شيء ما! لم نلمس أي شيء! إنها نفسها! "

تقرر ترميز تكوين السلة في سلسلة وتمريرها إلى checkout_url عند إرسال السلة إلى MCH. وعندما تذهب إلى الموقع ، التقط هذا الخط وفك الشفرة ورمي جميع السلع في السلة ، ولا تنس إعادة تعيينها بالكامل قبل ذلك.

وبالتالي ، بغض النظر عن المتصفح الذي نرسل إليه المستخدم ، فإنه يحصل على سلته ، كما وعدنا. السلبية الوحيدة هي أنه يمكنه فقط تسجيل الدخول. لكن التفويض من خلال رابط يعد سلوكًا سيئًا ، بل إنه عمل خطير في المقام الأول لعملائنا.
ما هي النتيجة؟ من حيث المبدأ ، لم تكن هناك مشاكل معينة أثناء التنفيذ ، حيث ساعدت ردود MCH في كثير من الأحيان في الأخطاء المتعلقة بالتحقق من صحة الحقول المنقولة. ولكن سيكون هناك عدد أقل من هؤلاء لو أنهم عادة ما يصفون بشكل إنساني كل هذه التفاصيل الدقيقة لعمل MCH ويصفون الحقول بمزيد من التفصيل.

إعداد تقرير في Google.Analytics


لتتبع نجاح العملية بأكملها ، سيكون عليك تكوين التقرير وإلقاء نظرة دورية عليه في التحليلات. تخيل أن كل شخص ، مثل البالغين ، لديه تجارة إلكترونية متصلة ، وإلا لن تعمل المعجزة :)

لجمع تقرير جديد لسلة مهجورة ، انتقل إلى "تقاريري":

تقاريري

مزيد من "إضافة تقرير":

أضف تقرير

وبعد ذلك نضيف المعلمات التي سنتتبعها. قررنا أن ننظر إلى السلة المهجورة في سياق المدن ، قد يكون لديك رؤية مختلفة.

بالنسبة إلى لعبة mailchamp ، الحملة القياسية للسلة المهجورة هي ABANDONED_CART_EMAIL ، فنحن نستبدلها في الفلتر ونحصل على تقرير.

الصورة

هذا كل شوكة!

أنت الآن مهيأ لإرسال السلة المهجورة وتقرير يمكنك من خلاله مشاهدة العادم منها. واختبر ، اختبر ، اختبر! ؛)

Source: https://habr.com/ru/post/ar421393/


All Articles