> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Terk edilen sepet eğitimi

> OneSignal ile terk edilen sepet bildirimleri kullanarak kaybedilen satışları kurtarın. Sepet etkinliğini nasıl izleyeceğinizi, doğru segmenti nasıl oluşturacağınızı ve Journeys ile zamanında hatırlatmaları nasıl göndereceğinizi öğrenin.

## Genel Bakış

Terk edilen sepetler, kaybedilen geliri kurtarmak için en yüksek etkiye sahip fırsatlardan biridir. Sepetini terk eden kullanıcıların çoğu hâlâ satın alma niyetindedir — sadece zamanında bir hatırlatmaya ihtiyaçları vardır.

Bu kılavuz, OneSignal'da aşağıdakileri yapan **otomatik bir terk edilen sepet Journey'si** oluşturmayı gösterir:

* Sepet etkinliğini algılar
* Kısa bir hareketsizlik süresi bekler
* Kişiselleştirilmiş bir hatırlatma gönderir
* Satın alma veya sepet boşaltma sonrasında mesaj göndermeyi hemen durdurur

Bunu aşağıdaki yöntemlerden biriyle uygulayabilirsiniz:

* Özel Etkinlikler (çoğu uygulama için önerilir)
* Etiketler (daha basit, sınırlı kullanım durumları)

Doğru seçim, mesajda göstermek istediğiniz verilere ve bu verilerin nereden geldiğine bağlıdır.

**Ne oluşturacaksınız**

Bu kılavuzun sonunda şunlara sahip olacaksınız:

* OneSignal'a gönderilen sepet etkinliği (Etiketler veya Özel Etkinlikler aracılığıyla)
* Net, **kod ile tanımlanmış** bir terk etme sinyali
* Sepet verilerini kişiselleştiren mesaj şablonları
* Şunları yapan bir Journey:
  * Terk etme sinyali alındığında başlar
  * Göndermeden önce bekler
  * Terk edilen sepet mesajları gönderir
  * Sepet boşaltıldığında veya satın alma tamamlandığında hemen çıkar
* Mesaj ve gelir performansını ölçmek için analizler

**Terk edilen sepetler nasıl modellenir**

Bu kılavuz, kullanıcı sepetine ürün eklediğinde veya kaldırdığında her seferinde "sepet güncellendi" etkinliklerini izlediğinizi varsayar. Bu, içeriğinize abonelik gibi tek bir ürün veya alışveriş sepeti gibi birden fazla ürün olabilir.

OneSignal bir `cart_updated` etkinliği aldığında:

* Kullanıcı Journey'ye girmeye uygun hale gelir
* Bekleme süresi doğal olarak geri dönmeleri için zaman tanır
* Mesaj yalnızca çıkmadıkları takdirde gönderilir
* Sepet boşaltıldığında kullanıcı hemen çıkar

***

## Kurulum

### Adım 1. Sepet verilerinizi ve kaynağınızı planlayın

**Hangi sepet bilgilerini göstermek istediğinize** ve **bu verilerin nereden geldiğine** karar verin.

Yaygın sepet verileri şunları içerir:

* Ürün adı, görseli, fiyatı ve miktarı
* Sepetteki ürün sayısı
* Sepete geri dönüş için derin bağlantı

Veri kaynağınız etkinlikleri nasıl göndereceğinizi belirler:

| Veri kaynağı             | Önerilen yöntem                      |
| ------------------------ | ------------------------------------ |
| Uygulama veya web sitesi | OneSignal Frontend SDK               |
| Backend veya veritabanı  | OneSignal REST API                   |
| Üçüncü taraf platform    | Entegrasyon tabanlı Özel Etkinlikler |

<Check>
  Bu adımın sonunda **hangi verileri göndereceğinizi** ve **nasıl göndereceğinizi** bileceksiniz.
</Check>

### Adım 2. OneSignal'a sepet etkinliği gönderin

Sepet durumu değiştiğinde, etkinliğin izlenebilmesi için güncellenmiş sepet verilerini OneSignal'a gönderin.

Bu kılavuz, sepet etkinliğini izlemek için `cart_updated` etkinliği veya etiketini ve en az bir özelliği kullanır.

Adım 1'de seçtiğiniz yöntemi seçin:

<Tabs>
  <Tab title="Özel Etkinlikler">
    Sepet her değiştiğinde bir `cart_updated` Özel Etkinliği gönderin. Sepette ürün varken ürün özelliklerini ekleyin, sepet boşaltıldığında çıkarın.

    | Referans                                                   | Açıklama                                                                                                                              |
    | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
    | `trackEvent` yöntemi                                       | Frontend SDK aracılığıyla gönderin ([Mobile SDK](./mobile-sdk-reference#custom-events), [Web SDK](./web-sdk-reference#custom-events)) |
    | [Özel Etkinlikler API'si](/reference/create-custom-events) | REST API aracılığıyla gönderin                                                                                                        |
    | [Entegrasyonlar](./integrations)                           | Entegrasyon aracılığıyla gönderin                                                                                                     |

    **Frontend SDK `trackEvent` yöntemi örneği**

    <CodeGroup>
      ```javascript Cart Updated theme={null}
      OneSignal.User.trackEvent("cart_updated", {
        product_name: "24 Pack of Acorns",
        product_image: "https://i.imgur.com/ssPCfbC.png",
        product_price: 12.99,
        product_quantity: 1,
        cart_url: "https://yourdomain.com/cart"
      });
      ```

      ```javascript Cart Emptied theme={null}
      OneSignal.User.trackEvent("cart_updated");
      ```
    </CodeGroup>

    **Özel Etkinlikler API'si örneği**

    <CodeGroup>
      ```json Cart Updated theme={null}
      {
        "events": [
          {
            "name": "cart_updated",
            "properties": {
              "product_name": "24 Pack of Acorns",
              "product_image": "https://i.imgur.com/ssPCfbC.png",
              "product_price": "$12.99",
              "product_quantity": "1",
              "cart_url": "https://yourdomain.com/username/cart"
            },
            "external_id": "ID_OF_THE_USER"
          }
        ]
      }
      ```

      ```json Cart Emptied theme={null}
      {
        "events": [
          {
            "name": "cart_updated",
            "external_id": "ID_OF_THE_USER"
          }
        ]
      }
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Etiketler">
    Sepette ürün varken etiketleri ayarlayın ve sepet boşaltıldığında kaldırın.

    <Info>
      Bu örnek, `cart_updated` etiketini sepetin en son ne zaman güncellendiğini temsil eden bir Unix zaman damgasına (saniye cinsinden) ayarlar. Ayrıca bir boole değeri (true/false) de kullanabilirsiniz, ancak bir zaman damgası [Time Operators](./time-operators) ile daha fazla esneklik sağlar.
    </Info>

    | Referans                                              | Açıklama                                                                                                                      |
    | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
    | `addTags` / `removeTags`                              | Frontend SDK aracılığıyla gönderin ([Mobile SDK](./mobile-sdk-reference#data-tags), [Web SDK](./web-sdk-reference#data-tags)) |
    | [Kullanıcı Güncelleme API'si](/reference/update-user) | REST API aracılığıyla gönderin                                                                                                |

    **Frontend SDK `addTags` / `removeTags` yöntemleri örneği**

    <CodeGroup>
      ```javascript Cart Updated theme={null}
      OneSignal.User.addTags({
        cart_updated: unix_timestamp_seconds,
        product_name: "24 Pack of Acorns", 
        product_image: "https://i.imgur.com/ssPCfbC.png",
        product_price: "$12.99",
        product_quantity: "1",
        cart_url: "https://yourdomain.com/username/cart"
      })
      ```

      ```javascript Cart Emptied (remove tags) theme={null}
      OneSignal.User.removeTags([
        "cart_updated", "product_name", "product_image", "product_price", "product_quantity", "cart_url"
      ])
      ```
    </CodeGroup>

    **Kullanıcı Güncelleme API'si örneği**

    <CodeGroup>
      ```json Cart Updated theme={null}
      {
        "properties": {
          "tags": {
            "cart_updated": "unix_timestamp_seconds",
            "product_name": "24 Pack of Acorns",
            "product_image": "https://i.imgur.com/ssPCfbC.png",
            "product_price": "$12.99",
            "product_quantity": "1",
            "cart_url": "https://yourdomain.com/username/cart"
          }
        }
      }
      ```

      ```json Cart Emptied (remove tags) theme={null}
      {
        "properties": {
          "tags": {
            "cart_updated": "",
            "product_name": "",
            "product_image": "",
            "product_price": "",
            "product_quantity": "",
            "cart_url": ""
          }
        }
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

<Check>
  Sepet etkinliği artık OneSignal'a gönderiliyor. Sepet her değiştiğinde, OneSignal mesajları tetiklemek ve kişiselleştirmek için gereken güncellenmiş verileri alır.
</Check>

***

### Adım 3. Terk edilen sepet mesaj şablonları oluşturun

Sepet verilerine dinamik olarak başvuran mesaj şablonları oluşturun.

Bu bölümde kullanılan kavramlar hakkında daha fazla ayrıntı için bakın:

* [Liquid söz dizimi](./using-liquid-syntax)
* [Mesaj Kişiselleştirme](./message-personalization)
* [Şablonlar](./templates)

<Tabs>
  <Tab title="Özel Etkinlik Push Şablonu">
    Liquid söz dizimi formatını kullanarak etkinlik özelliklerine başvurun:

    ```liquid Liquid theme={null}
    {{journey.event.name.properties.property_name | default: "fallback_value"}}
    ```

    **Mesaj**:

    ```liquid Liquid theme={null}
    You left {{journey.event.cart_updated.properties.product_name | default: "items"}} in your cart.
    ```

    **Görsel**:

    ```liquid Liquid theme={null}
    {{journey.event.cart_updated.properties.product_image | default: "https://i.imgur.com/ssPCfbC.png"}}
    ```

    **Başlatma URL'si**:

    ```liquid Liquid theme={null}
    {{journey.event.cart_updated.properties.cart_url | default: "https://yourdomain.com/cart"}}
    ```

    <Warning>
      `product_image` **doğrudan**, **herkese açık** bir görsel URL'si değilse görsel görüntülenmez.

      `product_image` değeriniz çevrimiçi olarak mevcut bir görsel dosyasının adıysa, aşağıdaki formatı kullanarak görsele başvurabilirsiniz:
      `https://yourdomain.com/images/{{journey.event.cart_updated.properties.product_image | default: "stock_image"}}.png`
    </Warning>

    <Frame caption="Özel Etkinlikler ile terk edilen sepet şablonu örneği">
      <img src="https://mintcdn.com/onesignal/i980ujIG34-OaGfp/images/abandoned-cart/abandoned_cart_custom_event.png?fit=max&auto=format&n=i980ujIG34-OaGfp&q=85&s=30545021f3e1b12cdc741b3112540234" alt="Özel Etkinlikler ile terk edilen sepet şablonu örneği" width="2526" height="2104" data-path="images/abandoned-cart/abandoned_cart_custom_event.png" />
    </Frame>
  </Tab>

  <Tab title="Etiket Push Şablonu">
    Liquid söz dizimi formatını kullanarak etiket özelliklerine başvurun:

    ```liquid Liquid theme={null}
    {{tag_key | default: "fallback_value"}}
    ```

    **Mesaj**:

    ```liquid Liquid theme={null}
    You left {{product_name | default: "items"}} in your cart.
    ```

    **Görsel**:

    ```liquid Liquid theme={null}
    {{product_image | default: "https://i.imgur.com/ssPCfbC.png"}}
    ```

    **Başlatma URL'si**:

    ```liquid Liquid theme={null}
    {{cart_url | default: "https://yourdomain.com/cart"}}
    ```

    <Warning>
      `product_image` **doğrudan**, **herkese açık** bir görsel URL'si değilse görsel görüntülenmez.

      `product_image` değeriniz çevrimiçi olarak mevcut bir görsel dosyasının adıysa, aşağıdaki formatı kullanarak görsele başvurabilirsiniz:
      `https://yourdomain.com/images/{{product_image | default: "stock_image"}}.png`
    </Warning>

    <Frame caption="Etiketler ile terk edilen sepet şablonu örneği">
      <img src="https://mintcdn.com/onesignal/i980ujIG34-OaGfp/images/abandoned-cart/abandoned_cart_tags.png?fit=max&auto=format&n=i980ujIG34-OaGfp&q=85&s=00ed42a9890a824c8c201415b8260bba" alt="Etiketler ile terk edilen sepet şablonu örneği" width="2526" height="2104" data-path="images/abandoned-cart/abandoned_cart_tags.png" />
    </Frame>
  </Tab>
</Tabs>

**E-posta örneklerine, yardıma veya daha fazla ilhama mı ihtiyacınız var?**

<Columns cols={2}>
  <Card title="Özel Etkinlikler ile mesajları kişiselleştirin" icon="bolt" href="./personalization-custom-event">
    Journey'lerde Özel Etkinlikleri kullanma hakkında kapsamlı kılavuz. Etkinlik depolama, Journey yapılandırması, terk edilen sepet örneği, en iyi uygulamalar ve sorun giderme içerir.
  </Card>

  <Card title="Özellikler ile mesajları kişiselleştirin" icon="tags" href="./personalization-properties-and-tags">
    Journey'lerde Özellikler ve Etiketleri kullanma hakkında kapsamlı kılavuz. Etkinlik depolama, Journey yapılandırması, terk edilen sepet örneği, en iyi uygulamalar ve sorun giderme içerir.
  </Card>
</Columns>

### Adım 4. Terk edilen sepet Segmenti oluşturun (Yalnızca etiketler)

<Warning>
  Bu adım yalnızca sepet etkinliğini izlemek için Etiketler kullanıyorsanız gereklidir. Özel Etkinlikler kullanıyorsanız bu adımı atlayabilirsiniz.
</Warning>

Segment, Journey'ye kimin girebileceğini belirleyecektir. Daha fazla ayrıntı için [Segmentler](./segmentation) bölümüne bakın.

Segmente iki filtre ekleyin:

1. **User Tag** — `cart_updated` `exists`
2. **Last Session** — `less than` `7` `days ago`

<Frame caption="cart_updated etiketinin mevcut olduğu ve son oturumun 7 günden az önce olduğu Etiket Filtreli Terk Edilen Sepet Segmenti">
  <img src="https://mintcdn.com/onesignal/BIUS_wdfwITxcuxQ/images/segments/tag-filter-cart-updated.png?fit=max&auto=format&n=BIUS_wdfwITxcuxQ&q=85&s=e77eb5ae599ff365cc908524648342b5" alt="cart_updated etiketinin mevcut olduğu ve son oturumun 7 günden az önce olduğu Etiket Filtreli Terk Edilen Sepet Segmenti" width="1300" height="656" data-path="images/segments/tag-filter-cart-updated.png" />
</Frame>

<Check>
  Artık sepetini güncelleyen ve son 7 gün içinde uygulamayı veya web sitesini ziyaret eden kullanıcıları izleyebiliriz.

  Aşağıdaki koşullardan herhangi biri karşılandığında kullanıcılar segmentten otomatik olarak çıkarılır:

  * Uygulamayı/web sitesini son ziyaretlerinden bu yana 7 gün geçtikten sonra
  * `cart_updated` etiketi kaldırıldığında
</Check>

### Adım 5. Terk edilen sepet Journey'sini oluşturun

Sepet etkinliğine tepki veren bir Journey oluşturun. Daha fazla ayrıntı için [Journeys](./journeys-overview) bölümüne bakın.

<Frame caption="Yeni Terk Edilen Sepet Journey'si oluşturma ekranı">
  <img src="https://mintcdn.com/onesignal/nGF0iEnzRCJ61U4u/images/journeys/new-journey-screen.png?fit=max&auto=format&n=nGF0iEnzRCJ61U4u&q=85&s=373c8bea9b7f399af4623fe18eb50f9b" alt="Yeni Terk Edilen Sepet Journey'si oluşturma ekranı" width="2234" height="930" data-path="images/journeys/new-journey-screen.png" />
</Frame>

#### Journey ayarları

Giriş, Çıkış ve Yeniden giriş kuralları hakkında daha fazla ayrıntı için [Journey Ayarları](./journeys-settings) kılavuzunu inceleyin.

**Giriş Kuralları**:

<Tabs>
  <Tab title="Özel Etkinlik: Giriş Kuralları">
    * **Custom Event** seçin
    * Custom Event Name: `cart_updated`
    * Özelliğe göre filtrele: Aşağıdaki **tüm** özelliklere sahip: `product_name` **exists**

    <Warning>
      Özel Etkinliklerin kullanılması, bireysel kullanıcıların Journey'lere birden fazla kez girmesine izin verir.

      Yalnızca belirli bir özellik mevcut olduğunda girecekleri şekilde kullanıcıları filtrelemek için özellikleri kullanın.
    </Warning>

    <Frame caption="Terk Edilen Sepet Journey'si Özel Etkinlik Giriş Kuralları">
      <img src="https://mintcdn.com/onesignal/QYQXG0jQYRHKKzOd/images/journeys/journey-entry-rules-custom-event.png?fit=max&auto=format&n=QYQXG0jQYRHKKzOd&q=85&s=6b36bbedce35c4286ecd9d154ab4c9db" alt="Terk Edilen Sepet Journey'si Özel Etkinlik Giriş Kuralları" width="2478" height="1772" data-path="images/journeys/journey-entry-rules-custom-event.png" />
    </Frame>
  </Tab>

  <Tab title="Etiket: Giriş Kuralları">
    * **Audience Segment** seçin
    * Include Segment: **Abandoned Cart - cart\_updated**

    <Frame caption="Terk Edilen Sepet Journey'si Giriş Kuralları">
      <img src="https://mintcdn.com/onesignal/nGF0iEnzRCJ61U4u/images/journeys/journey-entry-rules-audience-segment.png?fit=max&auto=format&n=nGF0iEnzRCJ61U4u&q=85&s=d3f3cbd94f91fa80aaa293c5beb44ade" alt="Terk Edilen Sepet Journey'si Giriş Kuralları" width="2672" height="1586" data-path="images/journeys/journey-entry-rules-audience-segment.png" />
    </Frame>
  </Tab>
</Tabs>

**Çıkış Kuralları**:

<Tabs>
  <Tab title="Özel Etkinlik: Çıkış Kuralları">
    Kullanıcılar sepetlerini boşalttığında veya Journey'yi tamamladığında Journey'den çıkmalıdır.

    * **Meet a certain condition** seçin
    * **Exit when custom event condition occurs** seçeneğini işaretleyin
    * Custom Event Name: `cart_updated`

    <Frame caption="Terk Edilen Sepet Journey'si Özel Etkinlik Çıkış Kuralları">
      <img src="https://mintcdn.com/onesignal/QYQXG0jQYRHKKzOd/images/journeys/journey-exit-rules-meet-certain-condition-custom-event.png?fit=max&auto=format&n=QYQXG0jQYRHKKzOd&q=85&s=f2e5cff1e3f76307e8ac9f30e5fa189f" alt="Terk Edilen Sepet Journey'si Özel Etkinlik Çıkış Kuralları" width="2478" height="1772" data-path="images/journeys/journey-exit-rules-meet-certain-condition-custom-event.png" />
    </Frame>

    <Note>
      Bu yapılandırma, hem giriş hem de çıkış kuralları için aynı Özel Etkinlik adını (`cart_updated`) kullanır.

      Bu, kullanıcının aynı anda yalnızca bir Journey örneğinde bulunmasını sağlar. Her sepet güncellemesinde, kullanıcının o örneği çıkar ve aynı kullanıcının yeni bir örneği Journey'ye girer. **Bu nedenle Giriş Kuralları içinde kullanıcıları filtrelemek için özellikleri kullanmak önemlidir.**
    </Note>
  </Tab>

  <Tab title="Etiket: Çıkış Kuralları">
    * **Meet a certain condition** seçin
    * **Exit when a user no longer matches the audience conditions** seçeneğini işaretleyin

    <Frame caption="Terk Edilen Sepet Journey'si Etiket Çıkış Kuralları">
      <img src="https://mintcdn.com/onesignal/nGF0iEnzRCJ61U4u/images/journeys/journey-exit-rules-meet-certain-condition-tag.png?fit=max&auto=format&n=nGF0iEnzRCJ61U4u&q=85&s=e54a4770bccb5ad096602a2d2f826cc1" alt="Terk Edilen Sepet Journey'si Etiket Çıkış Kuralları" width="2672" height="1586" data-path="images/journeys/journey-exit-rules-meet-certain-condition-tag.png" />
    </Frame>

    <Info>
      Kullanıcılar aşağıdaki durumlarda Journey'den çıkar:

      * Segmentten ayrıldıklarında.
      * Journey'yi tamamladıklarında.
    </Info>
  </Tab>
</Tabs>

**Yeniden Giriş Kuralları** (Yalnızca etiketler):

* **Yes, after a certain amount of time** seçin
* Yeniden giriş süresini `1` `day` olarak ayarlayın

<Frame caption="Terk Edilen Sepet Journey'si Yeniden Giriş Kuralları">
  <img src="https://mintcdn.com/onesignal/Ed71xMP1FaC70n24/images/journeys/journey-re-entry-rules-after-certain-amount-of-time.png?fit=max&auto=format&n=Ed71xMP1FaC70n24&q=85&s=a3333faba5fb02f4f12fca0a3828ebc8" alt="Terk Edilen Sepet Journey'si Yeniden Giriş Kuralları" width="945" height="400" data-path="images/journeys/journey-re-entry-rules-after-certain-amount-of-time.png" />
</Frame>

<Check>
  Bu kılavuzu buraya kadar eksiksiz takip ettiyseniz, kullanıcılar:

  1. Sepetlerini terk ettiklerinde/güncellediklerinde Journey'ye girer
  2. Sepetlerini boşalttıklarında veya Journey'yi tamamladıklarında Journey'den çıkar.
  3. Journey'ye yeniden girmeye uygun olur:
     * **Özel Etkinlikler**: `cart_updated` etkinliği her gerçekleştirildiğinde
     * **Etiketler**: Journey'den son çıkışlarından 1 gün geçtikten sonra ve segmentte oldukları sürece.

  Journey Ayarlarını kaydedin.
</Check>

#### Journey adımları

Kullanıcılar Giriş Kurallarına göre Journey'ye girerler. Bu genellikle etkinlik/etiket alındıktan birkaç dakika içinde gerçekleşir.

Kullanıcılar, sona ulaşana veya bir çıkış kuralı karşılanana kadar Journey'de adım adım ilerler.

Temel bir terk edilen sepet Journey'si için 2 şey yapmak istiyoruz:

1. Kullanıcıya sepetini boşaltması için yeterli zaman vermek (satın alma yapmak veya sepetini manuel olarak boşaltmak)
2. Sepetini boşaltmazlarsa, sepetlerindeki ürünleri hatırlatan bir mesaj göndermek

Bunu önce Journey'ye bir **Wait** adımı ekleyerek gerçekleştirin.

* Bekleme süresini istediğiniz kadar uzun ayarlayın. Kullanıcı hâlâ satın alma niyetindeyken mesaj gönderebilmeniz için `1` `hour` olarak ayarlamanızı öneririz.

Bir **Message** adımı ekleyin.

* Adım 3'te oluşturduğunuz **Abandoned Cart** Push Bildirim şablonunu seçin.

<Frame caption="Temel Terk Edilen Sepet Journey Adımları">
  <img src="https://mintcdn.com/onesignal/FtxZDfbFgMsm3lF9/images/journeys/journey-steps-basic-abandoned-cart.png?fit=max&auto=format&n=FtxZDfbFgMsm3lF9&q=85&s=8af2e8a35043af3b053fda36f251c2c4" alt="Temel Terk Edilen Sepet Journey Adımları" width="2526" height="2104" data-path="images/journeys/journey-steps-basic-abandoned-cart.png" />
</Frame>

<Check>
  Temel Terk Edilen Sepet Journey'si artık yapılandırıldı.

  Bir kullanıcı Journey'ye girdiğinde 1 saat bekleyecektir. Journey'den çıkmazlarsa, terk edilen sepet push bildirimini alacaklardır.
</Check>

## Gelişmiş Journey Kurulumu

Daha yüksek kurtarma oranları için Journey'yi zaman içinde daha fazla mesaj gönderecek şekilde genişletin.

### Mesaj Dizisi

Çok yaygın ve yüksek performanslı bir tempo:

1. İlk mesajı 1 saat sonra gönderin (bu kılavuzda tamamlandı).
2. 1 gün için başka bir **Wait** adımı ekleyin ve ikinci bir mesaj gönderin (sepetlerini güncellemelerinden \~24 saat sonra).
3. 2 gün için başka bir **Wait** adımı ekleyin ve üçüncü bir mesaj gönderin (sepetlerini güncellemelerinden \~72 saat sonra).

#### Mesaj Türleri ve İçeriği

OneSignal ile hangi kanalları kurduğunuza bağlı olarak, çok kanallı bir yaklaşım kullanarak daha iyi sonuçlar elde edersiniz.

1. Bu kılavuz, ilk saatten sonra bir push bildirim mesajı göndermeyi gösterir. Bu, kullanıcı hâlâ çevrimiçi olabilecekken satışı yakalamaya çalışmak için yararlı bir hatırlatma olarak kullanılır.
2. İkinci mesajınız için hem push hem de e-posta kullanmayı düşünün. Bu ikinci mesajı, hafif bir aciliyet duygusuyla faydaları ve sosyal kanıtı vurgulamak için kullanın.
3. Dizideki son mesaj için, bir e-posta veya belki bir SMS (kullanım durumuna bağlı olarak) "son çağrı" olarak kullanın. Satın almalarını teşvik etmek için bir indirim kodu veya başka bir teşvik kullanmayı düşünün.

### Yedek Mesajlar

OneSignal'ın Journey'leri, bir mesajın onaylanmış teslim, tıklama veya açılma durumunu kontrol etmek için kullanabileceğiniz **Wait Until** dallanma mantığı sağlar ve belirli bir süre içinde gerçekleştirilmezse bir yedek mesaj gönderir.

Bu, belirli bir mesaj kanalından aboneliğini iptal etmiş olabilecek kullanıcılar için son derece yararlıdır. Yedek mesajların nasıl kurulacağı hakkında daha fazla ayrıntı [Yedek Mesajlar](./push-fallback-method) kılavuzumuzda bulunabilir.

### Performansı izleyin

[Journey analizleri](./journeys-analytics), Journey'nin genel olarak nasıl performans gösterdiğini izlemek için kullanılabilir. Ayrıca [Şablon analizleri](./template-analytics) kullanarak her mesajın performansını izleyebilirsiniz.

#### Outcomes ile geliri izleyin

Bu Journey'den elde edilen geliri izlemek için [Özel Outcomes](./custom-outcomes) kullanabilirsiniz.

Bir satın alma yapıldığında, gönderilen belirli mesajla ilişkili geliri izlemek için etkinliği "Custom Outcome" olarak gönderebilirsiniz.

Custom Outcomes, [Mobile SDK](./mobile-sdk-reference#outcomes) veya [Web SDK](./web-sdk-reference#outcomes) aracılığıyla gönderilebilir.

```javascript Example: Send purchase outcome via frontend SDK theme={null}
// Example: capture total price and item count at checkout
const checkoutPriceTotal = document.querySelector(".checkout-price-total").innerText;
const checkoutItemsTotal = document.querySelector(".checkout-items-total").innerText;

function updateOSOnCartPurchase(checkoutPriceTotal, checkoutItemsTotal) {
  const purchasePriceTotal = parseFloat(checkoutPriceTotal);
  const purchasedItemCount = parseInt(checkoutItemsTotal);

  OneSignalDeferred.push(function (OneSignal) {
    OneSignal.Session.sendOutcome("Purchase", purchasePriceTotal);
    OneSignal.Session.sendOutcome("Purchased Item Count", purchasedItemCount);
  });
}

const submitPurchaseButton = document.querySelector(".submit-payment");
if (submitPurchaseButton) {
  submitPurchaseButton.addEventListener("click", () => {
    updateOSOnCartPurchase(checkoutPriceTotal, checkoutItemsTotal);
  });
}
```

<Info>
  Outcomes, tanımlanan bir ilişkilendirme penceresi içinde kullanıcıların tıkladığı veya etkilendiği mesajlara gelir atfedebilir.
</Info>

<Check>
  Terk edilen sepet Journey'sini başarıyla uyguladınız. Mesaj göndermeye başlamaya hazır olduğunuzda **Set Live** seçin.
</Check>

## Sıkça Sorulan Sorular

### Sepet izleme için Özel Etkinlikler mi yoksa Etiketler mi kullanmalıyım?

Özel Etkinlikler, çoğu uygulama için önerilir. Daha zengin verileri destekler, Journey giriş kurallarında özellik tabanlı filtrelemeye izin verir ve aynı etkinlik tekrar tetiklendiğinde yeniden girişi otomatik olarak ele alır. Etiketler, yalnızca bir sepetin var olup olmadığını izlemenin yeterli olduğu daha basit kullanım durumları için çalışır, ancak manuel segment oluşturma ve yeniden giriş yapılandırması gerektirir.

### İlk hatırlatmayı göndermeden önce ne kadar beklemeliyim?

Bir ila iki saat yaygın bir başlangıç noktasıdır. Bu, satın alma niyeti hâlâ tazeyken kullanıcıya kendi kendine dönmesi için yeterli zaman tanır. Farklı bekleme sürelerini test edin ve kitleniz için en iyi çalışanı bulmak için [Journey analizlerini](./journeys-analytics) kullanın.

### Bir kullanıcı Journey'deyken sepetini güncellerse ne olur?

Özel Etkinlikler ile kullanıcı mevcut Journey örneğinden çıkar (`cart_updated` bir çıkış koşulu olarak tetiklendiği için) ve güncellenmiş etkinlik verileriyle hemen yeniden girer. Etiketler ile etiket hâlâ mevcut olduğundan kullanıcı aynı Journey örneğinde kalır — yeniden giriş süresini bekledikten sonra çıkıp yeniden girer.

<Info>
  Yardıma mı ihtiyacınız var?

  Destek ekibimizle sohbet edin veya `support@onesignal.com` adresine e-posta gönderin

  Lütfen şunları ekleyin:

  * Yaşadığınız sorunun ayrıntıları ve varsa yeniden üretme adımları
  * OneSignal Uygulama Kimliğiniz
  * Varsa Harici ID veya Abonelik ID
  * Varsa OneSignal Panosunda test ettiğiniz mesajın URL'si
  * İlgili [günlükler veya hata mesajları](/docs/en/capturing-a-debug-log)

  Size yardımcı olmaktan mutluluk duyarız!
</Info>
