---
title: "n8n ile Gelen Müşteri E-postalarını AI ile Otomatik Sınıflandırma"
description: "n8n IMAP trigger + AI düğümüyle gelen müşteri e-postalarını otomatik kategorize edip doğru ekibe yönlendirin. Adım adım akış rehberi."
canonical: https://agentroost.app/tr/blog/n8n-musteri-eposta-siniflandirma-otomasyonu
date: 2026-05-10T20:00:00Z
---

[Canonical URL](https://agentroost.app/tr/blog/n8n-musteri-eposta-siniflandirma-otomasyonu)

Destek ekibindeki herkes bu senaryoyu tanır: sabah gelen kutusunu açıyorsunuz, 80 e-posta var — kimi "faturamda hata var", kimi "ürünü iade etmek istiyorum", kimi de aslında satış departmanına gitmesi gereken "fiyat teklifi alabilir miyim?" sorusu. Bu e-postaları okuyup doğru kişiye yönlendirmek, günde belki yarım saat gibi görünse de haftada 2-3 saate, ayda 10+ saate çıkıyor.

n8n'in IMAP trigger'ı + AI/LLM düğümü birlikte kullanıldığında bu triyajı tamamen otomatikleştirebilirsiniz. Aşağıda sıfırdan çalışan bir akış kuruyoruz.

---

## Akışın Genel Mantığı

```
IMAP Email Trigger
    → Set (konu + gövdeyi birleştir)
    → AI/LLM düğümü (kategori döndür)
    → Switch (kategoriye göre dal)
        → Fatura:    Gmail "Fatura" etiketi + Slack #fatura-destek
        → Şikayet:   Gmail "Şikayet" etiketi + Slack #oncelikli-destek
        → Satış:     Gmail "Satış" etiketi + CRM'e lead ekle
        → İade:      Gmail "İade" etiketi + Slack #iade-destek
        → Diğer:     Gmail "Genel" etiketi
```

Beş düğüm, tam otonom triyaj. Şimdi adım adım gidelim.

---

## Adım 1 — IMAP Email Trigger

Yeni bir workflow açın. İlk düğüm olarak **Email Trigger (IMAP)** ekleyin.

**Credential ayarları:**
- **Host:** `imap.gmail.com` (Gmail için) ya da `outlook.office365.com`
- **Port:** 993
- **SSL/TLS:** açık
- **Mailbox:** `INBOX`
- **Action:** `Mark as read` — aynı e-postayı iki kez işlememek için

> Gmail kullanıyorsanız ve Google hesabınızda 2FA açıksa "App Password" oluşturmanız gerekir (Google Hesabı → Güvenlik → Uygulama şifreleri). Normal şifreniz çalışmaz.

**Poll interval:** Her 1 dakikada bir kontrol etmesi için `*/1 * * * *` cron ifadesi yeterlidir.

Trigger çıktısında şunlar gelir: `subject`, `text` (düz metin gövde), `html`, `from`, `to`, `date`.

---

## Adım 2 — Set Düğümüyle Prompt Hazırla

IMAP trigger'dan gelen `subject` ve `text` alanlarını birleştirip AI düğümüne temiz bir girdi hazırlayın.

**Set** düğümü ekleyin, `emailContent` adında bir alan tanımlayın:

```
Konu: {{ $json.subject }}

İçerik:
{{ $json.text.slice(0, 1500) }}
```

`.slice(0, 1500)` ile token israfını önlüyorsunuz; çoğu sınıflandırma için ilk 1500 karakter fazlasıyla yeterli.

---

## Adım 3 — AI/LLM Düğümüyle Sınıflandır

**AI/LLM** düğümü ekleyin (n8n 1.x'te "Basic LLM Chain" veya tercih ettiğiniz LLM credential'ıyla gelen düğümlerden herhangi biri).

**System prompt:**

```
Sen bir müşteri destek triaj asistanısın. Sana bir e-postanın konusu ve içeriği verilecek.
Aşağıdaki kategorilerden TAM OLARAK BİRİNİ seç ve sadece JSON döndür:

{
  "category": "fatura" | "sikayet" | "satis" | "iade" | "diger",
  "confidence": 0.0–1.0,
  "reason": "kısa gerekçe (Türkçe, max 15 kelime)"
}

Başka hiçbir şey yazma. Sadece JSON.
```

**User message (expression):**

```
{{ $json.emailContent }}
```

**Model seçimi:** `gpt-4o-mini` hız ve maliyet dengesi açısından bu görev için iyi bir başlangıç noktasıdır. AgentRoost'ta 350'den fazla model arasından istediğinizi seçebilir, herhangi bir API anahtarı ayarlamadan doğrudan kullanmaya başlayabilirsiniz.

Düğümün çıktısı `text` alanında ham JSON string döner. Bunu parse etmek için bir sonraki adımda Code düğümü kullanacağız.

---

## Adım 4 — Code Düğümüyle JSON'ı Parse Et

**Code** düğümü (JavaScript) ekleyin:

```javascript
const raw = $input.first().json.text || $input.first().json.output || '';
let parsed;
try {
  // Model bazen ```json ... ``` içinde döndürür, temizleyelim
  const cleaned = raw.replace(/```json|```/g, '').trim();
  parsed = JSON.parse(cleaned);
} catch {
  parsed = { category: 'diger', confidence: 0, reason: 'parse hatası' };
}

return [{
  json: {
    ...$input.first().json,
    category: parsed.category,
    confidence: parsed.confidence,
    reason: parsed.reason
  }
}];
```

Bu adım `category` ve `confidence` alanlarını sonraki düğümlere temiz şekilde taşır.

---

## Adım 5 — Switch ile Dallandır

**Switch** düğümü ekleyin. `Rules` modunda her dal için:

| Dal adı | Koşul |
|---|---|
| fatura | `{{ $json.category }}` === `fatura` |
| sikayet | `{{ $json.category }}` === `sikayet` |
| satis | `{{ $json.category }}` === `satis` |
| iade | `{{ $json.category }}` === `iade` |
| diger | fallback (her şey) |

Her dalın sonuna ihtiyacınıza göre düğüm ekleyin:
- **Gmail** düğümü → etiketi ekle (`addLabel`)
- **Slack** düğümü → ilgili kanala mesaj at
- **HTTP Request** → CRM API'sine lead oluştur (satış dalı için)

**Güven kontrolü ekleyin:** Şikayet dalının hemen başına bir **IF** düğümü koyun:

```
{{ $json.confidence }} < 0.70  →  "Belirsiz" etiketini ekle + #destek-gözden-geçir kanalına bildir
```

Böylece model emin olmadığında insan gözden geçirir.

---

## Olası Tuzaklar

- **HTML e-postalar:** Bazı e-postalar `text` alanı boş, sadece `html` içerir. Set düğümünde fallback ekleyin: `{{ $json.text || $json.textHtml || '' }}`
- **Encoding:** Türkçe karakter sorunları için IMAP credential'da charset `UTF-8` seçin.
- **Otoresponder döngüsü:** Kendi otomatik yanıtlarınızı tekrar işlememeniz için IF düğümüyle `from` alanında `no-reply` veya `noreply` içeriyorsa akışı durdurun.
- **Rate limit:** Gmail IMAP bağlantısı için 1 dakikalık polling genellikle yeterlidir; çok daha kısa aralıklar IMAP bağlantı hatası üretebilir.

---

## AgentRoost'ta Nasıl Çalıştırırsınız

Kendi sunucunuzda bu akışı ayaklandırmak; Docker kurulumu, SSL sertifikası, IMAP portlarını açma ve AI API anahtarı almanızı gerektirir. Toplam süre: birkaç saat, bazen daha fazla.

AgentRoost'ta şu şekilde çalışır:

1. [agentroost.app/tr/agents/n8n](/tr/agents/n8n) sayfasından **n8n** framework'ünü seçin.
2. Örneğinize bir ad verin — örneğin `destek-triaj`.
3. Dakikalar içinde `https://destek-triaj.agentroost.app` adresinizde kendi n8n editörünüz açılır.
4. Yukarıdaki akışı oluşturun. AI/LLM düğümünü credential olmadan doğrudan kullanın — **AI kredisi aboneliğinize dahil**, BYOK yok.
5. IMAP credential'ınızı girin, akışı aktif edin. Bitti.

Örnek tamamen size aittir. Workflow'ları, credential'ları, execution geçmişini istediğiniz gibi yönetirsiniz. $19.99/ay'dan başlayan fiyata sunucu kurulumu, SSL, Docker ve API anahtarı derdi olmadan. 14 günlük para iade garantisiyle risksiz deneyin.

[Planları karşılaştırın →](/tr/pricing)

---

## Sonraki Adımlar

Bu triyaj akışı kurulduktan sonra üstüne kolayca katman ekleyebilirsiniz:

- **Otomatik ilk yanıt:** Şikayet kategorisine düşen e-postalara "Talebiniz alındı, 2 saat içinde dönüyoruz" şablonuyla otomatik cevap.
- **SLA takibi:** Şikayet geldiğinde `Wait` düğümüyle 4 saat bekleyin; ticket kapanmamışsa yöneticiye Slack bildirimi.
- **Haftalık rapor:** Schedule Trigger ile her Pazartesi kategorilere göre e-posta sayısını toplayıp bir özet atın.
- **Çoklu dil:** Türkçe ve İngilizce gelen kutularını aynı akışta yönetmek için prompt'a `"language": "tr" | "en"` alanı da döndürün; her dil için ayrı Slack kanalına yönlendirin.

Triyaj otomasyonu burada sadece bir başlangıç noktası — akışı ihtiyacınıza göre büyütmek tamamen sizin elinizdedir.
