2 integration directions
Direction 1: Studeia → Zapier (Studeia events trigger external workflow)
Use case: student completes course → create Salesforce lead + notify Slack channel + send custom certificate email.
Setup:
- Zapier > New Zap > Trigger: Webhooks by Zapier > Catch Hook
- Zapier generates URL
- Studeia:
/institution/automations > New. Trigger: eventcourse_completed. Action:send_webhook> URL: Zapier hook - Body (template interpolation):
{
"studentName": "{{user.name}}",
"studentEmail": "{{user.email}}",
"courseId": "{{event.courseId}}",
"completedAt": "{{event.completedAt}}",
"score": "{{event.score}}"
}
- Test → continue Zap: add actions (Salesforce, Slack, Gmail, etc)
Available events: 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.
Direction 2: Zapier → Studeia (create/update resources via API)
Use case: new Hubspot lead → create student user + enroll in welcome course.
Setup:
- Studeia:
/institution/settings/api-keys > Create> scopes:users:write,enrollments:write> copy key (mia_+ 40 hex) - 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/json,Accept-Language: en-US - Body JSON:
{ "name": "{{contact.name}}", "email": "{{contact.email}}", "role": "student", "sendInvite": true }
- Continue Zap: another POST to /api/institution/enrollments with courseId
Rate limiting
API key rate limit per tier: Standard 1000 req/h, High 5000 req/h, Custom. Headers: X-RateLimit-*. 429 + Retry-After when exceeded. Zapier respects Retry-After automatically.
SSRF prevention (limitation)
Studeia webhook blocks private IPs and metadata endpoints. Zapier URLs (hooks.zapier.com) are public, always pass. Self-hosted n8n at private IP: needs public exposure (Cloudflare Tunnel, ngrok).
n8n self-hosted
n8n bonus: can be self-hosted (free vs Zapier $19+/mo). For high volume + sensitive data: n8n self-hosted makes more sense.
Roadmap
Official Zapier app (planning 2026 H2): native triggers (course_completed, enrollment_created, etc), native actions (Create user, Create enrollment, Update grade), OAuth 2.0 flow.