---
title: "Calendly कनेक्टर"
description: "Tajo के माध्यम से Calendly scheduling events, invitee data, और meeting workflows को Brevo के साथ sync करने की संपूर्ण integration guide।"
url: https://tajo.io/hi/docs/connectors/custom/calendly/
markdown: https://tajo.io/hi/docs/connectors/custom/calendly.md
lang: hi-IN
robots: noindex
---

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

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

# Calendly कनेक्टर

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

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

meeting invitees को स्वचालित रूप से contacts के रूप में sync करने, booking events के आधार पर email sequences trigger करने, और अपने sales एवं onboarding workflows को सुव्यवस्थित करने के लिए Tajo के माध्यम से Calendly को Brevo से कनेक्ट करें।

## अवलोकन

| Property | Value |
| --- | --- |
| **Platform** | Calendly |
| **Category** | Scheduling (Custom) |
| **Setup Complexity** | Easy |
| **Official Integration** | No |
| **Data Synced** | Events, Contacts, Bookings, Cancellations |
| **Auth Method** | OAuth 2.0 / Personal Access Token |

## विशेषताएं

- **Invitee sync** - meeting invitees से स्वचालित रूप से Brevo contacts बनाएं
- **Booking triggers** - जब meetings book हों तो Brevo automations चलाएं
- **Cancellation handling** - cancellations पर re-engagement flows trigger करें
- **No-show detection** - जब invitees meetings miss करें तो contact status अपडेट करें
- **Event type mapping** - विभिन्न Calendly event types को Brevo lists से map करें
- **Scheduling API** - redirects के बिना scheduling को सीधे अपने app में बनाएं

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

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

1. एक Calendly account (API access के लिए Professional plan या उससे ऊपर)
2. [Calendly Integrations](https://calendly.com/integrations) से एक Personal Access Token
3. API access वाला एक Brevo account
4. connector permissions वाला एक Tajo account

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

### Personal Access Token

```bash
# https://calendly.com/integrations/api_webhooks पर generate करें
export CALENDLY_ACCESS_TOKEN=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 Code Flow
const authUrl = 'https://auth.calendly.com/oauth/authorize?' +
  new URLSearchParams({
    client_id: process.env.CALENDLY_CLIENT_ID,
    redirect_uri: 'https://your-app.com/callback',
    response_type: 'code'
  });

// token के लिए code exchange करें
const tokenResponse = await fetch('https://auth.calendly.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.CALENDLY_CLIENT_ID,
    client_secret: process.env.CALENDLY_CLIENT_SECRET,
    redirect_uri: 'https://your-app.com/callback'
  })
});
```

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

### बेसिक सेटअप

```yaml
connectors:
  calendly:
    enabled: true
    access_token: "${CALENDLY_ACCESS_TOKEN}"

    sync:
      contacts: true
      events: true
      cancellations: true

    event_mapping:
      discovery_call:
        list_id: 10
        event_type_uri: "https://api.calendly.com/event_types/abc123"
      demo:
        list_id: 11
        event_type_uri: "https://api.calendly.com/event_types/xyz789"

    webhook:
      signing_key: "${CALENDLY_WEBHOOK_SIGNING_KEY}"
```

### Field Mapping

```yaml
field_mapping:
  email: email
  name: FIRSTNAME
  questions_and_answers:
    company: COMPANY
    role: JOB_TITLE
    phone: SMS
  event_type_name: CALENDLY_EVENT_TYPE
  scheduled_at: MEETING_DATE
  status: BOOKING_STATUS
```

## API Endpoints

| Endpoint | Method | विवरण |
| --- | --- | --- |
| `https://api.calendly.com/users/me` | GET | वर्तमान user प्राप्त करें |
| `https://api.calendly.com/event_types` | GET | event types list करें |
| `https://api.calendly.com/scheduled_events` | GET | scheduled events list करें |
| `https://api.calendly.com/scheduled_events/{uuid}` | GET | एक scheduled event प्राप्त करें |
| `https://api.calendly.com/scheduled_events/{uuid}/invitees` | GET | invitees list करें |
| `https://api.calendly.com/scheduling_links` | POST | scheduling link बनाएं |
| `https://api.calendly.com/webhook_subscriptions` | POST | webhook बनाएं |
| `https://api.calendly.com/webhook_subscriptions` | GET | webhooks list करें |
| `https://api.calendly.com/invitee_no_shows/{uuid}` | GET | no-show status प्राप्त करें |

## कोड उदाहरण

### कनेक्टर शुरू करें

```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('calendly', {
  accessToken: process.env.CALENDLY_ACCESS_TOKEN
});
```

### Scheduled Events List करें

```javascript
// scheduled events प्राप्त करें
const response = await fetch(
  'https://api.calendly.com/scheduled_events?' +
    new URLSearchParams({
      user: 'https://api.calendly.com/users/YOUR_USER_ID',
      min_start_time: '2024-01-01T00:00:00Z',
      max_start_time: '2024-12-31T23:59:59Z',
      status: 'active',
      count: 100
    }),
  {
    headers: {
      'Authorization': `Bearer ${process.env.CALENDLY_ACCESS_TOKEN}`,
      'Content-Type': 'application/json'
    }
  }
);

const events = await response.json();
```

### Invitees को Brevo से Sync करें

```javascript
// scheduled event के लिए invitees प्राप्त करें और Brevo से sync करें
const inviteesResponse = await fetch(
  `https://api.calendly.com/scheduled_events/${eventUuid}/invitees`,
  {
    headers: {
      'Authorization': `Bearer ${process.env.CALENDLY_ACCESS_TOKEN}`
    }
  }
);

const { collection } = await inviteesResponse.json();

for (const invitee of collection) {
  await tajo.contacts.sync({
    email: invitee.email,
    attributes: {
      FIRSTNAME: invitee.name,
      CALENDLY_EVENT_TYPE: invitee.event,
      MEETING_DATE: invitee.created_at,
      BOOKING_STATUS: invitee.status
    },
    listIds: [10]
  });
}
```

### Webhook Subscriptions सेट करें

```javascript
// Calendly events की subscribe करें
const webhook = await fetch(
  'https://api.calendly.com/webhook_subscriptions',
  {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.CALENDLY_ACCESS_TOKEN}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      url: 'https://api.example.com/webhooks/calendly',
      events: [
        'invitee.created',
        'invitee.canceled',
        'invitee_no_show.created'
      ],
      organization: 'https://api.calendly.com/organizations/YOUR_ORG_ID',
      scope: 'organization',
      signing_key: process.env.CALENDLY_WEBHOOK_SIGNING_KEY
    })
  }
);
```

Caution

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

### Webhook Events हैंडल करें

```javascript
app.post('/webhooks/calendly', async (req, res) => {
  // webhook signature सत्यापित करें
  const signature = req.headers['calendly-webhook-signature'];
  const isValid = verifyCalendlySignature(
    req.rawBody, signature, process.env.CALENDLY_WEBHOOK_SIGNING_KEY
  );

  if (!isValid) return res.status(401).send('Unauthorized');

  const { event, payload } = req.body;

  switch (event) {
    case 'invitee.created':
      await tajo.contacts.sync({
        email: payload.email,
        attributes: { BOOKING_STATUS: 'booked' },
        listIds: [10]
      });
      break;
    case 'invitee.canceled':
      await tajo.contacts.update(payload.email, {
        attributes: { BOOKING_STATUS: 'cancelled' }
      });
      break;
    case 'invitee_no_show.created':
      await tajo.contacts.update(payload.email, {
        attributes: { BOOKING_STATUS: 'no_show' }
      });
      break;
  }

  res.status(200).send('OK');
});
```

## Rate Limits

| संसाधन | Limit | नोट्स |
| --- | --- | --- |
| API requests | 6,000/min | Organization-wide limit |
| Webhook subscriptions | प्रति organization 30 | सभी event types में |
| Scheduling links | असीमित | कोई per-minute limit नहीं |

Pagination

Calendly API responses cursor-आधारित pagination का उपयोग करते हैं। अतिरिक्त परिणाम प्राप्त करने के लिए `pagination` object से `next_page_token` का उपयोग करें। डिफ़ॉल्ट page size 20 items है, अधिकतम 100।

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

| समस्या | कारण | समाधान |
| --- | --- | --- |
| Webhook प्राप्त नहीं हुआ | गलत scope | webhooks के लिए `organization` scope का उपयोग करें |
| 401 Unauthorized | Token expire हो गया | नया token generate करें या OAuth token refresh करें |
| गायब invitee data | Questions कॉन्फ़िगर नहीं | event type में custom questions जोड़ें |
| Duplicate contacts | dedup logic नहीं | upserts के लिए email को unique identifier के रूप में उपयोग करें |
| Rate limit 429 | बहुत अधिक requests | backoff और request batching लागू करें |

### Debug Mode

```yaml
connectors:
  calendly:
    debug: true
    log_level: verbose
    log_webhooks: true
```

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

1. **Webhooks का उपयोग करें** - real-time sync के लिए `invitee.created` और `invitee.canceled` की subscribe करें
2. **Custom questions जोड़ें** - समृद्ध contact profiles के लिए company, role, और phone data एकत्र करें
3. **Event types को map करें** - प्रति Calendly event type अलग Brevo lists assign करें
4. **No-shows संभालें** - lead scoring और follow-up sequences adjust करने के लिए no-shows ट्रैक करें
5. **Scheduling links का उपयोग करें** - personalized booking experiences के लिए unique scheduling links generate करें
6. **Organization scope सेट करें** - सभी team members के events capture करने के लिए org-level webhooks का उपयोग करें

## सुरक्षा

- **OAuth 2.0** - Scoped token-आधारित authentication
- **Webhook signatures** - incoming webhooks के लिए HMAC signature validation
- **HTTPS only** - सभी API endpoints के लिए TLS encryption आवश्यक
- **Token expiry** - OAuth tokens expire होते हैं और refresh flows की आवश्यकता होती है
- **Minimal scopes** - केवल आवश्यक OAuth scopes का अनुरोध करें
- **Secure storage** - tokens को environment variables या secret managers में store करें

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

- [Typeform कनेक्टर](https://tajo.io/hi/docs/connectors/custom/typeform)
- [Zoom कनेक्टर](https://tajo.io/hi/docs/connectors/custom/zoom)
- [Customer Sync Skill](https://tajo.io/hi/docs/skills/data-sync/customer-sync)
- [Calendly Developer API Documentation](https://developer.calendly.com/api-docs)
