Typeform Konektor

Povežite Typeform s Brevom putem Taja kako biste automatski sinkronizirali odgovore na obrasce, hvatali potencijalne klijente iz konverzacijskih obrazaca i pokretali marketinške automatizacije temeljene na slanju anketa i rezultatima kvizova.

Pregled

SvojstvoVrijednost
PlatformaTypeform
KategorijaObrasci i ankete (Prilagođeno)
Složenost postavljanjaJednostavno
Službena integracijaNe
Sinkronizirani podaciOdgovori, Kontakti, Događaji, Obrasci
Metoda autentifikacijeOAuth 2.0 / Personal Access Token

Značajke

  • Sinkronizacija odgovora u stvarnom vremenu - Automatski hvatajte slanja obrazaca putem webhookova
  • Kreiranje kontakata - Kreirajte ili ažurirajte Brevo kontakte iz odgovora na obrasce
  • Ocjenjivanje potencijalnih klijenata - Koristite rezultate kvizova i podatke obrazaca za kvalifikaciju potencijalnih klijenata
  • Skrivena polja - Proslijedite korisničke podatke putem skrivenih polja za personalizirane obrasce
  • Uvjetno mapiranje - Mapirajte različita polja obrazaca na temelju logike odgovora
  • Podrška za više obrazaca - Povežite više typeformi s različitim Brevo popisima

Preduvjeti

Prije nego što počnete, osigurajte da imate:

  1. Typeform račun (Basic plan ili viši za webhookove)
  2. Personal Access Token iz Typeform Postavki računa
  3. Brevo račun s API pristupom
  4. Tajo račun s dozvolama konektora

Autentifikacija

Personal Access Token

Terminal window
# Generirajte token na 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 tijek autorizacije
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()
});
// Zamijenite autorizacijski kod za pristupni 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'
})
});

Konfiguracija

Osnovna konfiguracija

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

Mapiranje polja

field_mapping:
# Mapirajte reference polja Typeforma na Brevo atribute
email: email
name: FIRSTNAME
company: COMPANY
phone: SMS
score: LEAD_SCORE
quiz_result: QUIZ_SCORE
nps_rating: NPS_SCORE
feedback: LAST_FEEDBACK

API krajnje točke

Krajnja točkaMetodaOpis
https://api.typeform.com/formsGETPopis svih obrazaca
https://api.typeform.com/forms/{form_id}GETDohvatite obrazac
https://api.typeform.com/formsPOSTKreirajte obrazac
https://api.typeform.com/forms/{form_id}PUTAžurirajte obrazac
https://api.typeform.com/forms/{form_id}/responsesGETDohvatite odgovore
https://api.typeform.com/forms/{form_id}/responsesDELETEIzbrišite odgovore
https://api.typeform.com/forms/{form_id}/webhooks/{tag}PUTKreirajte/ažurirajte webhook
https://api.typeform.com/forms/{form_id}/webhooks/{tag}GETDohvatite webhook
https://api.typeform.com/forms/{form_id}/webhooksGETPopis webhookova

Primjeri koda

Inicijalizacija konektora

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

Dohvaćanje odgovora na obrasce

// Dohvatite odgovore koristeći 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();
// Sinkronizacija svakog odgovora u 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]
});
}
}

Postavljanje webhookova

// Registrirajte webhook za obavijesti o odgovorima u stvarnom vremenu
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
})
}
);

Rukovanje webhook događajima

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

Ograničenja brzine

Krajnja točkaOgraničenje brzineNapomene
Create API2 zahtjeva/sKreiranje i ažuriranje obrazaca
Responses API2 zahtjeva/sDohvaćanje odgovora
Webhooks API2 zahtjeva/sUpravljanje webhookovima
Sve krajnje točke120 zahtjeva/minGlobalno ograničenje brzine

Paginacija odgovora

Responses API vraća najviše 1.000 odgovora po zahtjevu. Koristite parametre pokazivača before ili after za paginaciju pri dohvaćanju velikih skupova odgovora.

Rješavanje problema

ProblemUzrokRješenje
Webhook nije primljenWebhook onemogućenOmogućite webhook u Typeform nadzornoj ploči
Nedostaju odgovoriPrimijenjen filterProvjerite parametre since/until i completed
Greška autentifikacije 401Token istekaoGenerirajte novi Personal Access Token
Ograničenje brzine 429Previše zahtjevaImplementirajte ograničavanje zahtjeva
Prazni odgovoriOpcionalna poljaUpravljajte null/undefined vrijednostima odgovora

Način otklanjanja grešaka

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

Preporučene prakse

  1. Koristite webhookove - Preferirajte webhookove umjesto anketiranja za hvatanje odgovora u stvarnom vremenu
  2. Validirajte potpise - Uvijek verificirajte potpise webhookova za sigurnost
  3. Koristite skrivena polja - Unaprijed popunite poznate korisničke podatke u obrascima
  4. Mapirajte reference polja - Koristite stabilne ref vrijednosti polja umjesto ID-ova polja
  5. Upravljajte djelomičnim odgovorima - Uzmite u obzir opcionalna i preskočena pitanja
  6. Postavite logiku ponovnog pokušaja - Implementirajte idempotentnu obradu webhookova

Sigurnost

  • OAuth 2.0 - Autentifikacija temeljena na opseženim tokenima
  • Potpisi webhookova - SHA-256 HMAC validacija potpisa
  • Samo HTTPS - Sve API krajnje točke zahtijevaju TLS
  • Opsežavanje tokena - Zatražite minimalno potrebne OAuth opsege
  • Upravljanje tajnama - Pohranite tokene u varijablama okoline ili upraviteljima tajni
  • GDPR usklađenost - Koristite Delete Responses API za zahtjeve brisanja podataka

Povezani resursi

Subscribe to updates

developer-docs

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

auto-detect
AI asistent

Bok! Pitajte me o dokumentaciji.