Solicită acces anticipat

Introduceți prenumele și adresa de e-mail profesională. Vă vom trimite un link pentru a confirma cererea de acces la Tajo.

Conector Zoom

Starea conectorului: Planificat Încă neconstruit. Tajo nu rulează astăzi acest conector.

Ilustrație · date de exemplu

Exemplu de sincronizare

Verifică o înregistrare

Sursă

Zoom

Starea conectorului: Planificat

Destinație

Celălalt instrument al tău

Starea conectorului: Instrument personalizat

Câmp sursăCâmp destinațieValoare exemplu
record.id source_id record_1042
record.updated_at updated_at 2026-10-18T08:00:00Z
record.value value sample_value
  1. Ciornă
  2. Verifică o înregistrare
  3. Aprobă această versiune

Stările se referă la fiecare conector și nu garantează că această sincronizare este pregătită. Câmpurile sunt ilustrative. Verifică schema și permisiunile reale înainte de sincronizare.

Conectați Zoom la Brevo prin Tajo pentru a sincroniza automat participanții la întâlniri și participanții la webinare ca contacte, a declanșa secvențe de urmărire post-întâlnire și a urmări metricile de implicare pentru automatizările de marketing.

Prezentare generală

ProprietateValoare
PlatformăZoom
CategorieConferințe video (Personalizat)
Complexitate configurareMedie
Integrare oficialăNu
Date sincronizateParticipanți, Evenimente, Webinare, Contacte
Metodă de autentificareOAuth 2.0 / Server-to-Server OAuth

Funcționalități

  • Sincronizare participanți - Creați automat contacte Brevo din participanții la întâlniri
  • Captură participanți webinar - Sincronizați înregistrații și participanții la webinar
  • Declanșatoare evenimente întâlnire - Declanșați automatizări la începutul, sfârșitul și evenimentele de înregistrare ale întâlnirilor
  • Urmărire implicare - Urmăriți durata participării și metricile de participare
  • Urmărire post-webinar - Declanșați secvențe de e-mail targetate bazate pe participarea la webinar
  • Notificări înregistrări - Trimiteți linkuri de înregistrare prin campaniile de e-mail Brevo

Cerințe preliminare

Înainte de a începe, asigurați-vă că aveți:

  1. Un cont Zoom (plan Pro sau superior)
  2. O aplicație Zoom Server-to-Server OAuth sau OAuth prin Zoom App Marketplace
  3. Un cont Brevo cu acces API
  4. Un cont Tajo cu permisiuni de conector

Autentificare

Server-to-Server OAuth (Recomandat)

Terminal window
# Create a Server-to-Server OAuth app at marketplace.zoom.us
export ZOOM_ACCOUNT_ID=your_account_id
export ZOOM_CLIENT_ID=your_client_id
export ZOOM_CLIENT_SECRET=your_client_secret
// Get access token via Server-to-Server OAuth
const tokenResponse = await fetch('https://zoom.us/oauth/token', {
method: 'POST',
headers: {
'Authorization': `Basic ${Buffer.from(
`${process.env.ZOOM_CLIENT_ID}:${process.env.ZOOM_CLIENT_SECRET}`
).toString('base64')}`,
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
grant_type: 'account_credentials',
account_id: process.env.ZOOM_ACCOUNT_ID
})
});
const { access_token } = await tokenResponse.json();

OAuth 2.0 (La nivel de utilizator)

// Authorization URL for user-level OAuth
const authUrl = 'https://zoom.us/oauth/authorize?' +
new URLSearchParams({
client_id: process.env.ZOOM_CLIENT_ID,
redirect_uri: 'https://your-app.com/callback',
response_type: 'code'
});
// Exchange code for tokens
const tokenResponse = await fetch('https://zoom.us/oauth/token', {
method: 'POST',
headers: {
'Authorization': `Basic ${Buffer.from(
`${process.env.ZOOM_CLIENT_ID}:${process.env.ZOOM_CLIENT_SECRET}`
).toString('base64')}`,
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
grant_type: 'authorization_code',
code: authorizationCode,
redirect_uri: 'https://your-app.com/callback'
})
});

Configurare

Configurare de bază

connectors:
zoom:
enabled: true
account_id: "${ZOOM_ACCOUNT_ID}"
client_id: "${ZOOM_CLIENT_ID}"
client_secret: "${ZOOM_CLIENT_SECRET}"
sync:
participants: true
webinars: true
recordings: true
webhook:
secret_token: "${ZOOM_WEBHOOK_SECRET}"
verification_token: "${ZOOM_VERIFICATION_TOKEN}"
lists:
meeting_participants: 15
webinar_attendees: 16
webinar_registrants: 17

Mapare câmpuri

field_mapping:
email: email
name: FIRSTNAME
join_time: MEETING_JOIN_DATE
duration: MEETING_DURATION
webinar_title: WEBINAR_NAME
attendance_status: ATTENDANCE_STATUS
registration_source: UTM_SOURCE

Puncte finale API

Punct finalMetodăDescriere
https://api.zoom.us/v2/usersGETListează utilizatorii
https://api.zoom.us/v2/users/{userId}/meetingsGETListează întâlnirile
https://api.zoom.us/v2/meetings/{meetingId}GETObține detalii întâlnire
https://api.zoom.us/v2/past_meetings/{meetingId}/participantsGETListează participanții la întâlnirile trecute
https://api.zoom.us/v2/users/{userId}/webinarsGETListează webinarele
https://api.zoom.us/v2/webinars/{webinarId}/registrantsGETListează înregistrații la webinar
https://api.zoom.us/v2/webinars/{webinarId}/participantsGETListează participanții la webinar
https://api.zoom.us/v2/meetings/{meetingId}/recordingsGETObține înregistrările întâlnirii
https://api.zoom.us/v2/webhooksPOSTAbonați la webhook-uri

Exemple de cod

Inițializare conector

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('zoom', {
accountId: process.env.ZOOM_ACCOUNT_ID,
clientId: process.env.ZOOM_CLIENT_ID,
clientSecret: process.env.ZOOM_CLIENT_SECRET
});

Sincronizare participanți întâlnire

// Retrieve past meeting participants
const response = await fetch(
`https://api.zoom.us/v2/past_meetings/${meetingId}/participants`,
{
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json'
}
}
);
const { participants } = await response.json();
for (const participant of participants) {
if (participant.user_email) {
await tajo.contacts.sync({
email: participant.user_email,
attributes: {
FIRSTNAME: participant.name,
MEETING_DURATION: participant.duration,
MEETING_JOIN_DATE: participant.join_time,
ATTENDANCE_STATUS: 'attended'
},
listIds: [15]
});
}
}

Sincronizare participanți webinar

// Get webinar attendees and sync to Brevo
const attendeesResponse = await fetch(
`https://api.zoom.us/v2/past_webinars/${webinarId}/participants`,
{
headers: { 'Authorization': `Bearer ${accessToken}` }
}
);
const { participants: attendees } = await attendeesResponse.json();
for (const attendee of attendees) {
await tajo.contacts.sync({
email: attendee.user_email,
attributes: {
FIRSTNAME: attendee.name,
WEBINAR_NAME: webinarTitle,
ATTENDANCE_STATUS: 'attended',
MEETING_DURATION: attendee.duration
},
listIds: [16]
});
}

Gestionare webhook-uri Zoom

app.post('/webhooks/zoom', async (req, res) => {
// Handle Zoom URL validation challenge
if (req.body.event === 'endpoint.url_validation') {
const hashForValidation = crypto
.createHmac('sha256', process.env.ZOOM_WEBHOOK_SECRET)
.update(req.body.payload.plainToken)
.digest('hex');
return res.json({
plainToken: req.body.payload.plainToken,
encryptedToken: hashForValidation
});
}
// Verify webhook signature
const message = `v0:${req.headers['x-zm-request-timestamp']}:${JSON.stringify(req.body)}`;
const hash = crypto
.createHmac('sha256', process.env.ZOOM_WEBHOOK_SECRET)
.update(message)
.digest('hex');
const signature = `v0=${hash}`;
if (req.headers['x-zm-signature'] !== signature) {
return res.status(401).send('Unauthorized');
}
const { event, payload } = req.body;
await tajo.connectors.handleWebhook('zoom', {
topic: event,
payload: payload
});
res.status(200).send('OK');
});

Limite de rată

CategorieLimităNote
Apeluri API ușoare30 cereri/secGET utilizator, informații întâlnire
Apeluri API medii20 cereri/secListare participanți, webinare
Apeluri API grele10 cereri/secRapoarte, înregistrări
Limită zilnică5.000+Depinde de nivelul planului

Anteturi limite de rată

Zoom returnează anteturile X-RateLimit-Limit, X-RateLimit-Remaining și Retry-After. Implementați logică de backoff bazată pe aceste anteturi pentru a evita erorile 429.

Depanare

ProblemăCauzăSoluție
401 NeautorizatToken expiratReîmprospătați token-ul Server-to-Server OAuth
Participanți lipsăÎntâlnire neterminatăAșteptați până la terminarea întâlnirii pentru date complete
Validare webhook eșuatăSecret incorectVerificați secretul webhook în Zoom Marketplace
Fără date e-mailParticipanți oaspețiActivați înregistrarea pentru a captura e-mailurile
Limită de rată 429Prea multe cereriImplementați backoff exponențial

Modul de depanare

connectors:
zoom:
debug: true
log_level: verbose
log_webhooks: true

Bune practici

  1. Utilizați Server-to-Server OAuth - Autentificare mai simplă fără interacțiunea utilizatorului
  2. Activați înregistrarea la webinar - Necesară pentru a captura adresele de e-mail ale participanților
  3. Procesați după terminarea întâlnirii - Datele participanților sunt complete doar după terminarea întâlnirilor
  4. Segmentați după tipul evenimentului - Atribuiți liste Brevo diferite pentru întâlniri față de webinare
  5. Urmăriți metricile de implicare - Utilizați durata și ora de conectare pentru scorarea lead-urilor
  6. Trimiteți urmăriri cu înregistrări - Automatizați livrarea linkului de înregistrare prin Brevo

Securitate

  • OAuth 2.0 - Autentificare OAuth Server-to-Server sau la nivel de utilizator
  • Verificare webhook - Validare semnătură HMAC-SHA256
  • Validare URL - Verificare provocare-răspuns pentru punctele finale webhook
  • Permisiuni cu scope - Solicitați scope-urile OAuth minime necesare
  • Rotație token - Token-urile Server-to-Server expiră automat (1 oră)
  • Transport criptat - TLS 1.2+ pentru toate comunicațiile API

Resurse conexe

Solicită acces anticipat

Introduceți prenumele și adresa de e-mail profesională. Vă vom trimite un link pentru a confirma cererea de acces la Tajo.

Asistent AI

Bună! Întreabă-mă orice despre documentație.

Această pagină în Markdown: zoom.md

Se încarcă Markdown…
Deschide în Claude Deschide în ChatGPT