---
title: "Typeform कनेक्टर"
description: "Tajo के माध्यम से Brevo के साथ फ़ॉर्म प्रतिक्रियाएं, सर्वे, और कन्वर्सेशनल डेटा कलेक्शन सिंक करने के लिए संपूर्ण Typeform इंटीग्रेशन गाइड।"
url: https://tajo.io/hi/docs/connectors/custom/typeform/
markdown: https://tajo.io/hi/docs/connectors/custom/typeform.md
lang: hi-IN
robots: noindex
---

अर्ली एक्सेस का अनुरोध करें

अपना पहला नाम और कार्यस्थल का ईमेल पता दर्ज करें। Tajo एक्सेस अनुरोध की पुष्टि के लिए हम आपको एक लिंक ईमेल करेंगे।

# Typeform कनेक्टर

कनेक्टर की स्थिति: नियोजित अभी बना नहीं है। Tajo आज यह कनेक्टर नहीं चलाता।

| स्रोत फ़ील्ड | गंतव्य फ़ील्ड | नमूना मान |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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

## अवलोकन

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

## विशेषताएं

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

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

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

1. एक Typeform खाता (वेबहुक्स के लिए Basic प्लान या ऊपर)
2. [Typeform Account Settings](https://admin.typeform.com/account#/section/tokens) से एक Personal Access Token
3. API एक्सेस वाला एक Brevo खाता
4. कनेक्टर अनुमतियों के साथ एक Tajo खाता

## प्रमाणीकरण

### Personal Access Token

```bash
# 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

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

## कॉन्फ़िगरेशन

### बुनियादी सेटअप

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

### फ़ील्ड मैपिंग

```yaml
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/forms` | GET | सभी फ़ॉर्म्स सूचीबद्ध करें |
| `https://api.typeform.com/forms/{form_id}` | GET | एक फ़ॉर्म प्राप्त करें |
| `https://api.typeform.com/forms` | POST | एक फ़ॉर्म बनाएं |
| `https://api.typeform.com/forms/{form_id}` | PUT | एक फ़ॉर्म अपडेट करें |
| `https://api.typeform.com/forms/{form_id}/responses` | GET | प्रतिक्रियाएं प्राप्त करें |
| `https://api.typeform.com/forms/{form_id}/responses` | DELETE | प्रतिक्रियाएं हटाएं |
| `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}/webhooks` | GET | वेबहुक्स सूचीबद्ध करें |

## कोड उदाहरण

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

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

### फ़ॉर्म प्रतिक्रियाएं प्राप्त करें

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

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

```javascript
// 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

ऊपर दिया गया `example.com` पता तब तक सिर्फ़ प्लेसहोल्डर है, जब तक Tajo एंडपॉइंट उपलब्ध नहीं हो जाता.

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

```javascript
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 API | 2 अनुरोध/sec | फ़ॉर्म निर्माण और अपडेट |
| Responses API | 2 अनुरोध/sec | प्रतिक्रिया पुनर्प्राप्ति |
| Webhooks API | 2 अनुरोध/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 उत्तर मान हैंडल करें |

### डीबग मोड

```yaml
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 का उपयोग करें

## संबंधित संसाधन

- [Calendly Connector](https://tajo.io/hi/docs/connectors/custom/calendly)
- [Zapier Connector](https://tajo.io/hi/docs/connectors/custom/zapier)
- [Customer Sync Skill](https://tajo.io/hi/docs/skills/data-sync/customer-sync)
- [Typeform Developer Documentation](https://www.typeform.com/developers/)
