Bu rehberde: Calendly hesabınızı bir kişisel erişim anahtarıyla (personal access token) bağlarsınız. Biri sizinle toplantı ayarladığında veya iptal ettiğinde iş akışınız başlar. Calendly kutusu, sohbet botunun ya da e-postanın müşteriye gönderebileceği tek kullanımlık randevu bağlantısı üretir.
⏱ 10 dakika
Kimlik kartı
| Alan | Değer |
|---|---|
| Sağlayıcı anahtarı | CALENDLY |
| Kategori | Randevu |
| Kimlik doğrulama | Kişisel erişim anahtarı (Authorization: Bearer …) |
| Kapsam | Proje bazlı |
| Webhook | Evet – bağlarken otomatik kurulur (kullanıcı kapsamı), imzalıdır (Calendly-Webhook-Signature); Standard veya üstü ücretli plan gerekir |
| Kutu | Calendly (app.calendly) |
| Tetikleyiciler | Entegrasyon olayı → CALENDLY · New booking, CALENDLY · Booking canceled |
Ne işe yarar?
Tetikleyiciler:
- New booking (
invitee.created) – biri randevu aldığında. Yeniden planlanan bir toplantının yeni saati de bu olayla gelir (rescheduled,oldInvitee). - Booking canceled (
invitee.canceled) – davetli veya siz iptal ettiğinizde. Yeniden planlamada eski saat bu olayla,rescheduled: trueolarak gelir.
İlk öğenin alanları:
| Alan | Açıklama |
|---|---|
bookingId | Davetli kaydının Calendly adresi (aynı olay iki kez gelirse ikincisi atlanır) |
name, firstName, lastName, email | Davetli |
phone | SMS hatırlatma numarası, "Telefon" türünde soru ya da telefonla görüşmede aranacak numara |
eventName, eventType, eventId | Toplantı türünün adı ve Calendly adresleri |
startTime, endTime, timezone | Başlangıç / bitiş (ISO, UTC) ve davetlinin saat dilimi |
location | Zoom / Meet bağlantısı, adres veya konum türü |
answers | Rezervasyon formundaki sorular: { "Soru": "Cevap" } |
rescheduleUrl, cancelUrl | Davetliye gönderebileceğiniz yeniden planlama ve iptal bağlantıları |
cancelReason, canceledBy, cancelerType | İptal nedeni, iptal eden ve türü (invitee / host) |
hostName, hostEmail | Toplantı sahibi |
utm | Randevu bağlantısındaki UTM parametreleri |
Calendly kutusunun işlemleri:
| İşlem | Ne yapar | Etki |
|---|---|---|
| List event types | Toplantı türlerinizi (adres, ad, kısa ad, süre, randevu sayfası) listeler. | Okuma |
| Create single-use booking link | Seçtiğiniz toplantı türü için yalnızca bir kez kullanılabilen bir randevu bağlantısı (bookingUrl) üretir. Toplantı türünü adresi, kimliği, kısa adı (ör. 30min) veya tam adıyla verebilirsiniz. | Değişiklik |
Editördeki test çalıştırmalarında bağlantı üretme çalıştırılmaz; okuma işlemi çalışır.
Ön koşullar
- Webhook'lar (tetikleyiciler) için Standard, Teams veya Enterprise Calendly planı. Ücretsiz planda bağlantı kurulur ve kutu çalışır, ancak tetikleyiciler kurulamaz.
- Toplantı türleri tanımlı bir Calendly kullanıcısı.
Adım adım kurulum
A) Calendly'de kişisel erişim anahtarı
- Calendly → Integrations & apps → API and webhooks.
- Personal access tokens → Generate new token → ad:
OrqLabs. - İzin seçimi istenirse şunları işaretleyin:
users:read,event_types:read,scheduling_links:write,scheduled_events:read,webhooks:read,webhooks:write. - Anahtarı kopyalayın; yalnızca bir kez gösterilir.
B) OrqLabs'ta bağlama
- Entegrasyonlar → Calendly → Bağla → Proje seçin.
- Personal access token alanına anahtarı yapıştırın → Bağla.
OrqLabs kullanıcınızı okur ve kullanıcı kapsamında (yalnızca sizin toplantılarınız) bir webhook aboneliği oluşturur. Her teslimat OrqLabs'ın ürettiği imza anahtarıyla imzalanır; imzası tutmayan veya 24 saatten eski istekler reddedilir. Planınız webhook'a izin vermiyorsa entegrasyon kartında "webhooks need a paid Calendly plan" hatası görünür; planı yükselttikten sonra ayrıntı panelinde Şimdi senkronize et'e basın.
C) Tetikleyiciyi kurma
Entegrasyon olayı → Account: Calendly bağlantınız → Event: CALENDLY · New booking veya CALENDLY · Booking canceled. Tek bir toplantı türü için Payload filter: {{ $json.eventName === "30 Minute Discovery Call" }}.
Örnek iş akışları
1) Sohbet botu randevu bağlantısı gönderir
- Mesaj geldi (WhatsApp / Instagram).
- Sınıfla – niyet
randevumu? - Calendly → Create single-use booking link – Event type
30min. - Mesaj gönder –
Size özel randevu bağlantınız: {{ $json.bookingUrl }}.
2) Yeni randevu → aday + hazırlık notu
Entegrasyon olayı (CALENDLY · New booking) → Aday oluştur (e-posta {{ $json.email }}, ad {{ $json.name }}, telefon {{ $json.phone }}) → Metin üret ({{ $json.answers }} cevaplarına göre görüşme hazırlık notu) → Ekibe bildir ({{ $json.name }} – {{ $json.startTime }}).
3) İptalde geri kazanım e-postası
Entegrasyon olayı (CALENDLY · Booking canceled) → Eğer ({{ $json.cancelerType === "invitee" && !$json.rescheduled }}) → E-posta gönder (Yeni bir zaman seçmek ister misiniz? + randevu sayfanız).
Limitler
| Konu | Sınır |
|---|---|
| Webhook | Standard veya üstü plan; kullanıcı kapsamı (organizasyonun diğer üyelerinin toplantıları gelmez) |
| Tek kullanımlık bağlantı | Bir rezervasyondan sonra geçersiz olur; bağlantı süresi Calendly kurallarına tabidir |
| Etkinlik türleri | En fazla 500 tür okunur |
| Saatler | startTime / endTime UTC'dir; davetlinin saat dilimi timezone alanındadır |
Bağlantıyı test etme
Bağlantıyı test et adınızı, e-postanızı ve randevu sayfanızı gösterir.
Kimlik bilgilerini yenileme
Calendly'de yeni anahtar üretin → OrqLabs'ta Kimlik bilgileri → Güncelle → Kaydet → eski anahtarı Calendly'de silin. Webhook aboneliği anahtardan bağımsızdır. Bağlantıyı OrqLabs'ta silerseniz abonelik de silinir.
Sık karşılaşılan hatalar
| Hata | Olası neden | Çözüm |
|---|---|---|
CONFIG – "webhooks need a paid Calendly plan" | Ücretsiz plan | Planı yükseltin, Şimdi senkronize et |
AUTH – 401 "Unauthenticated" | Anahtar silindi veya yanlış | Yeni anahtar girin |
FORBIDDEN – 403 "Permission Denied" | Anahtarda gerekli izin yok | A adımındaki izinlerle yeni anahtar üretin |
NOT_FOUND – "no event type matches" | Toplantı türü adı / kısa adı yanlış | List event types ile doğru değeri alın |
| Olay gelmiyor | Webhook kurulamadı | Entegrasyon kartındaki hatayı okuyun, Şimdi senkronize et |
Sık sorulan sorular
Toplantıyı yeniden planlamak iki olay mı üretir?
Evet: eski saat için Booking canceled (rescheduled: true), yeni saat için New booking (oldInvitee dolu). Geri kazanım akışlarında rescheduled alanını kontrol edin.
Ekip (Teams) hesabımdaki herkesin randevuları gelir mi? Hayır; abonelik anahtarı oluşturan kullanıcının toplantılarını kapsar. Her ekip üyesi kendi anahtarıyla ayrı bir bağlantı ekleyebilir.