Typeform-connector
Connectorstatus: Gepland Nog niet gebouwd. Tajo draait deze connector vandaag niet.
Illustratie · voorbeelddata
Voorbeeld van synchronisatie
Bron
Typeform
Connectorstatus: Gepland
Bestemming
Je andere tool
Connectorstatus: Eigen tool
Veldtoewijzing
| Bronveld | Doelveld | Voorbeeldwaarde |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Opstellen
- Eén record controleren
- Deze versie goedkeuren
Statussen gelden per connector en garanderen niet dat deze synchronisatie klaar is. De velden zijn illustratief. Controleer het echte schema en de rechten voordat een synchronisatie draait.
Verbind Typeform met Brevo via Tajo om formulier-responses automatisch te synchroniseren, leads vast te leggen vanuit conversationele formulieren en marketingautomatiseringen te triggeren op basis van survey-inzendingen en quizresultaten.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Typeform |
| Categorie | Forms & Surveys (Custom) |
| Setupcomplexiteit | Eenvoudig |
| Officiële integratie | Nee |
| Gesynchroniseerde data | Responses, Contacten, Events, Forms |
| Auth-methode | OAuth 2.0 / Personal Access Token |
Functies
- Realtime response-synchronisatie - Vang formulierinzendingen automatisch op via webhooks
- Contact-aanmaak - Maak Brevo-contacten aan of update ze op basis van formulier-responses
- Lead scoring - Gebruik quizscores en formulierdata voor leadkwalificatie
- Hidden Fields - Geef klantdata door via Hidden Fields voor gepersonaliseerde formulieren
- Voorwaardelijke mapping - Map verschillende formuliervelden op basis van response-logica
- Multi-formulierondersteuning - Verbind meerdere typeforms aan verschillende Brevo-lijsten
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Typeform-account (Basic-plan of hoger voor webhooks)
- Een Personal Access Token uit Typeform Account Settings
- Een Brevo-account met API-toegang
- Een Tajo-account met connector-rechten
Authenticatie
Personal Access Token
# Generate a token at https://admin.typeform.com/account#/section/tokensexport TYPEFORM_ACCESS_TOKEN=tfp_your_personal_access_tokenexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_keyOAuth 2.0
// OAuth 2.0 Authorization Flowconst 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 tokenconst 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' })});Configuratie
Basisinstelling
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}"Veldmapping
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_FEEDBACKAPI-endpoints
| Endpoint | Method | Beschrijving |
|---|---|---|
https://api.typeform.com/forms | GET | Alle forms opvragen |
https://api.typeform.com/forms/{form_id} | GET | Een form ophalen |
https://api.typeform.com/forms | POST | Een form aanmaken |
https://api.typeform.com/forms/{form_id} | PUT | Een form bijwerken |
https://api.typeform.com/forms/{form_id}/responses | GET | Responses ophalen |
https://api.typeform.com/forms/{form_id}/responses | DELETE | Responses verwijderen |
https://api.typeform.com/forms/{form_id}/webhooks/{tag} | PUT | Webhook aanmaken/bijwerken |
https://api.typeform.com/forms/{form_id}/webhooks/{tag} | GET | Webhook ophalen |
https://api.typeform.com/forms/{form_id}/webhooks | GET | Webhooks opvragen |
Codevoorbeelden
Connector initialiseren
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']});Formulier-responses ophalen
// Fetch responses using the Responses APIconst 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 Brevofor (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] }); }}Webhooks instellen
// Register a webhook for real-time response notificationsawait 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.example.com/webhooks/typeform', enabled: true, secret: process.env.TYPEFORM_WEBHOOK_SECRET }) });Caution
Het example.com-adres hierboven is een placeholder totdat het Tajo-endpoint beschikbaar is.
Webhook-events afhandelen
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');});Rate limits
| Endpoint | Rate Limit | Opmerkingen |
|---|---|---|
| Create API | 2 requests/sec | Aanmaken en bijwerken van forms |
| Responses API | 2 requests/sec | Ophalen van responses |
| Webhooks API | 2 requests/sec | Webhookbeheer |
| Alle endpoints | 120 requests/min | Globale rate limit |
Response-paginering
De Responses API retourneert maximaal 1.000 responses per request. Gebruik de before- of after-cursorparameters voor paginering bij grotere response-sets.
Probleemoplossing
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Webhook niet ontvangen | Webhook uitgeschakeld | Schakel webhook in via Typeform-dashboard |
| Ontbrekende responses | Filter toegepast | Controleer since/until en completed-parameters |
| Auth-fout 401 | Token verlopen | Genereer nieuw Personal Access Token |
| Rate limit 429 | Te veel requests | Implementeer request-throttling |
| Lege antwoorden | Optionele velden | Behandel null/undefined-antwoordwaarden |
Debugmodus
connectors: typeform: debug: true log_level: verbose log_webhooks: true log_responses: trueBest practices
- Gebruik webhooks - Geef voorkeur aan webhooks boven polling voor realtime response-capture
- Valideer signatures - Verifieer altijd webhook-signatures voor de veiligheid
- Gebruik Hidden Fields - Vul bekende klantdata vooraf in formulieren in
- Map veldreferenties - Gebruik stabiele veld-
ref-waarden in plaats van veld-ID’s - Behandel partiële responses - Houd rekening met optionele en overgeslagen vragen
- Stel retry-logica in - Implementeer idempotente webhook-verwerking
Beveiliging
- OAuth 2.0 - Gescoopte token-gebaseerde authenticatie
- Webhook-signatures - SHA-256 HMAC-signatureverificatie
- Alleen HTTPS - Alle API-endpoints vereisen TLS
- Token-scoping - Vraag minimaal vereiste OAuth-scopes aan
- Secret-beheer - Sla tokens op in environment variables of secret managers
- GDPR-compliance - Gebruik de Delete Responses API voor verwijderingsverzoeken