Skip to main content

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