Rehberler

n8n ile web sitesi taleplerini HubSpot’ta doğru kişiye yönlendirmek

Talepler ortak bir posta kutusuna düştüğünde birinin onları HubSpot’a kopyalaması ve kimin ilgileneceğine karar vermesi gerekir. Bir n8n akışı bu iki işi her seferinde aynı şekilde yapabilir ve yapamadığında haber verir.

Akışın adımları

  1. Webhook: Form, verileri HTTPS üzerinden n8n’deki bir Webhook düğümüne gönderir. Webhook’un cevabını Respond to Webhook düğümüyle verin; böylece form, gerçekte ne olduğunu yansıtan bir cevap alır.
  2. Doğrulama ve bal küpü (honeypot): Zorunlu alanları ve e-posta biçimini kontrol edin, boşlukları temizleyin ve e-postayı küçük harfe çevirin. Formda ziyaretçinin görmediği gizli bir alan bulunur; bu alan doluysa normal bir başarı cevabı dönün, kaydı günlüğe yazın ve durun. Böylece bot bir ipucu almaz.
  3. Kişiyi ekle veya güncelle: HubSpot düğümünde “Create/Update a contact” işlemini kullanın; eşleştirme e-posta adresine göre yapılır. Tekrar yazan bir kişi için ikinci bir kayıt açılmaz, mevcut kayıt güncellenir.
  4. Sorumlu atama: Bir Switch düğümü hizmet türüne veya bütçe aralığına göre sorumluyu seçer; eşleşmeyen her şey varsayılan bir sorumluya gider. Kişinin sorumlu alanını (hubspot_owner_id) isimle değil, HubSpot’un owners API’sinden alınan sorumlu kimliğiyle doldurun. Mevcut bir kişinin sorumlusunun değişip değişmeyeceğine önceden karar verin; değişmeyecekse önce kişiyi arayın ve sorumluyu yalnızca boşsa atayın.
  5. Slack’te etiketleme: Satış kanalına talep özetini ve HubSpot kaydının bağlantısını gönderin. Birine gerçekten bildirim gitmesi için mesajda Slack üye kimliğinin <@UYE_KIMLIGI> biçiminde yazılması gerekir; düz metin olarak yazılan @isim kimseyi uyarmaz. Her HubSpot sorumlusunu Slack üye kimliğiyle eşleştiren küçük bir tablo tutun.
  6. Alındı e-postası: Talep sahibine sonraki adımı ve ne zaman dönüş yapılacağını anlatan kısa bir e-posta gönderin. Bunu talep güvenle kaydedildikten sonra yapın, öncesinde değil.
  7. Hata yolu: HubSpot düğümünde kısa kesintiler için Retry On Fail ayarını, denemeler arasında bekleme süresiyle birlikte açın. Yine başarısız olursa düğümün hata çıkışını kullanarak talebi yedek bir kayda (tablo veya veri tablosu) yazın, operasyon kanalına uyarı gönderin ve talep sahibine yine de alındı e-postası gönderin. Beklenmeyen diğer hatalar için ortak bir hata akışı kullanın.

Kopyalayabileceğiniz alan eşleştirme tablosu

Akışı kurmadan önce eşleştirmeyi yazın: her form alanı için bir satır; HubSpot özelliğinin iç adı, türü, uygulanacak dönüşüm, alan boş geldiğinde ne olacağı ve güncellemede üzerine yazılıp yazılmayacağı. Örnek; hizmet ve bütçe açılır listeleri ile pazarlama izni kutusu olan bir iletişim formunu varsayar. Satırları kendi alanlarınızla değiştirin.

| Form alanı   | HubSpot özelliği (iç ad)    | Tür         | Dönüşüm                    | Boşsa          | Güncellemede        |
|--------------|-----------------------------|-------------|----------------------------|----------------|---------------------|
| email        | email                       | string      | boşluk temizle, küçük harf | reddet (400)   | eşleşme anahtarı    |
| first_name   | firstname                   | string      | boşluk temizle             | boş bırak      | üzerine yaz         |
| last_name    | lastname                    | string      | boşluk temizle             | boş bırak      | üzerine yaz         |
| company      | company                     | string      | boşluk temizle             | boş bırak      | mevcut kalsın       |
| phone        | phone                       | string      | yazıldığı gibi             | boş bırak      | üzerine yaz         |
| service      | service_interest (özel)     | enumeration | etiket -> seçenek değeri   | other          | üzerine yaz         |
| budget       | budget_band (özel)          | enumeration | etiket -> seçenek değeri   | unknown        | üzerine yaz         |
| message      | enquiry_message (özel)      | string      | kırp; üst sınırda kes      | boş bırak      | üzerine yaz         |
| page_url     | enquiry_page (özel)         | string      | sorgu dizesini çıkar       | boş bırak      | üzerine yaz         |
| utm_source   | utm_source (özel)           | string      | küçük harf                 | boş bırak      | mevcut kalsın       |
| (gönderim)   | enquiry_date (özel)         | date        | ISO tarih, örn. 2026-11-09 | yok            | üzerine yaz         |
| consent_box  | marketing_consent (özel)    | bool        | işaretli -> true           | false          | yalnızca false->true|
| (yönlendirme)| hubspot_owner_id            | owner ID    | yönlendirme tablosundan    | varsayılan     | doluysa kalsın      |
| (sabit)      | lifecyclestage              | enumeration | Lead için iç değer         | yok            | yalnızca boşsa      |

Örnekteki iki tercih bilinçlidir. Şirket ve UTM kaynağı güncellemede mevcut değerini korur; böylece geri dönen bir kişi onu ilk getiren kampanyayı kaybetmez. İzin burada yalnızca false’tan true’ya geçer; izni geri çekmek, kutusu işaretlenmeden gelen bir formla değil, abonelikten çıkma veya tercih süreciniz üzerinden yapılır.

İç adlar ve açılır liste değerleri

HubSpot’un Properties API’si bir özelliği iç adıyla (name) tanır; label yalnızca ekranda görünen addır ve iç ad özellik oluşturulduktan sonra değiştirilemez. service_interest gibi özel özellikler akış yazmadan önce oluşturulmuş olmalıdır. Açılır liste bir enumeration’dır: etiketi değil, seçeneğin saklanan değerini gönderin; form değerlerinden seçenek değerlerine küçük bir eşleme tablosu tutun ve beklenmeyen her şey için other gibi bir varsayılan gönderin. Çoklu onay kutularında seçili değerleri, aralarında boşluk olmadan noktalı virgülle ayrılmış tek bir metin olarak gönderin.

Tarihler

HubSpot tarih değerlerini UTC olarak saklar. Yalnızca tarih içeren bir özellikte zaman damgası, UTC gece yarısına ayarlanmış epoch milisaniye olmalıdır; önerilen biçim ISO 8601’dir (örneğin 2026-11-09). İstanbul’da 00:30’da gönderilen bir form UTC’de hâlâ önceki gündür; hangi günün geçerli olduğuna karar verin ve dönüşümü bilerek yapın.

HubSpot’un kendi yönettiği alanlar

Yaşam döngüsü aşaması (lifecycle stage), API dahil HubSpot araçlarıyla yalnızca ileri taşınabilir; daha önceki bir aşamaya dönmek için önce değerin temizlenmesi gerekir. Lead aşamasını yalnızca alan boşsa ayarlayın; böylece mevcut müşteriler etkilenmez. HubSpot’un kendi kaynak takibine dokunmayın, kampanya parametrelerini utm_source satırındaki gibi kendi özelliklerinizde tutun.

Güncellemede neyin üzerine yazılabileceği

Akış geri dönen bir kişi için yeni kayıt açmak yerine mevcut kaydı güncellediğinden, her satırın bir “Güncellemede” kuralı olmalıdır: üzerine yaz, mevcut kalsın veya izin satırındaki gibi tek yönlü bir kural. Sorumluya dikkat edin: yönlendirme her gönderimde çalışırsa geri dönen bir talep, onunla zaten konuşan kişiden alınıp başkasına atanabilir.

Slack uyarısı

Uyarı da bir eşleştirmedir: insanlara etiketleri gösterin, HubSpot’ta değerleri saklayın. Slack, yalnızca mesajda kişinin kullanıcı kimliği <@U012AB3CD> biçiminde geçtiğinde bildirim gönderir; <url|metin> biçimi de kayıt bağlantısını “HubSpot’ta aç” olarak gösterir.

Yeni talep: {firstname} {lastname}, {company}
Hizmet: {service_interest etiketi}   Bütçe: {budget_band etiketi}
Sorumlu: <@{sorumlunun_slack_kimligi}>
<{hubspot_kayit_url}|HubSpot’ta aç>

Eşleştirmeyi test etmek için ilginç her satıra bir gönderim yapın: her açılır liste seçeneği ve bir bilinmeyen değer, boş bir isteğe bağlı alan, farklı büyük-küçük harfle geri dönen bir e-posta, gece yarısından hemen sonra bir gönderim ve izin kutusunun işaretli ve işaretsiz hâlleri. Her birinden sonra kişiyi açıp her özelliği tabloyla karşılaştırın, ardından aşağıdaki beş kabul testini çalıştırın.

Beş kabul testi

  1. Yeni talep: Geçerli bir gönderim, doğru sorumluyla tek bir kişi kaydı oluşturur; o sorumluyu etiketleyen tek bir Slack mesajı ve tek bir alındı e-postası gider.
  2. Mükerrer talep: Aynı e-posta (farklı büyük-küçük harfle) yeniden gönderildiğinde mevcut kayıt güncellenir; kişi sayısı artmaz ve seçtiğiniz sorumlu kuralı uygulanır.
  3. Geçersiz e-posta: Form açık bir doğrulama hatası alır; HubSpot’a hiçbir şey yazılmaz, Slack mesajı veya e-posta gitmez.
  4. Bal küpü tetiklenmesi: Form normal bir başarı cevabı görür; HubSpot’a, Slack’e veya talep sahibine hiçbir şey gitmez, kayıt günlüğe yazılır.
  5. CRM erişilemez: HubSpot’a ulaşılamadığında (örneğin akışın test kopyasında geçersiz bir erişim anahtarıyla) talep yedek kayda yazılır, operasyon uyarısı bir kez gider, talep sahibi alındı e-postasını yine alır ve yedekteki talep daha sonra yeniden işlendiğinde tam olarak bir kişi kaydı oluşur.

Dikkat edilecekler

  • Alan eşleştirme ve tarihler: yukarıdaki “Kopyalayabileceğiniz alan eşleştirme tablosu” bölümündeki tabloya ve kurallara uyun.
  • İstek sınırları: HubSpot, belirli zaman aralıklarındaki API çağrılarını sınırlar; sınırlar hesabın aboneliğine ve uygulama türüne göre değişir. Sınır aşıldığında HTTP 429 döner. Beklemeli yeniden deneme kullanın, talep başına gereksiz sorgulardan kaçının ve eski talepleri toplu aktarırken hepsini aynı anda göndermek yerine gruplara bölün.
  • Kimlik bilgileri: Yalnızca gereken izinlere (kişileri okuma ve yazma; sorumluları sorguluyorsanız sorumluları okuma) sahip bir private app erişim anahtarı kullanın.
  • Testler: Testleri mümkünse bir test hesabında ya da açıkça işaretlenmiş test e-postalarıyla yapın ve test kayıtlarını sonra silin.
  • Aynı gönderimi yeniden denemek: her form gönderimine benzersiz bir kimlik verin ve yazmadan önce kontrol edin. Böylece yeniden denenen bir istek ikinci kayıt oluşturmaz; aynı kişiden gelen iki gerçek talep ise ayrı kalır.
  • Kişisel veriler: taleplerin CRM’de, yedek kayıtta ve n8n çalışma geçmişinde ne kadar tutulacağını belirleyin; bu takvime göre silin.

Canlı örnek

Bu tür bir yönlendirme akışını canlı demoda deneyebilirsiniz. Demo n8n üzerinde çalışır, oluşacak CRM kaydını, sorumluyu, Slack uyarısını ve otomatik cevabı ekranda gösterir; hiçbir şey göndermez. Bu akışı müşterileri için kendi markalarıyla kurdurmak isteyen ajanslar için ajans ortaklığı sayfası (İngilizce) ayrıntıları anlatır.

Sık sorulan sorular

HubSpot’ta bir özelliğin iç adını nerede bulurum?

HubSpot’un özellik ayarlarında, özelliğin ayrıntılarında ya da Properties API’de name alanında. İç ad özellik oluşturulduktan sonra değiştirilemez; akış ona güvenebilir.

Açılır liste değerim HubSpot’ta neden kaydedilmiyor?

Akışın seçeneğin saklanan değeri yerine ekranda görünen etiketi gönderip göndermediğini ve değerin seçenek olarak tanımlı olup olmadığını kontrol edin. Form değerlerini seçenek değerlerine eşleyin ve bilinmeyen her şey için bir varsayılan gönderin.

Akış yaşam döngüsü aşamasını ayarlayabilir mi?

Evet, ama API onu yalnızca ileri taşıyabilir. Yalnızca alan boşsa ayarlayın; böylece mevcut müşteriler etkilenmez.

Bu akış HubSpot yerine Pipedrive, Airtable veya Google Sheets ile çalışır mı?

Evet. Webhook, doğrulama, uyarı, alındı e-postası ve hata yolu aynı kalır. Değişen, kaydı yazan adımdır: geri dönen kişiyi tanıyan alan, eşleştirme tablosundaki özellik adları ve sorumlunun nasıl saklandığı.

Kaynaklar

  • HubSpot Developers, “Properties API”: developers.hubspot.com (iç ad ve etiket; özellik türleri; UTC tarih değerleri, tarih özelliklerinde UTC gece yarısı, ISO 8601; noktalı virgülle ayrılan onay kutusu değerleri).
  • HubSpot Knowledge Base, “Create and edit properties”: knowledge.hubspot.com (iç ad değiştirilemez).
  • HubSpot Knowledge Base, “Use lifecycle stages”: knowledge.hubspot.com (API dahil HubSpot araçlarıyla yalnızca ileri güncelleme).
  • n8n Docs, “HubSpot node”: docs.n8n.io (Create/Update a contact dahil kişi işlemleri).
  • Slack Developer Docs, “Formatting message text”: docs.slack.dev (kullanıcı etiketleme ve özel metinli bağlantılar).

İlgili proje ve hizmet

Bu konuda yardıma ihtiyacınız varsa anlatın.

n8n akışınız mı bozuldu? Akışı ve hata mesajını gönderin; nedenini bulup düzeltiyor ve test ediyoruz. Tek günde teslim seçeneği de var.

Akışı anlatın