2 dk okuma · 24 Ocak 2026
WhatsApp Webhook Gelmiyor: Terminalden Çözdüm

WhatsApp Business API entegrasyonu yaparken saatlerimi çalan en sinir bozucu sorunlardan biriyle cebelleştim: Webhook kurulumu tamam, test butonu çalışıyor ama gerçek WhatsApp mesajları sunucuya bir türlü düşmüyor. Meta Developer Console arayüzüne güvenmenin bedelini zamanımla ödedikten sonra, işi manuel olarak API üzerinden nasıl çözdüğümü bir daha unutmamak için buraya not alıyorum.
Sorunun Kaynağı: Arayüzdeki Kopukluk
Sunucu ayakta, Meta panelindeki “Test” butonundan gelen sahte veriler sunucuya ulaşıyor ama gerçek mesajlarda log’larda yaprak kımıldamıyordu. Sorunun temel kaynağının Abonelik (Subscription) kopukluğu olduğunu fark ettim. Arayüzdeki “Subscribe” butonuna basmama rağmen işlem sadece uygulama seviyesinde kalıyor, arka planda WhatsApp Business Hesabı (WABA) ile uygulama arasındaki bağlantı bir türlü kurulamıyordu.
Benim Çözümüm: cURL ile Manuel Abonelik (Force Subscribe)
Arayüzdeki butonlar işe yaramayınca, Meta Graph API’yi kullanarak bu “el sıkışmayı” terminalden manuel olarak zorunlu kıldım. İhtiyacım olanlar sadece WABA ID ve tam yetkili bir Access Token‘dı.
Terminalde şu komutu kendi bilgilerimle çalıştırarak bağlantıyı zorla kurdum:
curl -X POST "https://graph.facebook.com/v22.0/{WABA_ID}/subscribed_apps" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"subscribed_fields": ["messages", "message_template_status_update", "messages_preview"]
}'
Karşılığında {"success": true} yanıtını aldığım an, webhook nihayet gerçek mesajlarla tetiklenmeye başladı.
Sağlama Yapmak İçin: Aboneliğin gerçekten kurulup kurulmadığını görmek için öncesinde ve sonrasında şu GET isteğini atarak listeyi kontrol ettim:
curl -X GET "https://graph.facebook.com/v22.0/{WABA_ID}/subscribed_apps" \
-H "Authorization: Bearer {ACCESS_TOKEN}"
Özetle: Meta arayüzüne güvenmiyorum. Her şey doğru görünmesine rağmen veri akmıyorsa, terminalden subscribed_apps endpoint’ine istek atmak hayat kurtarıyor.
Production İçin Ek Not: Kalıcı Token (System User) Ayarlarım
Projeyi canlıya (production) alırken 24 saatlik geçici token’larla uğraşmamak için süresi asla dolmayan bir token üretmem gerekiyordu. İleride tekrar aramayayım diye Business Settings üzerindeki adımlarımı da özetliyorum:
- business.facebook.com/settings adresinden “System Users” (Sistem Kullanıcıları) kısmına girip “Admin” rolünde yeni bir kullanıcı oluşturdum.
- Oluşturduğum kullanıcının “Add Assets” bölümünden projeye ait WhatsApp uygulamasını seçip “Full Control” verdim.
- “Generate New Token” derken süreyi Never (Asla) olarak ayarladım.
- İzinler listesinde
whatsapp_business_managementvewhatsapp_business_messagingyetkilerini seçip token’ı ürettim.
Meta bu kalıcı token’ı ekranda sadece bir kez gösterdiği için hemen kopyalayıp sunucudaki .env dosyama (TOKEN=EAARLL…) yapıştırdım. Artık token süresi doldu krizleriyle uğraşmak yok.
Ali Onur Özdemir
Yazılım Mühendisi
Gündüzleri yazılım, geceleri karavan inşası. 3D baskı, sunucu yönetimi, tiny house ve kendi zihnine dair notlar.