Typeform konnektor

Csatlakoztasd a Typeformet a Brevóhoz a Tajo segítségével, hogy automatikusan szinkronizáld az űrlapválaszokat, érdeklődőket rögzíts társalgási űrlapokból, és marketingautomatizálásokat indíts felmérés-beküldések és kvíz-eredmények alapján.

Áttekintés

TulajdonságÉrték
PlatformTypeform
KategóriaŰrlapok és felmérések (Egyéni)
Telepítés bonyolultságaKönnyű
Hivatalos integrációNem
Szinkronizált adatokVálaszok, Kapcsolatok, Események, Űrlapok
Hitelesítési módszerOAuth 2.0 / Személyes hozzáférési token

Funkciók

  • Valós idejű válasz-szinkronizáció – Automatikusan rögzíti az űrlapbeküldéseket webhookokon keresztül
  • Kapcsolat létrehozás – Brevo kapcsolatok létrehozása vagy frissítése az űrlapválaszokból
  • Érdeklődő-pontozás – Kvíz pontszámok és űrlapadatok használata az érdeklődők minősítéséhez
  • Rejtett mezők – Ügyféladatok átadása rejtett mezőkön keresztül személyre szabott űrlapokhoz
  • Feltételes leképezés – Különböző mezők leképezése a válasz logikája alapján
  • Több-űrlap támogatás – Több typeform csatlakoztatása különböző Brevo listákhoz

Előfeltételek

Mielőtt elkezdenéd, győződj meg róla, hogy rendelkezel:

  1. Egy Typeform fiókkal (Basic vagy magasabb csomag webhookokhoz)
  2. Egy személyes hozzáférési tokennel a Typeform Fiókbeállításokból
  3. Egy Brevo fiókkal API-hozzáféréssel
  4. Egy Tajo fiókkal konnektor engedélyekkel

Hitelesítés

Személyes hozzáférési token

Terminal window
# Generate a token at https://admin.typeform.com/account#/section/tokens
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 Authorization Flow
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()
});
// Exchange authorization code for access token
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'
})
});

Konfiguráció

Alapbeállítás

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}"

Mezőleképezés

field_mapping:
# Map Typeform field references to Brevo attributes
email: email
name: FIRSTNAME
company: COMPANY
phone: SMS
score: LEAD_SCORE
quiz_result: QUIZ_SCORE
nps_rating: NPS_SCORE
feedback: LAST_FEEDBACK

API végpontok

VégpontMódszerLeírás
https://api.typeform.com/formsGETÖsszes űrlap listázása
https://api.typeform.com/forms/{form_id}GETEgy űrlap lekérése
https://api.typeform.com/formsPOSTŰrlap létrehozása
https://api.typeform.com/forms/{form_id}PUTŰrlap frissítése
https://api.typeform.com/forms/{form_id}/responsesGETVálaszok lekérése
https://api.typeform.com/forms/{form_id}/responsesDELETEVálaszok törlése
https://api.typeform.com/forms/{form_id}/webhooks/{tag}PUTWebhook létrehozása/frissítése
https://api.typeform.com/forms/{form_id}/webhooks/{tag}GETWebhook lekérése
https://api.typeform.com/forms/{form_id}/webhooksGETWebhookok listázása

Kódpéldák

A konnektor inicializálása

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']
});

Űrlapválaszok lekérése

// Fetch responses using the Responses API
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();
// Sync each response to Brevo
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]
});
}
}

Webhookok beállítása

// Register a webhook for real-time response notifications
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 események kezelése

app.post('/webhooks/typeform', async (req, res) => {
// Verify webhook signature
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');
});

Ráta-korlátok

VégpontRáta-korlátMegjegyzések
Create API2 kérés/mpŰrlap létrehozás és frissítések
Responses API2 kérés/mpVálaszok lekérése
Webhooks API2 kérés/mpWebhook kezelés
Összes végpont120 kérés/percGlobális ráta-korlát

Válasz-oldalazás

A Responses API kérésenként legfeljebb 1 000 választ ad vissza. Nagy válaszkészletek lekérésekor használd a before vagy after kurzor paramétereket az oldalazáshoz.

Hibaelhárítás

ProblémaOkMegoldás
Webhook nem érkezikWebhook letiltvaEngedélyezd a webhookot a Typeform dashboardon
Hiányzó válaszokSzűrő alkalmazvaEllenőrizd a since/until és completed paramétereket
Auth hiba 401Token lejártGenerálj új személyes hozzáférési tokent
Ráta-korlát 429Túl sok kérésImplementálj kérés-korlátozást
Üres válaszokOpcionális mezőkKezelj null/undefined válasz értékeket

Hibakeresési mód

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

Legjobb gyakorlatok

  1. Használj webhookokat – A webhookokat részesítsd előnyben a lekérdezéssel szemben a valós idejű válasz-rögzítéshez
  2. Validáld az aláírásokat – Mindig ellenőrizd a webhook aláírásokat a biztonságért
  3. Használj rejtett mezőket – Töltsd előre az ismert ügyféladatokat az űrlapokban
  4. Képezd le a mező hivatkozásokat – Használj stabil mező ref értékeket a mező azonosítók helyett
  5. Kezelj részleges válaszokat – Vedd figyelembe az opcionális és kihagyott kérdéseket
  6. Állíts be újrapróbálkozási logikát – Implementálj idempotens webhook-feldolgozást

Biztonság

  • OAuth 2.0 – Hatókörrel korlátozott token alapú hitelesítés
  • Webhook aláírások – SHA-256 HMAC aláírás-ellenőrzés
  • Csak HTTPS – Minden API végpont TLS-t igényel
  • Token hatókörök – Kérj minimálisan szükséges OAuth hatóköröket
  • Titokkezelés – Tárold a tokeneket környezeti változókban vagy titkos kezelőkben
  • GDPR megfelelőség – Használd a Delete Responses API-t az adattörlési kérelmekhez

Kapcsolódó források

Subscribe to updates

developer-docs

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

auto-detect
AI asszisztens

Szia! Kérdezz bármit a dokumentációról.