Webhook Events
Complete reference for all webhook event types.
Content Events
content.uploaded
Fired when a new recording is uploaded.
{
"event": "content.uploaded",
"data": {
"content_id": "cont_xxxxxxxxxxxx",
"filename": "sales-call.mp4",
"content_type": "video/mp4",
"size_bytes": 52428800
}
}
content.deleted
Fired when content is deleted.
{
"event": "content.deleted",
"data": {
"content_id": "cont_xxxxxxxxxxxx",
"filename": "sales-call.mp4"
}
}
Transcription Events
transcription.started
Fired when transcription begins.
{
"event": "transcription.started",
"data": {
"content_id": "cont_xxxxxxxxxxxx",
"filename": "sales-call.mp4"
}
}
transcription.completed
Fired when transcription finishes successfully.
{
"event": "transcription.completed",
"data": {
"content_id": "cont_xxxxxxxxxxxx",
"filename": "sales-call.mp4",
"duration_seconds": 1847,
"word_count": 2847,
"language": "en",
"processing_time_ms": 45200
}
}
transcription.failed
Fired when transcription fails.
{
"event": "transcription.failed",
"data": {
"content_id": "cont_xxxxxxxxxxxx",
"filename": "sales-call.mp4",
"error": "Unsupported audio format"
}
}
Analysis Events
content_analysis.started
Fired when analysis begins.
{
"event": "content_analysis.started",
"data": {
"content_id": "cont_xxxxxxxxxxxx",
"analysis_id": "ana_xxxxxxxxxxxx",
"prompt_id": "prompt_xxxxxxxxxxxx",
"prompt_name": "Sales Call Analysis"
}
}
content_analysis.completed
Fired when analysis finishes successfully.
{
"event": "content_analysis.completed",
"data": {
"content_id": "cont_xxxxxxxxxxxx",
"analysis_id": "ana_xxxxxxxxxxxx",
"filename": "sales-call.mp4",
"prompt_id": "prompt_xxxxxxxxxxxx",
"prompt_name": "Sales Call Analysis",
"version": 1,
"confidence_score": 87,
"key_insights": {
"summary": "Discovery call with interested prospect...",
"sentiment": "positive",
"deal_probability": 0.75
},
"processing_time_ms": 3420,
"model_used": "gpt-4o"
}
}
content_analysis.failed
Fired when analysis fails.
{
"event": "content_analysis.failed",
"data": {
"content_id": "cont_xxxxxxxxxxxx",
"analysis_id": "ana_xxxxxxxxxxxx",
"prompt_id": "prompt_xxxxxxxxxxxx",
"error": "Model rate limit exceeded"
}
}
content_analysis.needs_review
Fired when analysis has low confidence (< 50%).
{
"event": "content_analysis.needs_review",
"data": {
"content_id": "cont_xxxxxxxxxxxx",
"analysis_id": "ana_xxxxxxxxxxxx",
"confidence_score": 42,
"reason": "Ambiguous sentiment detected"
}
}
Project Insights Events
project_insights.started
Fired when project insights generation begins.
{
"event": "project_insights.started",
"data": {
"insights_id": "ins_xxxxxxxxxxxx",
"lookback_days": 30,
"content_count": 47
}
}
project_insights.completed
Fired when project insights are ready.
{
"event": "project_insights.completed",
"data": {
"insights_id": "ins_xxxxxxxxxxxx",
"content_analyzed": 47,
"lookback_days": 30,
"key_findings": {
"top_themes": ["pricing", "implementation", "integrations"],
"sentiment_trend": "improving",
"recommendation_count": 5
}
}
}
project_insights.failed
Fired when project insights generation fails.
{
"event": "project_insights.failed",
"data": {
"insights_id": "ins_xxxxxxxxxxxx",
"error": "Insufficient content for analysis"
}
}
Project Events
project.created
Fired when a new project is created.
{
"event": "project.created",
"data": {
"project_id": "proj_xxxxxxxxxxxx",
"name": "Sales Calls Q1",
"slug": "sales-calls-q1"
}
}
project.deleted
Fired when a project is deleted.
{
"event": "project.deleted",
"data": {
"project_id": "proj_xxxxxxxxxxxx",
"name": "Sales Calls Q1"
}
}
Member Events
member.invited
Fired when a member is invited.
{
"event": "member.invited",
"data": {
"email": "new.member@example.com",
"role": "member",
"invited_by": "admin@example.com"
}
}
member.joined
Fired when an invited member accepts and joins.
{
"event": "member.joined",
"data": {
"member_id": "mem_xxxxxxxxxxxx",
"email": "new.member@example.com",
"role": "member"
}
}
member.role_changed
Fired when a member's role is updated.
{
"event": "member.role_changed",
"data": {
"member_id": "mem_xxxxxxxxxxxx",
"email": "member@example.com",
"old_role": "member",
"new_role": "admin"
}
}
member.removed
Fired when a member is removed.
{
"event": "member.removed",
"data": {
"member_id": "mem_xxxxxxxxxxxx",
"email": "former.member@example.com"
}
}
invitation.revoked
Fired when a pending invitation is revoked.
{
"event": "invitation.revoked",
"data": {
"email": "pending@example.com",
"revoked_by": "admin@example.com"
}
}