Web sitesindeki teklif formlarını CRM’ye otomatik aktarmak için form gönderimini doğrudan “müşteri oluştu” diye kaydetmek yerine önce sunucuda doğrulayın, her başvuruya benzersiz bir talep kimliği verin, aynı kişi veya şirketten gelen tekrarları kontrollü biçimde eşleştirin ve yalnız doğrulanan veriyi CRM’de ilgili satış kuyruğuna gönderin. Sağlam akış; web formu → sunucu doğrulaması → spam ve tekrar kontrolü → CRM talep kaydı → ürün/bölgeye göre atama → satış görevi → teklif ve sonuç takibi şeklindedir. En kritik nokta, kullanıcıya “talebiniz alındı” mesajı gösterirken CRM aktarımı başarısız olmuşsa kaydı kaybetmemektir.
Teklif formunu CRM’ye bağlamak neyi çözer?
Form bildirimleri yalnız e-posta kutusuna düşüyorsa satış ekibi bir başvuruyu iki kez arayabilir, başka birini tamamen kaçırabilir veya hangi kampanyanın gerçek teklife dönüştüğünü göremeyebilir. CRM entegrasyonu her başvuruyu tek bir kayıt altında toplar; ürün, şirket, kaynak ve takip durumunu standartlaştırır. Böylece “kaç form geldi?” yerine “kaç nitelikli talep doğrulandı, kaç teklif çıktı ve hangileri sonuçlandı?” soruları cevaplanabilir.
| Konu | Yalnız form e-postası | Form → CRM otomasyonu |
|---|---|---|
| Kayıt kimliği | Konu satırı veya gelen kutusu sırası | Her gönderim için benzersiz talep ID |
| Sorumlu | Kimin gördüğüne bağlı | Kural veya satış kuyruğuyla atanır |
| Tekrar başvuru | İkinci e-posta ayrı görünür | Aynı kişi/şirket eşleştirilebilir, yeni ihtiyaç ayrı fırsat olabilir |
| Kaynak | UTM bilgisi e-postada kaybolabilir | İlk ve son kaynak alanları tutulabilir |
| Teklif sonucu | Başka dosyada izlenir | Talep → fırsat → teklif → sonuç zinciri |
| Hata takibi | E-posta ulaşmadıysa görünmeyebilir | Kuyruk, tekrar deneme ve hata durumu izlenebilir |
B2B teklif formunda hangi alanlar gerçekten gerekli?
Formu CRM’ye bağlamadan önce formun kendisini sadeleştirin. Akhisar’da ambalaj üretimi yapan kurgusal bir işletme düşünelim: her ziyaretçiden vergi numarası, tam adres ve onlarca teknik alan istemek yerine ilk değerlendirmeyi yapmaya yetecek bilgileri toplayabilir. Ürün türü, yaklaşık ölçü veya hacim, adet, teslim bölgesi ve gerekli dosya ilk temas için yeterli olabilir; satış temsilcisi ayrıntıları görüşmede tamamlar.
| Alan | Zorunluluk | CRM kullanımı |
|---|---|---|
| Ad soyad | Zorunlu | İletişim kişisi |
| Şirket adı | B2B’de genellikle zorunlu | Şirket eşleştirme ve tekrar kontrolü |
| Telefon veya e-posta | En az biri doğrulanabilir olmalı | Geri dönüş kanalı |
| Ürün / ihtiyaç | Zorunlu | Ürün kuyruğuna yönlendirme |
| Adet aralığı | Tercihen zorunlu | Kapasite ve teklif ön elemesi |
| Teslim ili/ülkesi | İhtiyaca göre | Bölgesel satış veya lojistik kontrolü |
| Teknik dosya | İhtiyaca göre | Ölçü/çizim değerlendirmesi; güvenli dosya politikası gerekir |
| Açıklama | Opsiyonel | Özel koşullar; serbest metin güvenilir veri kabul edilmez |
Form gönderildiğinde ilk kontrol tarayıcıda değil sunucuda yapılmalı
Tarayıcıdaki required, e-posta biçimi veya JavaScript kontrolleri kullanıcı deneyimini iyileştirir; güvenlik sınırı değildir. İstek doğrudan API uç noktasına gönderilebilir. Bu nedenle sunucu, alan uzunluklarını, beklenen veri tiplerini, izin verilen seçenekleri ve dosya türü/boyut politikalarını yeniden doğrulamalıdır. OWASP, sözdizimsel doğrulama ile iş kuralı doğrulamasını ayrı düşünmeyi ve mümkün olduğunda izin verilen değer yaklaşımını kullanmayı önerir.
Bot koruması kullanıyorsanız yalnız tarayıcıda bir doğrulama rozeti göstermek yeterli değildir. Örneğin Cloudflare Turnstile, tokenın sunucu tarafında Siteverify ile doğrulanmasını zorunlu tutar; tokenlar sürelidir ve yeniden kullanım kontrolü vardır. CRM kaydını ancak formun kendi sunucu kontrolleri ve varsa anti-bot doğrulaması geçtikten sonra oluşturun.
- Alanları trim/normalize edin; şirket adı veya telefon için körlemesine tüm karakterleri silmeyin.
- Kullanıcının seçebileceği ürün tipi gibi alanlarda tanımlı değer listesini doğrulayın.
- Serbest metni komut, SQL veya HTML olarak çalıştırmayın; depolama ve gösterim katmanında bağlama uygun kaçış uygulayın.
- Dosya yükleme gerekiyorsa yalnız dosya uzantısına güvenmeyin; boyut, içerik türü, depolama konumu ve erişim yetkisini ayrı politikayla yönetin.
- Form endpointi için makul rate limit ve bot doğrulama kuralları kullanın; başarısız doğrulama ayrıntılarını kullanıcıya iç sistem bilgisi olarak göstermeyin.
Her form gönderimine neden benzersiz talep ID vermelisiniz?
Form başarıyla sunucuya ulaştığında CRM’den bağımsız bir talep kimliği üretmek hata ayıklamayı ve tekrar denemeyi kolaylaştırır. Örneğin WEB-2026-09-001842 gibi gözle okunabilir bir referans kullanıcıya gösterilebilir; sistem içinde ise UUID gibi çakışma riski düşük bir anahtar kullanılabilir. Aynı istek ağ problemi nedeniyle iki kez gönderilirse istemci veya sunucu idempotency anahtarıyla ikinci talebin yeni bir kayıt mı yoksa aynı gönderimin tekrarı mı olduğunu ayırabilir.
Aynı müşteri tekrar form gönderirse yeni kişi mi, yeni fırsat mı oluşmalı?
Tekrar kontrolünde tek bir evrensel kural yoktur. Aynı e-posta adresinin beş dakika içinde aynı ürün ve aynı metinle ikinci kez gelmesi büyük olasılıkla yeniden gönderimdir; altı ay sonra aynı şirketin farklı ürün için başvurması ise yeni satış fırsatı olabilir. CRM’de kişi/şirket kimliği ile fırsat kimliğini ayırmak bu nedenle önemlidir. “E-posta aynıysa kaydı at” yaklaşımı gerçek yeni talepleri kaybettirebilir.
| Sinyal | Örnek yorum | Önerilen işlem |
|---|---|---|
| Aynı idempotency anahtarı | Ağ tekrar denemesi | Yeni kayıt oluşturma; önceki sonucu döndür |
| Aynı kişi + aynı form + birkaç dakika | Çift tıklama veya sayfa yenileme | Tek talep altında birleştir, olay kaydı tut |
| Aynı şirket + farklı ürün | Yeni ihtiyaç | Aynı şirket/kişi altında yeni fırsat aç |
| Aynı kişi + aylar sonra | Yeni satın alma döngüsü | Yeni talep/fırsat; geçmiş ilişkiyi koru |
| Farklı kişi + aynı şirket | Aynı kurumdan başka yetkili | Kişiyi ayrı, şirketi ortak tut |
| Şüpheli seri gönderim | Bot/spam olasılığı | İnceleme veya otomatik spam kuyruğu; satış temsilcisine düşürme |
Web formu alanları CRM alanlarına nasıl eşlenmeli?
Formdaki alan adlarını doğrudan CRM’nin kullanıcıya görünen etiketlerine bağlamak kırılgandır. Arada sürümlenmiş bir eşleme katmanı kullanın. Web formunda “urun_tipi” alanı CRM’de “interest_product_family” alanına gidebilir; CRM yöneticisi etiketi değiştirdiğinde entegrasyon bozulmaz. Kaynak sistem, form sürümü ve oluşturulma zamanı gibi teknik alanları da görünür veya gizli denetim alanlarında saklayın.
| Form alanı | CRM alanı | Not |
|---|---|---|
| request_id | external_request_id | Tekrar denemede aynı kalır |
| company_name | account/company | Normalize edilmiş şirket adı; otomatik kesin eşleşme dikkatli yapılır |
| contact_name | contact | Kişi şirketten ayrı tutulur |
| email / phone | contact channels | Gerekli kanal; biçim doğrulaması ve kaynak bilgisi |
| product_type | interest_product_family | Satış kuyruğu için kontrollü değer |
| quantity_range | opportunity_quantity | Kesin sipariş değildir; tahmini ihtiyaç |
| delivery_region | territory | Bölgesel atama varsa kullanılır |
| utm/source | lead_source fields | İlk temas ve kampanya analizi |
| form_version | integration metadata | Form değişikliklerinde geriye dönük hata ayıklama |
Talep hangi satış temsilcisine atanmalı?
Atama, çalışan isimlerini kod içine sabitlemek yerine iş kuralıyla yapılmalıdır. Örneğin ambalaj türüne göre ürün uzmanı, ülkeye göre ihracat ekibi veya mevcut müşteriyse hesap sorumlusu seçilebilir. Hiçbir kurala uymayan talep sahipsiz kalmamalı; ortak bir “inceleme kuyruğu”na düşmelidir. İzinli tatil, çalışan ayrılığı veya kapasite değişikliği gibi durumlarda kuralı kod yayını gerektirmeden değiştirebilmek operasyonu kolaylaştırır.
| Koşul | Atama | Ek görev |
|---|---|---|
| Yurt içi standart ambalaj | İç satış kuyruğu | İlk kontrol görevi |
| İhracat / yabancı dil | İhracat satış kuyruğu | Dil ve teslim ülkesini doğrula |
| Teknik çizim yüklenmiş özel üretim | Teknik satış kuyruğu | Dosya erişimi ve üretilebilirlik incelemesi |
| Mevcut müşteri | Mevcut hesap sorumlusu | Yeni fırsatı aynı şirkete bağla |
| Kural bulunamadı | Genel inceleme kuyruğu | Yöneticiye sahiplik görevi |
CRM API’si hata verirse form talebi nasıl korunur?
Entegrasyonun en kritik testi, CRM normal çalışırken değil çalışmadığında yapılır. Web sunucusu önce kendi kalıcı kaydını oluşturabilir ve durumu “CRM aktarımı bekliyor” yapabilir. İşleyici CRM’ye gönderdiğinde başarıyla dönen CRM kayıt ID’sini saklar. Zaman aşımı veya geçici sunucu hatasında aynı request_id ile tekrar dener. Doğrulama hatası gibi kalıcı sorunlarda sonsuz tekrar yerine “manuel inceleme” durumuna geçer.
| Durum | Anlam | Sonraki adım |
|---|---|---|
| received | Form doğrulandı ve kalıcı kaydedildi | CRM kuyruğuna al |
| syncing | Aktarım işleniyor | Aynı işi paralel ikinci worker çalıştırmasın |
| synced | CRM ID alındı | Satış ataması/görevini doğrula |
| retryable_error | Zaman aşımı veya geçici servis sorunu | Artan bekleme ile tekrar dene |
| needs_review | Alan eşleşmesi veya kalıcı doğrulama sorunu | İnsan incelemesi |
| spam/rejected | Güvenlik veya iş kuralı nedeniyle reddedildi | Satış kuyruğuna göndermeden logla |
Tekrar denemelerde yeni CRM kişisi veya fırsatı üretmemek için dış talep kimliğini CRM’de mümkünse benzersiz dış anahtar olarak kullanın. CRM bu özelliği sunmuyorsa entegrasyon kendi eşleme tablosunda request_id → crm_record_id ilişkisini saklamalıdır. Sistem, CRM’den zaman aşımı aldı diye ilk çağrının başarısız olduğunu varsaymamalıdır; çağrı karşı tarafta tamamlanmış olabilir.
Kurgusal Akhisar ambalaj üreticisinde formdan teklife örnek akış
Akhisar’da gıda üreticilerine özel ambalaj yapan kurgusal “Ege Paket” işletmesini düşünelim. Web formundan Manisa’daki bir zeytin ürünleri firması 20 bin adet baskılı kutu için talep gönderiyor. Bu şirket, müşteri veya rakam gerçek bir Akhisar Dijital projesi değildir; yalnız süreci somutlaştırmak için kullanılır.
- 1. Ziyaretçi şirket adı, iletişim, kutu tipi, yaklaşık adet, teslim bölgesi ve teknik PDF ile formu gönderir.
- 2. Sunucu alanları ve Turnstile gibi kullanılıyorsa anti-bot tokenını doğrular; talebe UUID ve kullanıcıya gösterilecek kısa referans verir.
- 3. Dosya güvenli depoya alınır; CRM kaydında doğrudan herkese açık dosya URL’si yerine kontrollü referans tutulur.
- 4. Şirket adı ve iletişim kanalları normalize edilir; aynı şirketin mevcut CRM hesabı varsa yeni fırsat ona bağlanır.
- 5. Ürün tipi “özel baskılı kutu” olduğu için teknik satış kuyruğuna atanır; ilk inceleme görevi açılır.
- 6. Satış temsilcisi ihtiyacı doğrular. Form göndermek otomatik olarak “nitelikli fırsat” sayılmaz.
- 7. Teklif oluşturulduğunda teklif numarası fırsata bağlanır; revizyonlar eski teklifin üzerine yazılmaz.
- 8. Kazanıldı/kaybedildi sonucu ve gerçek sipariş tutarı ayrı kaydedilir; kampanya kaynağı varsa form sayısıyla değil bu sonuçlarla karşılaştırılır.
Satış ekibine hangi bildirimler gönderilmeli?
Her yeni form için herkese e-posta atmak kısa sürede bildirim yorgunluğu oluşturabilir. CRM içinde sahip ataması ve görev, ana çalışma yüzeyi olmalıdır. Kritik veya zaman hassas taleplerde e-posta/Slack benzeri ek bildirim kullanılabilir; fakat bildirim başarısız olduğunda CRM kaydı kaybolmamalıdır. Bir talebin atamasız kalması, belirlenen sürede ilk işlem görmemesi veya tekrar denemelerin tükenmesi asıl alarm konularıdır.
| Olay | CRM görevi | Ek bildirim |
|---|---|---|
| Yeni doğrulanmış talep | Sorumluya ilk inceleme | Yüksek öncelikte opsiyonel |
| Atamasız talep | İnceleme kuyruğu | Yönetici uyarısı |
| Belirlenen sürede işlem yok | Gecikme görevi | Sorumlu + gerekirse yönetici |
| CRM senkronizasyonu sürekli hata | Teknik inceleme kaydı | Teknik sorumlu |
| Teklif revizyonu bekliyor | Satış takip görevi | Takvime göre |
| Kazanıldı/kaybedildi | Durumu kapat ve neden kaydet | Genellikle anlık bildirim gerekmez |
Formun hangi kaynaktan geldiği nasıl korunmalı?
UTM parametreleri, yönlendiren sayfa, formun bulunduğu hizmet sayfası ve varsa reklam tıklama tanımlayıcıları ilk talep kaydında saklanabilir. Kaynak hiç gelmediyse “organik” diye tahmin etmek yerine “bilinmiyor/doğrudan” gibi açık bir durum kullanın. Daha sonra CRM’de nitelikli talep, teklif ve satış olaylarını aynı fırsata bağlayarak hangi kanalın gerçek satış sürecine katkı verdiğini ölçebilirsiniz. Bu yaklaşım, yalnızca Google Ads panelinde görülen form sayısından farklıdır.
Formdan CRM’ye veri aktarırken hangi güvenlik sınırları korunmalı?
Web formu internetten gelen güvenilmeyen girdidir; CRM ise satış ekibinin günlük kullandığı iç sistemdir. Bu iki alan arasında doğrulama ve yetki katmanı olmalıdır. API anahtarlarını tarayıcı koduna koymayın, CRM gizli anahtarlarını sunucu ortamında tutun, CRM’den yalnız entegrasyon için gereken izinleri isteyin ve loglara gereksiz kişisel veri veya yüklenen belge içeriği yazmayın. Dosya indirme bağlantıları süreli veya yetkili olmalı; herkesçe tahmin edilebilir URL’lerle teknik çizim paylaşılmamalıdır.
İlk 30 günde form → CRM otomasyonu nasıl devreye alınır?
- 1–3. gün: Mevcut formları, satış ekibinin gerçekten kullandığı CRM alanlarını ve teklif adımlarını çıkarın.
- 4–7. gün: Talep, kişi, şirket ve fırsat kavramlarını ayırın; request_id ve kaynak alanlarını belirleyin.
- 8–11. gün: Sunucu doğrulaması, anti-bot kontrolü, dosya politikası ve kalıcı giriş kaydını kurun.
- 12–15. gün: CRM alan eşlemesi, dış kimlik ve tekrar kontrolünü test verileriyle uygulayın.
- 16–19. gün: Ürün/bölge ataması, sahipsiz talep kuyruğu ve satış görevlerini ekleyin.
- 20–23. gün: CRM kesintisi, zaman aşımı, aynı formun iki kez gönderilmesi ve kısmi hataları zorlayarak test edin.
- 24–26. gün: Kaynak/UTM ve teklif sonuçlarını rapora bağlayın; form sayısı ile nitelikli talebi ayırın.
- 27–30. gün: Küçük bir trafik yüzdesi veya tek formda canlı pilot yapın; kayıp ve çift kayıt olmadığını doğruladıktan sonra diğer formlara genişletin.
Canlıya almadan önce 12 maddelik kontrol listesi
| Kontrol | Beklenen durum |
|---|---|
| Sunucu doğrulaması | Tüm kritik alanlar backend’de tekrar doğrulanıyor |
| Bot koruması | Kullanılıyorsa token sunucu tarafında doğrulanıyor |
| Talep ID | Her gönderimde benzersiz, tekrar denemede aynı kalabilen kimlik var |
| Kalıcı kayıt | CRM kapalı olsa bile doğrulanmış talep kaybolmuyor |
| Tekrar kontrolü | Çift tıklama yeni fırsat üretmiyor; gerçek yeni ihtiyaç silinmiyor |
| Şirket/kişi ayrımı | Bir şirketin birden fazla yetkilisi destekleniyor |
| Alan eşleme | Form ve CRM alanları sürümlenmiş eşleme üzerinden gidiyor |
| CRM yetkisi | API anahtarı minimum gerekli yetkiye sahip ve istemcide görünmüyor |
| Dosya güvenliği | Teknik dosyalar kontrollü erişimli depoda |
| Atama | Kurala uymayan talep sahipsiz kalmıyor; inceleme kuyruğuna düşüyor |
| Hata kuyruğu | Geçici ve kalıcı hatalar ayrılıyor; manuel inceleme yolu var |
| Ölçüm | Form, nitelikli talep, teklif ve satış ayrı metrikler |
Sık sorulan sorular
Web formunu doğrudan CRM API’sine tarayıcıdan göndermek doğru mu?
Genellikle hayır. CRM gizli anahtarlarını istemciye çıkarmamak ve doğrulama, spam kontrolü, tekrar kontrolü ile hata kuyruğunu merkezi yönetmek için form verisini önce sunucu katmanına gönderin.
CRM çalışmıyorsa form tamamen hata mı vermeli?
Doğrulanmış talebi kendi kalıcı veritabanınıza veya dayanıklı kuyruğunuza kaydedebiliyorsanız kullanıcı kaydını koruyup CRM aktarımını tekrar deneyebilirsiniz. Henüz kalıcı kayıt yoksa başarı mesajı göstermeyin.
Aynı e-posta adresinden gelen ikinci formu silmeli miyim?
Hayır. Aynı kişi yeni bir ürün veya yeni satın alma döngüsü için tekrar başvurabilir. Kişi/şirket kimliğini fırsattan ayırın; yalnız gerçekten aynı gönderimin tekrarı olan kayıtları idempotency veya kısa zamanlı tekrar kontrolüyle birleştirin.
Formdan gelen her kayıt nitelikli müşteri sayılır mı?
Hayır. Form gönderimi yeni talep aşamasıdır. İhtiyaç, bölge, bütçe veya üretilebilirlik gibi işletmenizin kriterleri doğrulandıktan sonra nitelikli fırsata dönüştürülmelidir.
Turnstile gibi bot koruması eklemek yeterli mi?
Yalnız istemci tarafında widget göstermek yeterli değildir. Cloudflare dokümantasyonuna göre Turnstile tokenı sunucuda Siteverify API ile doğrulanmalıdır. Formun kendi alan ve iş kuralı kontrolleri de ayrıca yapılmalıdır.
Formdan CRM’ye hangi pazarlama bilgileri aktarılmalı?
İhtiyaca göre UTM parametreleri, formun geldiği sayfa, yönlendiren kaynak ve varsa uygun reklam tıklama tanımlayıcısı saklanabilir. Kaynak verisi yoksa tahmin etmek yerine açıkça bilinmiyor/doğrudan olarak kaydedin.
Projenizi Anlatın 