Yazılara Dön

2 dk okuma · 24 Ocak 2026

WhatsApp Webhook Gelmiyor: Terminalden Çözdüm

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:

  1. business.facebook.com/settings adresinden “System Users” (Sistem Kullanıcıları) kısmına girip “Admin” rolünde yeni bir kullanıcı oluşturdum.
  2. Oluşturduğum kullanıcının “Add Assets” bölümünden projeye ait WhatsApp uygulamasını seçip “Full Control” verdim.
  3. “Generate New Token” derken süreyi Never (Asla) olarak ayarladım.
  4. İzinler listesinde whatsapp_business_management ve whatsapp_business_messaging yetkilerini 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.

Bu yazıyı paylaş
TwitterLinkedInFacebook
A

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.