Ansök om tidig åtkomst

Ange ditt förnamn och din e-postadress på jobbet. Vi skickar en länk för att bekräfta din begäran om åtkomst till Tajo.

Typeform-koppling

Kopplingens status: Planerad Inte byggd än. Tajo kör inte den här kopplingen i dag.

Illustration · exempeldata

Exempel på synkronisering

Granska en post

Källa

Typeform

Kopplingens status: Planerad

Mål

Ditt andra verktyg

Kopplingens status: Eget verktyg

KällfältMålfältExempelvärde
record.id source_id record_1042
record.updated_at updated_at 2026-10-18T08:00:00Z
record.value value sample_value
  1. Utkast
  2. Granska en post
  3. Godkänn den här versionen

Status gäller varje enskild koppling och garanterar inte att den här synkroniseringen är klar. Fälten är illustrativa. Kontrollera det faktiska schemat och behörigheterna innan synkronisering körs.

Anslut Typeform till Brevo via Tajo för att automatiskt synka formulärsvar, fånga leads från konversationsformulär och utlösa marknadsautomationer baserat på enkätinlämningar och quizresultat.

Översikt

EgenskapVärde
PlattformTypeform
KategoriFormulär & enkäter (Anpassad)
InstallationskomplexitetEnkel
Officiell integrationNej
Data som synkasSvar, kontakter, händelser, formulär
AutentiseringsmetodOAuth 2.0 / Personal Access Token

Funktioner

  • Realtidssynkronisering av svar - Fånga formulärinlämningar automatiskt via webhooks
  • Kontaktskapande - Skapa eller uppdatera Brevo-kontakter från formulärsvar
  • Lead scoring - Använd quizpoäng och formulärdata för leadkvalificering
  • Hidden Fields - Skicka kunddata via Hidden Fields för personliga formulär
  • Villkorlig mappning - Mappa olika formulärfält baserat på svarslogik
  • Stöd för flera formulär - Anslut flera typeforms till olika Brevo-listor

Förutsättningar

Innan du börjar, se till att du har:

  1. Ett Typeform-konto (Basic-plan eller högre för webhooks)
  2. En Personal Access Token från Typeform Account Settings
  3. Ett Brevo-konto med API-åtkomst
  4. Ett Tajo-konto med kopplingsbehörigheter

Autentisering

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

Konfiguration

Grundinställning

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

Fältmappning

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-endpoints

EndpointMetodBeskrivning
https://api.typeform.com/formsGETLista alla formulär
https://api.typeform.com/forms/{form_id}GETHämta ett formulär
https://api.typeform.com/formsPOSTSkapa ett formulär
https://api.typeform.com/forms/{form_id}PUTUppdatera ett formulär
https://api.typeform.com/forms/{form_id}/responsesGETHämta svar
https://api.typeform.com/forms/{form_id}/responsesDELETERadera svar
https://api.typeform.com/forms/{form_id}/webhooks/{tag}PUTSkapa/uppdatera webhook
https://api.typeform.com/forms/{form_id}/webhooks/{tag}GETHämta webhook
https://api.typeform.com/forms/{form_id}/webhooksGETLista webhooks

Kodexempel

Initiera kopplingen

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

Hämta formulärsvar

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

Sätt upp webhooks

// 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.example.com/webhooks/typeform',
enabled: true,
secret: process.env.TYPEFORM_WEBHOOK_SECRET
})
}
);

Caution

Adressen example.com ovan är en platshållare tills Tajo-endpointen är tillgänglig.

Hantera webhook-händelser

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

Hastighetsbegränsningar

EndpointHastighetsbegränsningAnteckningar
Create API2 förfrågningar/sekSkapande och uppdateringar av formulär
Responses API2 förfrågningar/sekHämtning av svar
Webhooks API2 förfrågningar/sekWebhook-hantering
Alla endpoints120 förfrågningar/minGlobal hastighetsbegränsning

Sidindelning av svar

Responses API returnerar maximalt 1 000 svar per förfrågan. Använd before- eller after-markörparametrar för sidindelning vid hämtning av stora svarsuppsättningar.

Felsökning

ProblemOrsakLösning
Webhook ej mottagenWebhook inaktiveradAktivera webhook i Typeform-instrumentpanelen
Saknade svarFilter tillämpatKontrollera since/until och completed-parametrar
Auth-fel 401Token utgångenGenerera ny Personal Access Token
Hastighetsbegränsning 429För många förfrågningarImplementera förfrågningsstrypning
Tomma svarValfria fältHantera null/undefined-svarsvärden

Felsökningsläge

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

Bästa praxis

  1. Använd webhooks - Föredra webhooks framför polling för realtidsfångst av svar
  2. Validera signaturer - Verifiera alltid webhook-signaturer för säkerhet
  3. Använd Hidden Fields - Förfyll känd kunddata i formulär
  4. Mappa fältreferenser - Använd stabila ref-värden för fält istället för fält-ID:n
  5. Hantera partiella svar - Räkna med valfria och hoppade frågor
  6. Sätt upp återförsökslogik - Implementera idempotent webhook-bearbetning

Säkerhet

  • OAuth 2.0 - Scoped tokenbaserad autentisering
  • Webhook-signaturer - SHA-256 HMAC-signaturvalidering
  • Endast HTTPS - Alla API-endpoints kräver TLS
  • Token-scoping - Begär minsta nödvändiga OAuth-scopes
  • Hemlighetshantering - Lagra tokens i miljövariabler eller hemlighetshanterare
  • GDPR-efterlevnad - Använd Delete Responses API för dataraderingsrequester

Relaterade resurser

Ansök om tidig åtkomst

Ange ditt förnamn och din e-postadress på jobbet. Vi skickar en länk för att bekräfta din begäran om åtkomst till Tajo.

AI-assistent

Hej! Fråga mig om dokumentationen.

Den här sidan som Markdown: typeform.md

Läser in Markdown …
Öppna i Claude Öppna i ChatGPT