Odzyskiwanie porzuconych koszyków
Odzyskiwanie porzuconych koszyków
Odzyskuj utracone sprzedaże za pomocą inteligentnej wieloetapowej sekwencji e-mail. Ten skill monitoruje porzucenia koszyków i automatycznie wysyła spersonalizowane e-maile odzyskujące, aby przyciągnąć klientów z powrotem.
Przegląd
| Właściwość | Wartość |
|---|---|
| Kategoria | E-mail marketing |
| Status | Stabilny |
| Wersja | 3.0 |
| Wyzwalacze | cart_abandoned, cart_recovered |
| Średni wskaźnik odzyskania | 10-15% |
Jak to działa
graph TD A[Customer adds to cart] -->|Leaves site| B{Cart abandoned?} B -->|No checkout in 30min| C[Trigger: cart_abandoned] C --> D[Wait 1 hour] D --> E{Purchased?} E -->|No| F[Send Email #1] F --> G[Wait 24 hours] G --> H{Purchased?} H -->|No| I[Send Email #2 + Discount] I --> J[Wait 48 hours] J --> K{Purchased?} K -->|No| L[Send Email #3 - Final] E -->|Yes| M[Stop sequence] H -->|Yes| M K -->|Yes| M L --> N[Mark as lost]Konfiguracja
Podstawowa konfiguracja
skills: abandoned-cart: enabled: true
# Wykrywanie porzucenia koszyka detection: inactivity_threshold: 30m # Minuty braku aktywności przed uznaniem koszyka za porzucony min_cart_value: 25 # Minimalna wartość koszyka do wyzwolenia exclude_logged_out: false # Uwzględnij koszyki gości
# Sekwencja e-mail sequence: - delay: 1h template_id: 101 subject: "Forgot something?"
- delay: 24h template_id: 102 subject: "Your cart is waiting" include_discount: true discount_percent: 10
- delay: 48h template_id: 103 subject: "Last chance - items selling fast" include_discount: true discount_percent: 15 discount_expiry: 24h
# Warunki zatrzymania stop_on: - cart_recovered - order_placed - unsubscribeZaawansowana konfiguracja
skills: abandoned-cart: # Czas dostosowany do segmentu timing: vip_customers: first_email: 30m discount_threshold: 0 # Zawsze uwzględniaj rabat new_customers: first_email: 2h discount_threshold: 50 # Rabat tylko jeśli koszyk > $50 repeat_customers: first_email: 1h discount_threshold: 100
# Testy A/B ab_testing: enabled: true variants: - name: "urgency" subject: "Items in your cart are selling fast!" weight: 50 - name: "friendly" subject: "Did you forget something?" weight: 50
# Wykluczenia exclude: - email_domain: ["temp-mail.com", "disposable.com"] - customer_tag: ["wholesale", "staff"] - product_category: ["gift-cards"]Wyzwalacze
cart_abandoned
Uruchamiany, gdy koszyk był nieaktywny przez skonfigurowany próg czasu.
Dane zdarzenia
| Parameter | Type | Description |
|---|---|---|
cart_id required | string | Unikalny identyfikator koszyka |
customer_email required | string | Adres e-mail klienta |
items required | array | Tablica produktów w koszyku z nazwą, ceną, ilością i image_url |
total required | number | Łączna wartość koszyka |
currency optional | string | Kod waluty (np. USD, EUR) |
recovery_url required | string | URL do odzyskania koszyka |
abandoned_at required | datetime | Kiedy koszyk został porzucony |
Przykładowy payload:
{ "event": "cart_abandoned", "timestamp": "2024-01-15T14:30:00Z", "data": { "cart_id": "cart_abc123", "items": [ { "id": "prod_123", "name": "Premium Headphones", "price": 199.99, "quantity": 1, "image_url": "https://cdn.example.com/headphones.jpg", "variant": "Black" }, { "id": "prod_456", "name": "Phone Case", "price": 29.99, "quantity": 2, "image_url": "https://cdn.example.com/case.jpg" } ], "subtotal": 259.97, "shipping": 0, "tax": 20.80, "total": 280.77, "currency": "USD", "recovery_url": "https://store.example.com/cart/recover/abc123", "abandoned_at": "2024-01-15T14:00:00Z" }}cart_recovered
Uruchamiany, gdy klient wraca i finalizuje zakup.
{ "event": "cart_recovered", "timestamp": "2024-01-15T16:45:00Z", "data": { "cart_id": "cart_abc123", "order_id": "order_789", "recovered_via": "email_1", // Który e-mail spowodował odzyskanie "time_to_recover": "2h15m" }}Szablony e-mail
Zmienne szablonu
Używaj tych zmiennych w szablonach e-mail Brevo:
| Zmienna | Opis | Przykład |
|---|---|---|
params.FIRSTNAME | Imię klienta | Jane |
params.CART_URL | URL odzyskania koszyka | https://… |
params.CART_TOTAL | Sformatowana suma koszyka | $280.77 |
params.ITEM_COUNT | Liczba produktów | 3 |
params.ITEMS | Tablica JSON produktów | […] |
params.DISCOUNT_CODE | Wygenerowany kod rabatowy | SAVE10-ABC |
params.DISCOUNT_PERCENT | Procent rabatu | 10 |
params.EXPIRY_DATE | Data wygaśnięcia rabatu | Jan 17, 2024 |
Zalecana sekwencja e-mail
E-mail 1 (1 godzina): Łagodne przypomnienie
- Temat: „Zapomniałeś czegoś, {{ params.FIRSTNAME }}?”
- Fokus: Przypomnij o zawartości koszyka
- Jeszcze bez rabatu
E-mail 2 (24 godziny): Dodaj pilność + zachętę
- Temat: „Twój koszyk czeka + 10% zniżki”
- Fokus: Rabat ograniczony czasowo
- Dołącz kod rabatowy
E-mail 3 (48 godzin): Ostatnia szansa
- Temat: „Ostatnia szansa – 15% zniżki wkrótce wygasa”
- Fokus: Niedobór + silniejszy rabat
- 24-godzinny termin ważności rabatu
Przykłady kodu
Włącz skill porzuconego koszyka
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.skills.enable('abandoned-cart', { detection: { inactivityThreshold: '30m', minCartValue: 25 }, sequence: [ { delay: '1h', templateId: 101 }, { delay: '24h', templateId: 102, discountPercent: 10 }, { delay: '48h', templateId: 103, discountPercent: 15 } ]});Śledź porzucenie koszyka
// Wywołaj to, gdy wykryto aktywność koszykaawait tajo.events.track('cart_updated', { cartId: 'cart_abc123', items: cartItems, total: 280.77});
// Wywołaj to, gdy klient wychodzi bez dokonania zakupu// (zazwyczaj ze zdarzenia beforeunload lub po przekroczeniu limitu czasu sesji)await tajo.events.track('cart_abandoned', { cartId: 'cart_abc123', items: cartItems, total: 280.77, recoveryUrl: 'https://store.example.com/cart/recover/abc123'});Generuj kody rabatowe
// Wygeneruj unikalny kod rabatowyconst discount = await tajo.discounts.create({ type: 'percentage', value: 10, expiresIn: '7d', usageLimit: 1, prefix: 'SAVE10'});
// discount.code => "SAVE10-ABC123"Analityka
Śledź wydajność odzyskiwania porzuconych koszyków:
| Wskaźnik | Opis |
|---|---|
| Wskaźnik porzucenia | % porzuconych koszyków |
| Wskaźnik odzyskania | % odzyskanych porzuconych koszyków |
| Odzyskany przychód | Łączny przychód z odzyskanych koszyków |
| Wskaźnik otwarć e-maili | % otwartych e-maili odzyskujących |
| CTR e-maili | Wskaźnik klikalności e-maili odzyskujących |
| Czas do odzyskania | Średni czas od porzucenia do zakupu |
const stats = await tajo.skills.getStats('abandoned-cart', { period: '30d'});
console.log(stats);// {// abandonmentRate: 68.5,// recoveryRate: 12.3,// revenueRecovered: 15420.50,// emailsSent: 2340,// emailOpenRate: 45.2,// emailCtr: 8.7,// avgTimeToRecovery: '4h32m'// }Najlepsze praktyki
Czas ma znaczenie
Wyślij pierwszy e-mail w ciągu 1-2 godzin od porzucenia. Wskaźniki odzyskania znacznie spadają po 24 godzinach.
- Personalizuj tematy – Używaj imienia klienta i zawartości koszyka
- Pokazuj zawartość koszyka – Dodaj zdjęcia produktów do e-maila
- Twórz pilność – Wspomnij o niskim stanie magazynowym lub rabatach ograniczonych czasowo
- Ułatw odzyskanie – Linki do odzyskania koszyka jednym kliknięciem
- Testuj sekwencję – Testuj A/B czas, tematy i rabaty
- Szanuj rezygnacje – Natychmiast zatrzymaj sekwencję po wypisaniu
Powiązane Skills
- Zdarzenia koszyka – Śledź aktywność koszyka
- Porzucenie przeglądania – Odzyskuj porzucone sesje przeglądania
- Odzyskanie klienta – Reaktywuj nieaktywnych klientów
Następne kroki
- Skonfiguruj śledzenie koszyka na swojej platformie
- Twórz szablony e-mail w Brevo
- Skonfiguruj integrację kodów rabatowych
- Monitoruj wydajność w panelu