Typeform Bağlayıcısı

Form gönderimlerini otomatik olarak senkronize etmek, konuşma tabanlı formlardan müşteri adayı yakalamak ve anket gönderimleri ile test sonuçlarına göre pazarlama otomasyonları tetiklemek için Typeform’u Tajo aracılığıyla Brevo’ya bağlayın.

Genel Bakış

ÖzellikDeğer
PlatformTypeform
KategoriFormlar ve Anketler (Özel)
Kurulum KarmaşıklığıKolay
Resmi EntegrasyonHayır
Senkronize Edilen VeriYanıtlar, Kişiler, Olaylar, Formlar
Kimlik Doğrulama YöntemiOAuth 2.0 / Kişisel Erişim Belirteci

Özellikler

  • Gerçek zamanlı yanıt senkronizasyonu - Form gönderimlerini webhook’lar aracılığıyla otomatik olarak yakalayın
  • Kişi oluşturma - Form yanıtlarından Brevo kişileri oluşturun veya güncelleyin
  • Müşteri adayı puanlaması - Müşteri adayı niteliği için test puanlarını ve form verilerini kullanın
  • Gizli Alanlar - Kişiselleştirilmiş formlar için Gizli Alanlar aracılığıyla müşteri verilerini iletin
  • Koşullu eşleştirme - Yanıt mantığına göre farklı form alanlarını eşleyin
  • Çoklu form desteği - Birden fazla typeform’u farklı Brevo listelerine bağlayın

Ön Koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  1. Bir Typeform hesabı (webhook’lar için Basic plan veya üzeri)
  2. Typeform Hesap Ayarlarından bir Kişisel Erişim Belirteci
  3. API erişimi olan bir Brevo hesabı
  4. Bağlayıcı izinlerine sahip bir Tajo hesabı

Kimlik Doğrulama

Kişisel Erişim Belirteci

Terminal window
# https://admin.typeform.com/account#/section/tokens adresinde bir belirteç oluşturun
export TYPEFORM_ACCESS_TOKEN=tfp_your_personal_access_token
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key

OAuth 2.0

// OAuth 2.0 Yetkilendirme Akışı
const authUrl = 'https://api.typeform.com/oauth/authorize?' +
new URLSearchParams({
client_id: process.env.TYPEFORM_CLIENT_ID,
redirect_uri: 'https://your-app.com/callback',
scope: 'forms:read responses:read webhooks:write accounts:read',
state: generateState()
});
// Yetkilendirme kodunu erişim belirtecine dönüştür
const tokenResponse = await fetch('https://api.typeform.com/oauth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'authorization_code',
code: authorizationCode,
client_id: process.env.TYPEFORM_CLIENT_ID,
client_secret: process.env.TYPEFORM_CLIENT_SECRET,
redirect_uri: 'https://your-app.com/callback'
})
});

Yapılandırma

Temel Kurulum

connectors:
typeform:
enabled: true
access_token: "${TYPEFORM_ACCESS_TOKEN}"
forms:
- form_id: "abc123"
list_id: 5
mapping:
email_field: "email"
name_field: "full_name"
- form_id: "xyz789"
list_id: 6
mapping:
email_field: "work_email"
sync:
responses: true
contacts: true
events: true
webhook:
enabled: true
secret: "${TYPEFORM_WEBHOOK_SECRET}"

Alan Eşleştirme

field_mapping:
# Typeform alan referanslarını Brevo özniteliklerine eşle
email: email
name: FIRSTNAME
company: COMPANY
phone: SMS
score: LEAD_SCORE
quiz_result: QUIZ_SCORE
nps_rating: NPS_SCORE
feedback: LAST_FEEDBACK

API Uç Noktaları

Uç NoktaYöntemAçıklama
https://api.typeform.com/formsGETTüm formları listele
https://api.typeform.com/forms/{form_id}GETBir formu al
https://api.typeform.com/formsPOSTForm oluştur
https://api.typeform.com/forms/{form_id}PUTFormu güncelle
https://api.typeform.com/forms/{form_id}/responsesGETYanıtları al
https://api.typeform.com/forms/{form_id}/responsesDELETEYanıtları sil
https://api.typeform.com/forms/{form_id}/webhooks/{tag}PUTWebhook oluştur/güncelle
https://api.typeform.com/forms/{form_id}/webhooks/{tag}GETWebhook al
https://api.typeform.com/forms/{form_id}/webhooksGETWebhook’ları listele

Kod Örnekleri

Bağlayıcıyı Başlatma

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('typeform', {
accessToken: process.env.TYPEFORM_ACCESS_TOKEN,
forms: ['abc123', 'xyz789']
});

Form Yanıtlarını Alma

// Responses API'si kullanarak yanıtları getir
const response = await fetch(
'https://api.typeform.com/forms/abc123/responses?' +
new URLSearchParams({
page_size: 25,
since: '2024-01-01T00:00:00Z',
completed: 'true'
}),
{
headers: {
'Authorization': `Bearer ${process.env.TYPEFORM_ACCESS_TOKEN}`
}
}
);
const data = await response.json();
// Her yanıtı Brevo'ya senkronize et
for (const item of data.items) {
const answers = item.answers;
const email = answers.find(a => a.field.ref === 'email')?.email;
if (email) {
await tajo.contacts.sync({
email,
attributes: {
FIRSTNAME: answers.find(a => a.field.ref === 'name')?.text,
LEAD_SCORE: item.calculated?.score || 0
},
listIds: [5]
});
}
}

Webhook’ları Ayarlama

// Gerçek zamanlı yanıt bildirimleri için webhook kaydet
await fetch(
'https://api.typeform.com/forms/abc123/webhooks/tajo-sync',
{
method: 'PUT',
headers: {
'Authorization': `Bearer ${process.env.TYPEFORM_ACCESS_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://api.tajo.io/webhooks/typeform',
enabled: true,
secret: process.env.TYPEFORM_WEBHOOK_SECRET
})
}
);

Webhook Olaylarını İşleme

app.post('/webhooks/typeform', async (req, res) => {
// Webhook imzasını doğrula
const signature = req.headers['typeform-signature'];
const isValid = verifyTypeformSignature(
req.rawBody, signature, process.env.TYPEFORM_WEBHOOK_SECRET
);
if (!isValid) return res.status(401).send('Unauthorized');
const { form_response } = req.body;
await tajo.connectors.handleWebhook('typeform', {
topic: 'form_response',
payload: form_response
});
res.status(200).send('OK');
});

Hız Sınırları

Uç NoktaHız SınırıNotlar
Create APIsaniyede 2 istekForm oluşturma ve güncelleme
Responses APIsaniyede 2 istekYanıt alma
Webhooks APIsaniyede 2 istekWebhook yönetimi
Tüm uç noktalardakikada 120 istekGenel hız sınırı

Yanıt Sayfalama

Responses API, istek başına en fazla 1.000 yanıt döndürür. Büyük yanıt kümelerini alırken sayfalama için before veya after imleç parametrelerini kullanın.

Sorun Giderme

SorunNedenÇözüm
Webhook alınmıyorWebhook devre dışıTypeform panelinde webhook’u etkinleştirin
Eksik yanıtlarFiltre uygulandısince/until ve completed parametrelerini kontrol edin
Kimlik doğrulama hatası 401Belirteç süresi dolmuşYeni Kişisel Erişim Belirteci oluşturun
Hız sınırı 429Çok fazla istekİstek kısıtlaması uygulayın
Boş cevaplarİsteğe bağlı alanlarNull/undefined cevap değerlerini işleyin

Hata Ayıklama Modu

connectors:
typeform:
debug: true
log_level: verbose
log_webhooks: true
log_responses: true

En İyi Uygulamalar

  1. Webhook kullanın - Gerçek zamanlı yanıt yakalama için yoklama yerine webhook’ları tercih edin
  2. İmzaları doğrulayın - Güvenlik için webhook imzalarını her zaman doğrulayın
  3. Gizli Alanları kullanın - Formlarda bilinen müşteri verilerini önceden doldurun
  4. Alan referanslarını eşleyin - Alan kimlikleri yerine kararlı alan ref değerlerini kullanın
  5. Kısmi yanıtları işleyin - İsteğe bağlı ve atlanmış soruları göz önünde bulundurun
  6. Yeniden deneme mantığı ayarlayın - İdempotent webhook işleme uygulayın

Güvenlik

  • OAuth 2.0 - Kapsamlı belirteç tabanlı kimlik doğrulama
  • Webhook imzaları - SHA-256 HMAC imza doğrulama
  • Yalnızca HTTPS - Tüm API uç noktaları TLS gerektirir
  • Belirteç kapsamlama - Minimum gerekli OAuth kapsamlarını talep edin
  • Gizli anahtar yönetimi - Belirteçleri ortam değişkenlerinde veya gizli anahtar yöneticilerinde saklayın
  • GDPR uyumluluğu - Veri silme istekleri için Delete Responses API’sini kullanın

İlgili Kaynaklar

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI Asistan

Merhaba! Belgeler hakkında her şeyi sorabilirsiniz.