Typeform कनेक्टर

स्वचालित रूप से फ़ॉर्म सबमिशन सिंक करने, कन्वर्सेशनल फ़ॉर्म्स से लीड्स कैप्चर करने, और सर्वे सबमिशन और क्विज़ परिणामों के आधार पर मार्केटिंग ऑटोमेशन ट्रिगर करने के लिए Tajo के माध्यम से Typeform को Brevo से कनेक्ट करें।

अवलोकन

गुणमान
प्लेटफ़ॉर्मTypeform
श्रेणीForms & Surveys (Custom)
सेटअप जटिलताआसान
आधिकारिक इंटीग्रेशननहीं
सिंक किया गया डेटाप्रतिक्रियाएं, कॉन्टैक्ट्स, इवेंट्स, फ़ॉर्म्स
Auth MethodOAuth 2.0 / Personal Access Token

विशेषताएं

  • रीयल-टाइम प्रतिक्रिया सिंक - वेबहुक्स के माध्यम से स्वचालित रूप से फ़ॉर्म सबमिशन कैप्चर करें
  • कॉन्टैक्ट निर्माण - फ़ॉर्म प्रतिक्रियाओं से Brevo कॉन्टैक्ट्स बनाएं या अपडेट करें
  • लीड स्कोरिंग - लीड योग्यता के लिए क्विज़ स्कोर और फ़ॉर्म डेटा का उपयोग करें
  • Hidden Fields - व्यक्तिगत फ़ॉर्म्स के लिए Hidden Fields के माध्यम से ग्राहक डेटा पास करें
  • सशर्त मैपिंग - प्रतिक्रिया लॉजिक के आधार पर विभिन्न फ़ॉर्म फ़ील्ड्स मैप करें
  • मल्टी-फ़ॉर्म समर्थन - कई typeforms को विभिन्न Brevo लिस्ट्स से कनेक्ट करें

पूर्वावश्यकताएं

शुरू करने से पहले, सुनिश्चित करें कि आपके पास है:

  1. एक Typeform खाता (वेबहुक्स के लिए Basic प्लान या ऊपर)
  2. Typeform Account Settings से एक Personal Access Token
  3. API एक्सेस वाला एक Brevo खाता
  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

API एंडपॉइंट्स

एंडपॉइंटमेथडविवरण
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वेबहुक बनाएं/अपडेट करें
https://api.typeform.com/forms/{form_id}/webhooks/{tag}GETवेबहुक प्राप्त करें
https://api.typeform.com/forms/{form_id}/webhooksGETवेबहुक्स सूचीबद्ध करें

कोड उदाहरण

कनेक्टर प्रारंभ करें

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

वेबहुक्स सेट करें

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

वेबहुक इवेंट्स हैंडल करें

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

दर सीमाएं

एंडपॉइंटदर सीमानोट्स
Create API2 अनुरोध/secफ़ॉर्म निर्माण और अपडेट
Responses API2 अनुरोध/secप्रतिक्रिया पुनर्प्राप्ति
Webhooks API2 अनुरोध/secवेबहुक प्रबंधन
सभी एंडपॉइंट्स120 अनुरोध/minवैश्विक दर सीमा

प्रतिक्रिया पेजिनेशन

Responses API प्रति अनुरोध अधिकतम 1,000 प्रतिक्रियाएं लौटाता है। बड़े प्रतिक्रिया सेट प्राप्त करते समय पेजिनेशन के लिए before या after कर्सर पैरामीटर का उपयोग करें।

समस्या निवारण

समस्याकारणसमाधान
Webhook प्राप्त नहीं हुआWebhook अक्षमTypeform डैशबोर्ड में webhook सक्षम करें
गायब प्रतिक्रियाएंफ़िल्टर लागूsince/until और completed पैरामीटर जांचें
Auth error 401टोकन समाप्तनया Personal Access Token जनरेट करें
दर सीमा 429बहुत अधिक अनुरोधअनुरोध थ्रॉटलिंग लागू करें
खाली उत्तरवैकल्पिक फ़ील्ड्सnull/undefined उत्तर मान हैंडल करें

डीबग मोड

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

सर्वोत्तम प्रथाएं

  1. वेबहुक्स का उपयोग करें - रीयल-टाइम प्रतिक्रिया कैप्चर के लिए पोलिंग पर वेबहुक्स को प्राथमिकता दें
  2. सिग्नेचर सत्यापित करें - सुरक्षा के लिए हमेशा वेबहुक सिग्नेचर सत्यापित करें
  3. Hidden Fields का उपयोग करें - फ़ॉर्म्स में ज्ञात ग्राहक डेटा को पूर्व-पॉपुलेट करें
  4. फ़ील्ड संदर्भ मैप करें - फ़ील्ड IDs के बजाय स्थिर फ़ील्ड ref मानों का उपयोग करें
  5. आंशिक प्रतिक्रियाएं हैंडल करें - वैकल्पिक और छोड़े गए प्रश्नों का ध्यान रखें
  6. रीट्राई लॉजिक सेट करें - idempotent वेबहुक प्रोसेसिंग लागू करें

सुरक्षा

  • OAuth 2.0 - Scoped टोकन-आधारित प्रमाणीकरण
  • Webhook सिग्नेचर - SHA-256 HMAC सिग्नेचर सत्यापन
  • HTTPS only - सभी API एंडपॉइंट्स को TLS की आवश्यकता है
  • Token scoping - न्यूनतम आवश्यक OAuth scopes का अनुरोध करें
  • Secret प्रबंधन - environment variables या secret managers में टोकन संग्रहीत करें
  • 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 सहायक

नमस्ते! डॉक्यूमेंटेशन के बारे में कुछ भी पूछें।