---
title: "Odzyskiwanie porzuconych koszyków"
description: "Odzyskuj utracone sprzedaże za pomocą inteligentnej wieloetapowej sekwencji e-mail, która przyciąga klientów z powrotem do finalizacji zakupu."
url: https://tajo.io/pl/docs/skills/email-marketing/abandoned-cart/
markdown: https://tajo.io/pl/docs/skills/email-marketing/abandoned-cart.md
lang: pl-PL
robots: noindex
---

Poproś o wcześniejszy dostęp

Podaj imię i firmowy adres e-mail. Wyślemy Ci link potwierdzający prośbę o dostęp do Tajo.

# 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

```mermaid
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

```yaml
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
      - unsubscribe
```

### Zaawansowana konfiguracja

```yaml
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) Default: `USD` |
| `recovery_url` required | string | URL do odzyskania koszyka |
| `abandoned_at` required | datetime | Kiedy koszyk został porzucony |

Przykładowy payload:

```json
{
  "event": "cart_abandoned",
  "timestamp": "2024-01-15T14:30:00Z",
  "data": {
    "cart_id": "cart_abc123",
    "customer_email": "jane@example.com",
    "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.

```json
{
  "event": "cart_recovered",
  "timestamp": "2024-01-15T16:45:00Z",
  "data": {
    "cart_id": "cart_abc123",
    "customer_email": "jane@example.com",
    "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

```javascript
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

```javascript
// Wywołaj to, gdy wykryto aktywność koszyka
await tajo.events.track('cart_updated', {
  cartId: 'cart_abc123',
  customerEmail: 'jane@example.com',
  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',
  customerEmail: 'jane@example.com',
  items: cartItems,
  total: 280.77,
  recoveryUrl: 'https://store.example.com/cart/recover/abc123'
});
```

### Generuj kody rabatowe

```javascript
// Wygeneruj unikalny kod rabatowy
const 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 |

```javascript
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.

1. **Personalizuj tematy** – Używaj imienia klienta i zawartości koszyka
2. **Pokazuj zawartość koszyka** – Dodaj zdjęcia produktów do e-maila
3. **Twórz pilność** – Wspomnij o niskim stanie magazynowym lub rabatach ograniczonych czasowo
4. **Ułatw odzyskanie** – Linki do odzyskania koszyka jednym kliknięciem
5. **Testuj sekwencję** – Testuj A/B czas, tematy i rabaty
6. **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

1. Skonfiguruj śledzenie koszyka na swojej platformie
2. Twórz szablony e-mail w Brevo
3. Skonfiguruj integrację kodów rabatowych
4. Monitoruj wydajność w panelu
