2 direcciones de integración
Dirección 1: Studeia → Zapier (eventos de Studeia disparan workflow externo)
Caso de uso: alumno completa un curso → crear lead en Salesforce + notificar canal de Slack + enviar certificado por email personalizado.
Setup:
- Zapier > New Zap > Trigger: Webhooks by Zapier > Catch Hook
- Zapier genera la URL:
https://hooks.zapier.com/hooks/catch/.../... - En Studeia:
/institution/automations > New Automation - Trigger: evento
course_completed - Conditions (opcional):
event.score >= 80 - Action:
send_webhook> Method: POST > URL: URL del hook de Zapier - Body (interpolación de plantilla):
{
"studentName": "{{user.name}}",
"studentEmail": "{{user.email}}",
"courseId": "{{event.courseId}}",
"completedAt": "{{event.completedAt}}",
"score": "{{event.score}}"
}
- Guardar automatización
- Zapier > Test trigger > completar un curso en Studeia > Zapier recibe el payload
- Continuar el Zap: agregar actions (Salesforce, Slack, Gmail, etc)
Eventos disponibles: lesson_completed, module_completed, course_completed, quiz_submitted, assignment_submitted, enrollment_created, enrollment_completed, forum_post_created, forum_reply_created, grade_posted, announcement_created, live_class_scheduled, live_class_started, student_inactive, tag_added_to_user, tag_removed_from_user, webhook_received, scheduled_trigger, badge_earned, level_up, contest_ended.
Dirección 2: Zapier → Studeia (crear/actualizar recursos vía API)
Caso de uso: nuevo lead en Hubspot → crear usuario alumno + matricular en curso de bienvenida.
Setup:
- En Studeia:
/institution/settings/api-keys > Create> scopes:users:write,enrollments:write - Copie la clave (formato
mia_+ 40 hex) — se muestra UNA ÚNICA VEZ - En Zapier:
- Trigger: Hubspot 'New Contact'
- Action: Webhooks by Zapier > POST
- URL:
https://[tenant].studeia.com/api/institution/users - Headers:
Authorization: Bearer mia_...Content-Type: application/jsonAccept-Language: es-ES
- Body JSON:
{
"name": "{{contact.name}}",
"email": "{{contact.email}}",
"role": "student",
"sendInvite": true
}
- Continuar el Zap: otra Action POST hacia
/api/institution/enrollmentscon courseId
Rate limiting
La API key de Studeia tiene rate limit por tier:
- Standard: 1000 req/hora
- High: 5000 req/hora
- Custom: configurable
Headers de respuesta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Al superarlo: 429 + Retry-After.
Zapier respeta Retry-After automáticamente. Para volumen alto: actualizar el tier de rate o usar batch operations.
Prevención de SSRF (limitación)
El webhook de Studeia bloquea IPs privadas (10.x, 192.168.x, etc) y endpoints de metadata (169.254.169.254) — anti-SSRF. Las URLs de Zapier (hooks.zapier.com) son públicas y siempre pasan.
Si aloja n8n self-hosted en una IP privada: necesita exponerlo públicamente (Cloudflare Tunnel, ngrok) para que Studeia pueda llamarlo.
n8n self-hosted
n8n tiene un patrón similar a Make/Zapier. El trigger 'Webhook' acepta POST de Studeia. La action 'HTTP Request' llama a la API de Studeia.
Ventaja de n8n: puede ser self-hosted (gratis vs Zapier $19+/mes). Para volumen alto + datos sensibles: n8n propio tiene más sentido.
Roadmap
App oficial Zapier (en planning 2026 H2):
- Triggers: course_completed, enrollment_created, etc nativos
- Actions: Create user, Create enrollment, Update grade, etc
- Flujo OAuth 2.0 (en lugar de copiar y pegar API key)
- Sin necesidad de Webhooks by Zapier genérico