Zaprosite za zgodnji dostop

Vnesite svoje ime in službeni e-poštni naslov. Poslali vam bomo povezavo za potrditev zahteve za dostop do Taja.

Calendly Connector

Stanje konektorja: Načrtovano Še ni izdelano. Tajo danes ne poganja tega konektorja.

Ponazoritev · vzorčni podatki

Primer sinhronizacije

Preglejte en zapis

Vir

Calendly

Stanje konektorja: Načrtovano

Cilj

Vaše drugo orodje

Stanje konektorja: Orodje po meri

Izvorno poljeCiljno poljeVzorčna vrednost
record.id source_id record_1042
record.updated_at updated_at 2026-10-18T08:00:00Z
record.value value sample_value
  1. Osnutek
  2. Preglejte en zapis
  3. Odobrite to različico

Stanja veljajo za posamezne konektorje in ne zagotavljajo, da je ta sinhronizacija pripravljena. Polja so ponazoritvena. Pred zagonom sinhronizacije preverite dejansko shemo in dovoljenja.

Poveži Calendly z Brevo prek Tajo za samodejno sinhronizacijo vabljenih na sestanke kot stikov, sprožanje e-mail zaporedij na osnovi dogodkov rezervacij in poenostavitev prodajnih in uvajalne procese.

Pregled

LastnostVrednost
PlatformaCalendly
KategorijaRazporejanje (po meri)
Zahtevnost nastavitveEnostavna
Uradna integracijaNe
Sinhronizirani podatkiDogodki, stiki, rezervacije, odpovedi
Metoda avtentikacijeOAuth 2.0 / Personal Access Token

Funkcionalnosti

  • Sinhronizacija vabljenih – samodejno ustvari stike Brevo iz vabljenih na sestanke
  • Sprožilci rezervacij – sproži avtomatizacije Brevo, ko so sestanki rezervirani
  • Obravnava odpovedi – sproži tokove za ponovno angažiranje ob odpovedih
  • Zaznavanje odsotnosti – posodobi status stika, ko vabljeni zamudijo sestanke
  • Preslikava vrst dogodkov – preslikaj različne vrste dogodkov Calendly na sezname Brevo
  • Scheduling API – vgradi razporejanje neposredno v svojo aplikacijo brez preusmeritev

Predpogoji

Preden začneš, se prepričaj, da imaš:

  1. Račun Calendly (paket Professional ali višji za dostop do API)
  2. Personal Access Token iz Calendly Integrations
  3. Brevo račun z dostopom do API
  4. Tajo račun z dovoljenji za konektorje

Avtentikacija

Personal Access Token

Terminal window
# Generate at 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'
});
// Exchange code for token
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'
})
});

Konfiguracija

Osnovna nastavitev

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

Preslikava polj

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

Končne točke API

Končna točkaMetodaOpis
https://api.calendly.com/users/meGETPridobi trenutnega uporabnika
https://api.calendly.com/event_typesGETSeznam vrst dogodkov
https://api.calendly.com/scheduled_eventsGETSeznam načrtovanih dogodkov
https://api.calendly.com/scheduled_events/{uuid}GETPridobi načrtovani dogodek
https://api.calendly.com/scheduled_events/{uuid}/inviteesGETSeznam vabljenih
https://api.calendly.com/scheduling_linksPOSTUstvari povezavo za razporejanje
https://api.calendly.com/webhook_subscriptionsPOSTUstvari webhook
https://api.calendly.com/webhook_subscriptionsGETSeznam webhookov
https://api.calendly.com/invitee_no_shows/{uuid}GETPridobi status odsotnosti

Primeri kode

Inicializacija konektorja

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

Seznam načrtovanih dogodkov

// Retrieve 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();

Sinhronizacija vabljenih z Brevo

// Get invitees for a scheduled event and sync to 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]
});
}

Nastavitev naročnin na webhook

// Subscribe to Calendly events
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

Naslov example.com zgoraj je le nadomestni naslov, dokler končna točka Tajo ne bo na voljo.

Obravnava webhook dogodkov

app.post('/webhooks/calendly', async (req, res) => {
// Verify 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');
});

Omejitve hitrosti

VirOmejitevOpombe
Zahtevki API6.000/minOmejitev za celotno organizacijo
Naročnine na webhook30 na organizacijoVključno z vsemi vrstami dogodkov
Povezave za razporejanjeNeomejenoBrez omejitve na minuto

Paginacija

Odgovori Calendly API uporabljajo paginacijo na osnovi kazalca. Za pridobitev dodatnih rezultatov uporabi next_page_token iz objekta pagination. Privzeta velikost strani je 20 elementov, z največ 100.

Odpravljanje težav

TežavaVzrokRešitev
Webhook ni prejetNapačen obsegZa webhooks uporabi obseg organization
401 UnauthorizedŽeton je potekelUstvari nov žeton ali osveži OAuth žeton
Manjkajo podatki o vabljenemVprašanja niso konfiguriranaDodaj vprašanja po meri vrsti dogodka
Podvojeni stikiBrez logike deduplikacijeZa upsert operacije kot enolični identifikator uporabi e-mail
Omejitev hitrosti 429Preveč zahtevkovImplementiraj odlog in paketiranje zahtevkov

Način odpravljanja napak

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

Najboljše prakse

  1. Uporabi webhooks – naroči se na invitee.created in invitee.canceled za sinhronizacijo v realnem času
  2. Dodaj vprašanja po meri – zberi podatke o podjetju, vlogi in telefonu za bogatejše profile stikov
  3. Preslikaj vrste dogodkov – dodeliti različne sezname Brevo na vrste dogodkov Calendly
  4. Obravnavaj odsotnosti – sledi odsotnostim za prilagajanje ocenjevanja potencialnih kupcev in zaporedij nadaljnjih ukrepov
  5. Uporabi razporeditvene povezave – ustvari edinstvene razporeditvene povezave za personalizirane izkušnje rezervacij
  6. Nastavi obseg organizacije – za zajemanje dogodkov vseh članov ekipe uporabi webhooks na ravni organizacije

Varnost

  • OAuth 2.0 – avtentikacija na osnovi žetonov z omejenim obsegom
  • Podpisi webhookov – validacija podpisa HMAC za dohodne webhooks
  • Samo HTTPS – vse končne točke API zahtevajo šifriranje TLS
  • Potek žetona – OAuth žetoni potečejo in zahtevajo tokove osvežitve
  • Minimalni obsegi – zahtevaj samo potrebne obsege OAuth
  • Varno shranjevanje – shrani žetone v spremenljivkah okolja ali upraviteljih skrivnosti

Povezani viri

Zaprosite za zgodnji dostop

Vnesite svoje ime in službeni e-poštni naslov. Poslali vam bomo povezavo za potrditev zahteve za dostop do Taja.

AI pomočnik

Živjo! Vprašajte me o dokumentaciji.

Ta stran kot Markdown: calendly.md

Nalaganje Markdowna …
Odpri v Claude Odpri v ChatGPT