Called after the call ends with a summary and optional structured analysis. This is the most commonly used webhook for CRM integrations.When It's Called#
After the call ends, Flireo:1.
Generates an AI summary of the conversation
2.
Runs structured analysis (if analysisPlan was configured)
3.
Sends the report to your webhook
Request Payload#
{
"message": {
"type": "end-of-call-report",
"timestamp": "2025-12-13T12:05:30.000Z",
"call": {
"id": "5c4d030f-43e3-4e65-899e-8148521e660f",
"type": "inboundPhoneCall",
"status": "ended"
},
"phoneNumber": {
"number": "+31850835037",
"name": "Flireo Demo"
},
"customer": {
"number": "+31612345678"
},
"durationSeconds": 84,
"summary": "Klant vroeg naar openingstijden en wilde een afspraak maken voor volgende week.",
"analysis": {
"sentiment": 8,
"hoofdonderwerp": "Afspraak maken",
"vraag_beantwoord": true,
"gesprek_kwaliteit": "Goed"
}
}
}
Payload Fields#
| Field | Type | Always Present | Description |
|---|
durationSeconds | integer | Yes | Total call duration |
summary | string | Yes | AI-generated summary |
analysis | object | No | Structured analysis (if configured) |
Response#
The response body is ignored. Return any 2xx status code to acknowledge receipt.Analysis Configuration#
To get structured analysis, configure analysisPlan on your agent:{
"analysis_plan": {
"structuredDataPlan": {
"enabled": true,
"schema": {
"type": "object",
"properties": {
"sentiment": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Customer sentiment score 1-10"
},
"intent": {
"type": "string",
"enum": ["support", "sales", "complaint", "other"]
},
"resolved": {
"type": "boolean",
"description": "Whether the customer's issue was resolved"
},
"follow_up_needed": {
"type": "boolean"
}
}
},
"messages": [
{
"role": "system",
"content": "Analyze the call transcript according to the provided schema. Return valid JSON matching the schema."
},
{
"role": "user",
"content": "Schema: {{schema}}\n\nTranscript: {{transcript}}\n\nCall ended because: {{endedReason}}"
}
]
},
"minMessagesThreshold": 5
}
}
Analysis Plan Fields#
| Field | Description |
|---|
structuredDataPlan.enabled | Enable/disable analysis |
structuredDataPlan.schema | JSON Schema for output |
structuredDataPlan.messages | Prompt template with placeholders |
minMessagesThreshold | Min conversation messages before running |
Available Placeholders#
| Placeholder | Description |
|---|
{{schema}} | Your JSON Schema |
{{transcript}} | Full call transcript |
{{endedReason}} | Why the call ended |
Use Cases#
Sync call summaries to CRM
Track customer sentiment over time
Identify sales opportunities
Build analytics dashboards
Example Implementation (Node.js)#
Modified at 2025-12-29 14:26:49