Σύνδεσμος Typeform

Συνδέστε το Typeform με το Brevo μέσω Tajo για αυτόματο συγχρονισμό απαντήσεων φόρμας, καταγραφή leads από συνομιλητικές φόρμες και ενεργοποίηση αυτοματισμών marketing βάσει υποβολών έρευνας και αποτελεσμάτων quiz.

Επισκόπηση

ΙδιότηταΤιμή
ΠλατφόρμαTypeform
ΚατηγορίαΦόρμες & Έρευνες (Προσαρμοσμένο)
Πολυπλοκότητα ΡύθμισηςΕύκολη
Επίσημη ΕνσωμάτωσηΌχι
Δεδομένα που ΣυγχρονίζονταιΑπαντήσεις, Επαφές, Εκδηλώσεις, Φόρμες
Μέθοδος ΠιστοποίησηςOAuth 2.0 / Personal Access Token

Χαρακτηριστικά

  • Συγχρονισμός απαντήσεων σε πραγματικό χρόνο - Αυτόματη καταγραφή υποβολών φόρμας μέσω webhooks
  • Δημιουργία επαφής - Δημιουργία ή ενημέρωση επαφών Brevo από απαντήσεις φόρμας
  • Βαθμολόγηση lead - Χρήση βαθμολογιών quiz και δεδομένων φόρμας για προεπιλογή leads
  • Hidden Fields - Μεταβίβαση δεδομένων πελάτη μέσω Hidden Fields για εξατομικευμένες φόρμες
  • Υπό συνθήκη αντιστοίχηση - Αντιστοίχηση διαφορετικών πεδίων φόρμας βάσει λογικής απόκρισης
  • Υποστήριξη πολλαπλών φορμών - Σύνδεση πολλαπλών typeforms σε διαφορετικές λίστες Brevo

Προαπαιτούμενα

Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε:

  1. Λογαριασμό Typeform (Basic πλάνο ή παραπάνω για webhooks)
  2. Personal Access Token από τις Ρυθμίσεις Λογαριασμού Typeform
  3. Λογαριασμό Brevo με πρόσβαση API
  4. Λογαριασμό Tajo με δικαιώματα συνδέσμου

Πιστοποίηση

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

Διαμόρφωση

Βασική Ρύθμιση

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

Αντιστοίχιση Πεδίων

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

Endpoints API

EndpointΜέθοδοςΠεριγραφή
https://api.typeform.com/formsGETΛίστα όλων των φορμών
https://api.typeform.com/forms/{form_id}GETΑνάκτηση φόρμας
https://api.typeform.com/formsPOSTΔημιουργία φόρμας
https://api.typeform.com/forms/{form_id}PUTΕνημέρωση φόρμας
https://api.typeform.com/forms/{form_id}/responsesGETΑνάκτηση απαντήσεων
https://api.typeform.com/forms/{form_id}/responsesDELETEΔιαγραφή απαντήσεων
https://api.typeform.com/forms/{form_id}/webhooks/{tag}PUTΔημιουργία/ενημέρωση webhook
https://api.typeform.com/forms/{form_id}/webhooks/{tag}GETΛήψη webhook
https://api.typeform.com/forms/{form_id}/webhooksGETΛίστα webhooks

Παραδείγματα Κώδικα

Αρχικοποίηση Συνδέσμου

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

Ανάκτηση Απαντήσεων Φόρμας

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

Ρύθμιση 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.tajo.io/webhooks/typeform',
enabled: true,
secret: process.env.TYPEFORM_WEBHOOK_SECRET
})
}
);

Χειρισμός Εκδηλώσεων Webhook

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

Όρια Ρυθμού

EndpointΌριο ΡυθμούΣημειώσεις
Create API2 αιτήματα/δευτ.Δημιουργία και ενημερώσεις φόρμας
Responses API2 αιτήματα/δευτ.Ανάκτηση απαντήσεων
Webhooks API2 αιτήματα/δευτ.Διαχείριση webhook
Όλα τα endpoints120 αιτήματα/λεπτόΓενικό όριο ρυθμού

Σελιδοποίηση Απαντήσεων

Το Responses API επιστρέφει μέγιστο 1.000 απαντήσεις ανά αίτημα. Χρησιμοποιήστε τις παραμέτρους cursor before ή after για σελιδοποίηση κατά την ανάκτηση μεγάλων συνόλων απαντήσεων.

Αντιμετώπιση Προβλημάτων

ΠρόβλημαΑιτίαΛύση
Δεν λαμβάνεται webhookΤο webhook είναι απενεργοποιημένοΕνεργοποιήστε το webhook στο dashboard Typeform
Λείπουν απαντήσειςΕφαρμοσμένο φίλτροΕλέγξτε παραμέτρους since/until και completed
Σφάλμα πιστοποίησης 401Ληγμένο tokenΔημιουργήστε νέο Personal Access Token
Όριο ρυθμού 429Υπερβολικά πολλά αιτήματαΕφαρμόστε περιορισμό αιτημάτων
Κενές απαντήσειςΠροαιρετικά πεδίαΧειριστείτε null/undefined τιμές απαντήσεων

Λειτουργία Εντοπισμού Σφαλμάτων

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

Βέλτιστες Πρακτικές

  1. Χρησιμοποιήστε webhooks - Προτιμήστε webhooks έναντι polling για καταγραφή απαντήσεων σε πραγματικό χρόνο
  2. Επικυρώστε υπογραφές - Να επαληθεύετε πάντα υπογραφές webhook για ασφάλεια
  3. Χρησιμοποιήστε Hidden Fields - Προσυμπληρώστε γνωστά δεδομένα πελάτη σε φόρμες
  4. Αντιστοιχίστε αναφορές πεδίων - Χρησιμοποιήστε σταθερές τιμές ref πεδίου αντί για IDs πεδίου
  5. Χειριστείτε μερικές απαντήσεις - Λαμβάνετε υπόψη προαιρετικές και παραλειφθείσες ερωτήσεις
  6. Ρυθμίστε λογική επανάληψης - Εφαρμόστε idempotent επεξεργασία webhook

Ασφάλεια

  • OAuth 2.0 - Πιστοποίηση βάσει token με εύρος
  • Υπογραφές webhook - Επικύρωση υπογραφής SHA-256 HMAC
  • Μόνο HTTPS - Όλα τα endpoints API απαιτούν TLS
  • Εύρος token - Αίτηση ελάχιστων απαιτούμενων OAuth scopes
  • Διαχείριση μυστικών - Αποθηκεύστε tokens σε μεταβλητές περιβάλλοντος ή διαχειριστές μυστικών
  • Συμμόρφωση GDPR - Χρησιμοποιήστε το Delete Responses API για αιτήματα διαγραφής δεδομένων

Σχετικοί Πόροι

Subscribe to updates

developer-docs

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

auto-detect
AI Βοηθός

Γεια! Ρωτήστε με οτιδήποτε για την τεκμηρίωση.