Calendly کنیکٹر

میٹنگ مدعوئین کو خود بخود رابطوں کے طور پر سنک کرنے، بکنگ ایونٹس کی بنیاد پر ای میل سیکوئنسز کو متحرک کرنے، اور اپنی سیلز اور onboarding ورک فلوز کو ہموار کرنے کے لیے Tajo کے ذریعے Calendly کو Brevo سے منسلک کریں۔

جائزہ

خاصیتقدر
پلیٹ فارمCalendly
زمرہشیڈولنگ (حسب ضرورت)
سیٹ اپ کی پیچیدگیآسان
آفیشل انٹیگریشننہیں
سنک شدہ ڈیٹاایونٹس، رابطے، بکنگز، منسوخیاں
توثیقی طریقہOAuth 2.0 / Personal Access Token

خصوصیات

  • مدعو سنک - میٹنگ مدعوئین سے خود بخود Brevo رابطے بنائیں
  • بکنگ ٹرگرز - جب میٹنگز بک ہوں تو Brevo آٹومیشنز کو چلائیں
  • منسوخی کی ہینڈلنگ - منسوخیوں پر ری-انگیجمنٹ فلوز کو متحرک کریں
  • No-show کا پتہ لگانا - جب مدعوئین میٹنگز سے محروم ہوں تو رابطے کی حیثیت کو اپ ڈیٹ کریں
  • ایونٹ کی قسم میپنگ - مختلف Calendly ایونٹ اقسام کو Brevo فہرستوں سے میپ کریں
  • Scheduling API - ری ڈائریکٹس کے بغیر اپنی ایپ میں براہ راست شیڈولنگ بنائیں

ضروریات

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:

  1. Calendly اکاؤنٹ (API رسائی کے لیے Professional پلان یا اوپر)
  2. Calendly Integrations سے Personal Access Token
  3. API رسائی کے ساتھ Brevo اکاؤنٹ
  4. کنیکٹر اجازتوں کے ساتھ Tajo اکاؤنٹ

توثیق

Personal Access Token

Terminal window
# https://calendly.com/integrations/api_webhooks پر تخلیق کریں
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

// 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'
});
// کوڈ کو ٹوکن کے لیے تبدیل کریں
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'
})
});

کنفیگریشن

بنیادی سیٹ اپ

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:
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 اینڈ پوائنٹس

اینڈ پوائنٹطریقہتفصیل
https://api.calendly.com/users/meGETموجودہ صارف حاصل کریں
https://api.calendly.com/event_typesGETایونٹ اقسام کی فہرست
https://api.calendly.com/scheduled_eventsGETشیڈول شدہ ایونٹس کی فہرست
https://api.calendly.com/scheduled_events/{uuid}GETایک شیڈول شدہ ایونٹ حاصل کریں
https://api.calendly.com/scheduled_events/{uuid}/inviteesGETمدعوئین کی فہرست
https://api.calendly.com/scheduling_linksPOSTشیڈولنگ لنک بنائیں
https://api.calendly.com/webhook_subscriptionsPOSTویب ہک بنائیں
https://api.calendly.com/webhook_subscriptionsGETویب ہکس کی فہرست
https://api.calendly.com/invitee_no_shows/{uuid}GETNo-show کی حیثیت حاصل کریں

کوڈ مثالیں

کنیکٹر کو شروع کریں

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

شیڈول شدہ ایونٹس کی فہرست

// شیڈول شدہ ایونٹس حاصل کریں
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();

مدعوئین کو Brevo سے سنک کریں

// شیڈول شدہ ایونٹ کے لیے مدعوئین حاصل کریں اور Brevo سے سنک کریں
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]
});
}

ویب ہک سبسکرپشن سیٹ اپ کریں

// Calendly ایونٹس کو سبسکرائب کریں
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.tajo.io/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
})
}
);

ویب ہک ایونٹس کو ہینڈل کریں

app.post('/webhooks/calendly', async (req, res) => {
// ویب ہک سگنیچر کی تصدیق کریں
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');
});

ریٹ کی حدود

وسیلہحدنوٹس
API درخواستیں6,000/منٹتنظیم وسیع حد
ویب ہک سبسکرپشنزفی تنظیم 30تمام ایونٹ اقسام میں
شیڈولنگ لنکسلامحدودفی منٹ کوئی حد نہیں

پیجینیشن

Calendly API ریسپانسز کرسر پر مبنی پیجینیشن استعمال کرتے ہیں۔ اضافی نتائج حاصل کرنے کے لیے pagination آبجیکٹ سے next_page_token استعمال کریں۔ ڈیفالٹ پیج سائز 20 آئٹمز ہے، زیادہ سے زیادہ 100۔

مسائل کا سراغ

مسئلہوجہحل
ویب ہک موصول نہیں ہواغلط اسکوپویب ہکس کے لیے organization اسکوپ استعمال کریں
401 Unauthorizedٹوکن کی میعاد ختمنیا ٹوکن تخلیق کریں یا OAuth ٹوکن ریفریش کریں
مدعو کا ڈیٹا غائبسوالات کنفیگر نہیںایونٹ کی قسم میں حسب ضرورت سوالات شامل کریں
ڈپلیکیٹ رابطےکوئی ڈی ڈپ منطق نہیںupserts کے لیے ای میل کو منفرد شناخت کنندہ کے طور پر استعمال کریں
ریٹ کی حد 429بہت زیادہ درخواستیںبیک آف اور درخواست بیچنگ نافذ کریں

ڈیبگ موڈ

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

بہترین طریقے

  1. ویب ہکس استعمال کریں - ریئل ٹائم سنک کے لیے invitee.created اور invitee.canceled کو سبسکرائب کریں
  2. حسب ضرورت سوالات شامل کریں - امیر رابطہ پروفائلز کے لیے کمپنی، رول، اور فون ڈیٹا جمع کریں
  3. ایونٹ اقسام کو میپ کریں - فی Calendly ایونٹ کی قسم مختلف Brevo فہرستیں تفویض کریں
  4. No-shows کو ہینڈل کریں - لیڈ اسکورنگ اور فالو اپ سیکوئنسز کو ایڈجسٹ کرنے کے لیے no-shows کو ٹریک کریں
  5. شیڈولنگ لنکس استعمال کریں - ذاتی بکنگ تجربات کے لیے منفرد شیڈولنگ لنکس تخلیق کریں
  6. تنظیم کا اسکوپ سیٹ کریں - تمام ٹیم ممبران سے ایونٹس حاصل کرنے کے لیے org-level ویب ہکس استعمال کریں

سیکیورٹی

  • OAuth 2.0 - اسکوپڈ ٹوکن پر مبنی توثیق
  • ویب ہک سگنیچرز - آنے والے ویب ہکس کے لیے HMAC سگنیچر کی توثیق
  • صرف HTTPS - تمام API اینڈ پوائنٹس کو TLS انکرپشن کی ضرورت ہوتی ہے
  • ٹوکن کی میعاد - OAuth ٹوکنز کی میعاد ختم ہوتی ہے اور ریفریش فلوز کی ضرورت ہوتی ہے
  • کم از کم اسکوپس - صرف ضروری OAuth اسکوپس درخواست کریں
  • محفوظ اسٹوریج - ٹوکنز کو ماحولیاتی متغیرات یا سیکریٹ مینیجرز میں محفوظ کریں

متعلقہ وسائل

Subscribe to updates

developer-docs

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

auto-detect
AI معاون

السلام علیکم! دستاویزات کے بارے میں کچھ بھی پوچھیں۔