> ## 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.

# Kullanıcıları sayfa konusuna ve abonelik kaynağına göre etiketleyin

> Kullanıcıları ziyaret ettikleri sayfalara ve push bildirimlerine abone oldukları sayfaya göre OneSignal'de etiketleyin, ardından hedefli kampanyalar için segmentleyin.

Sitenizde veya uygulamanızda kullanıcıların etkileşim kurduğu sayfalara göre OneSignal'de kullanıcıları etiketleyebilir, ardından bu etiketleri hedefli mesajlaşma için segmentleyebilirsiniz. Bu sayfa iki farklı kalıbı kapsar — hedefinize uyanı seçin veya ikisini birlikte çalıştırın.

## Kalıbınızı seçin

| Kalıp                            | Kodun çalıştığı zaman                      | Ayarlanan değer                             | Platformlar       |
| -------------------------------- | ------------------------------------------ | ------------------------------------------- | ----------------- |
| **Sayfa konusuna göre etiketle** | Her sayfa veya ekran ziyaretinde           | Konu başına sayaç etiketi (`gaming = 5`)    | Web, Android, iOS |
| **Abonelikte etiketle**          | Kullanıcı push'a opt-in yaptığında bir kez | Atıf etiketi (`subscription_page = gaming`) | Yalnızca Web      |

**Sayfa konusuna göre etiketle**, etkileşimle birlikte büyüyen davranışsal ilgi profili oluşturur — içerik önerileri, yeniden etkileşim kampanyaları ve kategori tabanlı segmentasyon için yararlıdır; bir konuya açıkça opt-in yapmayan kullanıcılar için bile.

**Abonelikte etiketle**, opt-in sırasında tek bir zaman noktası sinyali yakalar — kaynak farkındalıklı karşılama mesajlaşması ve kullanıcının abone olduğu sayfanın sonra ne okumak istediğini öngördüğü damla kampanyaları için yararlıdır.

## Ön koşullar

* OneSignal [Web SDK](./web-sdk-setup) ve/veya [Mobil SDK](./mobile-sdk-setup) kurulu ve başlatılmış olmalı.
* [Etiketler](./add-user-data-tags) ve [Segmentler](./segmentation) hakkında bilgi sahibi olunmalı.

***

## Sayfa konusuna göre etiketle (her ziyarette)

Kullanıcıları en çok etkileşim kurdukları konularla etiketleyerek daha kişiselleştirilmiş mesajlaşma sunun — alaka düzeyini, tıklamaları ve memnuniyeti artırın.

Örnek kullanım durumları:

* Bir moda sitesinde, bir kullanıcı yalnızca erkek ayakkabılarıyla ilgileniyor — kadın elbiseleriyle değil.
* Bir haber uygulamasında, bir kullanıcı sürekli olarak finans ve spor makalelerini ziyaret ediyor — ancak hiçbir zaman eğlence veya siyaset konularını.

### 1. Konu taksonomisini tanımlayın

Takip etmek istediğiniz içerik kategorilerini veya konuları belirleyerek başlayın. Bunlar şunlar olabilir:

* `sports`, `finance` veya `entertainment` gibi geniş dikeyler
* `laptops`, `accessories` veya `premium` gibi ürün türleri
* Yazarlar veya markalar

<Note>
  - Yönetimi basit tutmak için 3-8 konuyla başlayın.
  - Şişkinliği önlemek için toplam 20 konunun altında kalın.
</Note>

### 2. Konu ziyaretlerini takip etmek için kod ekleyin

Aşağıdaki örnekler üç şey yapar:

* Her sayfa veya ekranda bir veya daha fazla konuyu takip eder.
* Konu her görüntülendiğinde ziyaret sayısını artırır.
* Her görüntülemede güncellenmiş sayımla kullanıcıyı etiketler.

<CodeGroup>
  ```javascript JavaScript theme={null}
  const topics = ["sports", "entertainment"]; // One or many

  if (typeof localStorage !== "undefined" && Array.isArray(topics)) {
    topics.forEach(topic => {
      let count = parseInt(localStorage.getItem(topic), 10);
      count = isNaN(count) ? 1 : count + 1;
      localStorage.setItem(topic, count);
      OneSignal.User.addTag(topic, count.toString());
    });
  }
  ```

  ```kotlin Kotlin theme={null}
  val topics = listOf("sports", "entertainment") // One or many
  val sharedPrefs = context.getSharedPreferences("TopicPrefs", Context.MODE_PRIVATE)

  topics.forEach { topic ->
      val count = sharedPrefs.getInt(topic, 0) + 1
      sharedPrefs.edit().putInt(topic, count).apply()
      OneSignal.User.addTag(topic, count.toString())
  }
  ```

  ```swift Swift theme={null}
  let topics = ["sports", "entertainment"] // One or many
  let defaults = UserDefaults.standard

  for topic in topics {
      let count = defaults.integer(forKey: topic) + 1
      defaults.set(count, forKey: topic)
      OneSignal.User.addTag(key: topic, value: "\(count)")
  }
  ```
</CodeGroup>

### 3. Segmentleyin ve kişiselleştirilmiş mesajlar gönderin

Etiketler kullanıcılara uygulandıktan sonra, bunları şunları kullanarak hedefleyebilirsiniz:

* Kural tabanlı gruplar oluşturmak için [Segmentler](./segmentation) (örn. `gaming >= 3` olan kullanıcılar).
* Tek bir kampanyaya dinamik olarak kullanıcı eklemek için [API Filtreleri](/reference/create-message#filters).

Örnek kullanım durumları:

* Yalnızca ilgili sayfaları 5 veya daha fazla ziyaret etmiş kullanıcılara belirli konular hakkında mesaj gönderin.
* Belirli bir yazardan 3'ten fazla gönderi okumuş kullanıcılara gönderileri tanıtın.
* Belirli bir ürün kategorisine dönmeye devam eden alışverişçilere indirimler sunun.

### En iyi uygulamalar

Yapın:

* Kampanyaları başlatmadan önce `console.log()` (web) veya platformunuzun logger'ını kullanarak etiket mantığınızı test edin.
* Sayfalar arasında tutarlı konu adlandırma kuralları kullanın.
* Her sayfayı düzenlemeden ayarlayabilmeniz için konu listesini merkezi bir yerde (yapılandırma dosyası veya uzaktan yapılandırma) tutun.

Kaçının:

* Uzun veya aşırı spesifik etiket anahtarları (tam makale başlıkları, uzun URL'ler).
* OneSignal'ın [etiket sınırlarını](https://onesignal.com/pricing) aşmaktan.
* Kişisel olarak tanımlanabilir bilgilerle (PII) etiketleme yapmaktan.

***

## Abonelikte etiketle (tek seferlik, yalnızca web)

Web push abonelerini — abone oldukları sayfa konusu veya URL yolu gibi — bağlamsal verilerle etiketleyerek hedefli takip kampanyaları sunun. Bu kalıp opt-in'i tespit eder, etiketleri uygular ve damla tarzı mesajlaşma için segmentleri besler.

### 1. Opt-in sırasında kullanıcıları etiketleyin

Bir kullanıcı push bildirimlerine abone olduğunda, opt-in'i tespit etmek ve görüntüledikleri sayfa hakkında bağlamsal veri içeren etiketler uygulamak için [`PushSubscription` change dinleyicisini](./web-sdk-reference#addeventlistener-push-subscription-changes) kullanın.

```javascript theme={null}
function pushSubscriptionChangeListener(event) {
  if (event.current.optedIn && !event.previous.optedIn) {
    // User just opted in — tag with subscription context
    var pathSegment = window.location.pathname.split('/')[1] || 'home';
    var pageTopic = document.querySelector('meta[name="article-topic"]')?.content || 'general';

    OneSignal.User.addTags({
      subscription_page: pathSegment,
      subscription_page_topic: pageTopic,
    });
  }
}

OneSignalDeferred.push(function(OneSignal) {
  OneSignal.User.PushSubscription.addEventListener("change", pushSubscriptionChangeListener);
});
```

**Bu nasıl çalışır:**

* `change` olayı, kullanıcının push abonelik durumu değiştiğinde (opt-in, opt-out, token yenileme) tetiklenir.
* Kullanıcının aktif bir aboneliği olduğunda `event.current.optedIn` `true`'dur. `!event.previous.optedIn` kontrolü, etiketlerin her durum değişikliğinde değil yalnızca ilk opt-in'de uygulanmasını sağlar.
* `window.location.pathname.split('/')[1]`, abonelik bağlamı olarak ilk yol segmentini yakalar. Örneğin, URL `https://example.com/gaming/article-123` ise, `subscription_page` etiketi `gaming` olarak ayarlanır.
* `pageTopic`, bir `<meta>` etiketinden çıkarılır ve `'general'` değerine geri düşer. Sitenizin meta veri yapısına uyacak şekilde ayarlayın.

### 2. Kullanıcıları etikete göre segmentleyin

Etiketler uygulandıktan sonra, bu etiketlere dayalı kullanıcıları hedeflemek için [Segmentler](./segmentation) veya [API Filtreleri](/reference/create-message#filters)'ni kullanın. Örneğin:

* `subscription_page`'in `gaming` olduğu kullanıcılara bir kampanya gönderin.
* Etiket değerlerine ve zamanlamaya göre dinamik segmentler oluşturun (örn. ilk oturumdan bu yana geçen saatler).

### 3. Takip mesajlaşmasını otomatikleştirin

Kullanıcının ne zaman abone olduğuna ve hangi içerik altında abone olduğuna göre mesajları tetikleyen damla tarzı kampanyalar oluşturun.

**Örnek: Oyun aboneleri için damla kampanyası**

| Segment Adı | Filtreler                                                         | Açıklama                            |
| ----------- | ----------------------------------------------------------------- | ----------------------------------- |
| Gaming 1    | `subscription_page` = `gaming` AND First Session > 2h AND \< 24h  | Abonelikten 2–24 saat sonra ulaşın. |
| Gaming 2    | `subscription_page` = `gaming` AND First Session > 24h AND \< 48h | 1 gün sonra takip edin.             |
| Gaming 3    | `subscription_page` = `gaming` AND First Session > 72h AND \< 96h | 3 gün sonra son kontrol.            |

<Info>
  Mesajlaşma penceresi geçtiğinde kullanıcıların segmentlerde kalmasını önlemek için üst zaman sınırlarını (`<`) kullanın.
</Info>

### 4. Segmentleri mesaj şablonlarıyla birleştirin

Segmentler oluşturulduktan sonra:

* Kampanyadaki her aşama için [Şablonlar](./templates) oluşturun (tanıtım, hatırlatma, promosyon).
* Kullanıcılar uygun segmente girdiğinde bu mesajları göndermek için [Journey'leri](./journeys-overview) kullanın.

Örnek mesaj fikirleri:

* Bir oyun topluluğuna veya sosyal gruba davet.
* Konularıyla ilgili trend makaleleri önerin.
* Özel bir teklif veya indirim kodu gönderin.

### En iyi uygulamalar

* Gerçek kullanıcı niyetini yansıtan anlamlı etiket adları ve değerleri kullanın.
* Mümkün olduğunda sayfa meta verilerinden etiket değerlerini dinamik olarak çıkarın.
* Yalnızca ilk opt-in'de etiketleyin — yukarıdaki dinleyici örneği, her durum değişikliğinde yeniden etiketlemeyi önlemek için `!event.previous.optedIn`'i kontrol eder.

<Warning>
  Etiket değerlerine ad veya e-posta adresi gibi kişisel olarak tanımlanabilir bilgiler (PII) eklemeyin. Tüm sitenizde etiket değerlerini sabit kodlamaktan kaçının — bunları sayfa bağlamından dinamik olarak çıkarın.
</Warning>

***

## SSS

### Hangi kalıbı kullanmalıyım?

Zaman içinde davranışsal ilgi profili oluşturmak için **sayfa konusuna göre etiketle**'yi kullanın. Sayaç her ziyaretle artar, böylece segmentler etkileşim derinliğine (`gaming >= 5`) göre ayarlanabilir. Opt-in sırasında tek bir zaman noktası atıfını yakalamak için **abonelikte etiketle**'yi kullanın; kullanıcıların uzun bir ziyaret geçmişine sahip olmadan önce, abone oldukları *yere* tepki vermek istediğiniz kaynak farkındalıklı karşılama mesajlaşması için yararlıdır. Her iki kalıp da aynı sitede yan yana çalışabilir — farklı etiketler ayarlarlar ve farklı sorulara yanıt verirler.

### Kullanıcı tarayıcı verilerini temizlerse etiketler devam eder mi?

Hayır. Web'de tarayıcı verilerini temizlemek yeni bir Abonelik oluşturur ve `localStorage` içinde saklanan konu başına sayaçlar da onunla birlikte sıfırlanır. Kullanıcı yeniden abone olursa (manuel olarak veya [otomatik yeniden abonelik](./web-push-setup#auto-resubscribe) aracılığıyla), `change` dinleyicisi tekrar tetiklenir ve mevcut sayfaya göre abonelik etiketini yeniden uygular, ancak ziyaret sayaçları sıfırdan başlar.

### İlk abonelikten sonra etiketleri güncelleyebilir miyim?

Evet. Etiket eklemek veya güncellemek için istediğiniz zaman `OneSignal.User.addTag()` veya `OneSignal.User.addTags()`'i çağırabilirsiniz. Abonelik dinleyicisi ilk bağlam için kullanışlıdır, ancak süregelen davranışa göre de kullanıcıları etiketleyebilirsiniz.

### Mesaj olay filtreleri yerine bu kalıpları kullanmalı mıyım?

Farklı amaçlara hizmet ederler. **Kullanıcının ziyaret ettiği veya abone olduğu sayfalara** göre segmentlemek istediğinizde — yani sitenizde veya uygulamanızda ortaya çıkan sinyal — bu sayfadaki kalıpları kullanın. **Kullanıcının hangi OneSignal mesajlarıyla etkileşim kurduğuna** (teslim edildi, tıklandı vb.) göre segmentlemek istediğinizde [Mesaj olay filtreleri](./segmentation#message-event-filters)'ni kullanın. Birbirlerini tamamlarlar, gereksiz değildirler.

### Abonelik kaynağı kalıbı mobilde çalışıyor mu?

Doğrudan değil. `PushSubscription.addEventListener("change", ...)` API'si yalnızca web içindir. iOS ve Android'de, opt-in akışınızın içinden `addTag` çağırarak benzer bir atıf elde edebilirsiniz — örneğin, kullanıcı bir [izin istemini](./permission-requests) kabul ettikten hemen sonra, bulundukları ekran veya özellikle etiketleyin.

***

## İlgili sayfalar

<Columns cols={2}>
  <Card title="Etiketler" icon="tags" href="./add-user-data-tags">
    Kişiselleştirme ve segmentasyon için kullanıcılara özel özellikler ekleyin.
  </Card>

  <Card title="Segmentler" icon="users" href="./segmentation">
    Hedefli mesajlaşma için kullanıcıları özellikler, etiketler ve davranışa göre gruplandırın.
  </Card>

  <Card title="Web SDK Referansı" icon="code" href="./web-sdk-reference">
    Abonelik dinleyicileri ve etiketleme yöntemleri dahil OneSignal Web SDK'sının tam referansı.
  </Card>

  <Card title="Mobil SDK Referansı" icon="mobile" href="./mobile-sdk-reference">
    Etiketleme yöntemleri dahil OneSignal Mobil SDK'sının tam referansı.
  </Card>

  <Card title="Journey'ler" icon="route" href="./journeys-overview">
    Segment girişi veya özel olaylar tarafından tetiklenen çok adımlı mesajlaşma iş akışları oluşturun.
  </Card>
</Columns>
