Zai
04/24/2026, 2:57 PMAI Evy
04/24/2026, 2:57 PMAI Evy
04/24/2026, 2:58 PMAI Evy
04/24/2026, 2:58 PMAI Evy
04/24/2026, 2:58 PMAI Evy
04/24/2026, 2:58 PMZai
04/24/2026, 3:00 PMAI Evy
04/24/2026, 3:00 PMAI Evy
04/24/2026, 3:00 PMcall_analysis field with your custom extracted data
3. Retell AI Batch Dialer - Schedule the callback [(3) ]()
- Upload contact lists via CSV (up to 50 MB)
- Choose "Send Now" for immediate calls or "Schedule" for future timing
- Costs just $0.005 per dial
Do You Still Need GoHighLevel?
Based on the sources, you still need some middleware (which could be GHL or another automation tool) because:
- Retell AI extracts the callback data through Post-Call Analysis [(2) ]() [(1) ]()
- Retell AI can make the scheduled calls via Batch Dialer [(3) ]()
- However, Retell AI doesn't automatically connect these two features - you need something to receive the webhook data and trigger the batch call [(2) ]() [(3) ](AI Evy
04/24/2026, 3:00 PMcall_analyzed webhook and then creating scheduled batch calls [(4) ]() . Alternatively, you could build custom middleware without GHL if you prefer.
The key gap is that automatic callback scheduling based on conversation content isn't natively built into Retell AI - you need integration logic between the analysis output and batch calling input.AI Evy
04/24/2026, 3:00 PMAI Evy
04/24/2026, 3:00 PMZai
04/24/2026, 3:05 PMAI Evy
04/24/2026, 3:05 PMAI Evy
04/24/2026, 3:06 PMcall_analyzed event type containing your Post-Call Analysis data [(1) ]() [(2) ]()
Example Flow:
Retell AI → (sends POST) → Your Make.com/n8n/GHL webhook URL → (processes data) → Triggers next actionAI Evy
04/24/2026, 3:06 PMcall_analyzed webhook event (the third webhook sent per call) [(3) ]() .AI Evy
04/24/2026, 3:06 PMAI Evy
04/24/2026, 3:06 PMZai
04/24/2026, 3:07 PMAI Evy
04/24/2026, 3:07 PMAI Evy
04/24/2026, 3:07 PMjson
{
"event_type": "call_analyzed",
"call": {
// Call object with call_analysis field populated
}
}AI Evy
04/24/2026, 3:07 PMcall_analysis object contains your Post-Call Analysis data :
- `call_summary`: Text summary of the call [(2) ]()
- `user_sentiment`: Sentiment analysis
- `call_successful`: Boolean for success status
- `custom_analysis_data`: Your custom extraction fields
Setup Steps:
1. **In Make.com/n8n/GHL**: Create a webhook trigger and copy the webhook URL [(1) ]()
2. **In Retell AI Dashboard**: Paste that URL into your webhook configuration
3. **Subscribe to call_analyzed event**: This is the third webhook that contains Post-Call Analysis data [(3) ]()
4. **Retell AI handles the rest**: After each call ends and is analyzed, Retell automatically POSTs the data to your URL [(1) ]()
Important Note:
Post-Call Analysis variables are only sent in the call_analyzed webhook, not in call_started or call_ended webhooks [(3) ]() . Make sure you're listening for the correct event type.
You're receiving data, not sending it. Your automation tool just needs to be ready to accept Retell's POST requests [(1) ]() .AI Evy
04/24/2026, 3:07 PMAI Evy
04/24/2026, 3:07 PMZai
04/24/2026, 3:30 PMAI Evy
04/24/2026, 3:30 PMZai
04/24/2026, 3:31 PMAI Evy
04/24/2026, 3:31 PMjson
{
"event_type": "call_analyzed",
"call": {
// Call object with call_analysis field populated
}
}AI Evy
04/24/2026, 3:31 PMcall_analysis object contains [(2) ]() [(3) ]() :
- `call_summary`: Text summary of the conversation
- `user_sentiment`: Sentiment analysis
- `call_successful`: Boolean for success status
- `custom_analysis_data`: Your custom extraction fields
Method 3: Get Call API
Retrieve analysis results programmatically using the Get Call API [(1) ]() [(3) ]() . The response includes the call_analysis field with all analysis results .
For Your Specific Problem:
Since you're using Sympana Connector with GHL, you should:
1. Configure the call_analyzed webhook in Retell AI to point to your GHL or middleware endpoint [(1) ]()
2. Ensure your webhook is subscribed to the call_analyzed event type (this is the third webhook sent per call) [(4) ]()
3. Process the custom_analysis_data field to check if callback is needed [(1) ]() [(2) ]()
4. Trigger your callback workflow based on that data
Important Note: Post-Call Analysis fields are not populated for calls that were not connected or where no conversation took place [(1) ]() . Always check whether the field exists before using it .AI Evy
04/24/2026, 3:31 PMAI Evy
04/24/2026, 3:31 PMZai
04/24/2026, 3:31 PMAI Evy
04/24/2026, 3:31 PMAI Evy
04/24/2026, 3:31 PMcall_analyzed event to your GHL or middleware endpoint . The webhook payload will be :
json
{
"event_type": "call_analyzed",
"call": {
// Call object with call_analysis field populated
}
}AI Evy
04/24/2026, 3:31 PMcall_analyzed webhook is the third webhook sent per call [(4) ]() [(5) ]() . The Post-Call Analysis data (custom_analysis_data) only appears in this specific webhook event, not in call_started or call_ended .
Step 5: Trigger Callback Based on Analysis
Once you receive the call_analyzed webhook [(3) ]() :
1. Check the custom_analysis_data field for your callback indicators [(3) ]() [(6) ]()
2. If callback is needed, use Retell AI's Batch Dialer to schedule the callback call [(7) ]()
3. Upload the contact via CSV or API and choose "Schedule" to set the callback time
**Important Note**: Post-Call Analysis fields are not populated for calls that were not connected or where no conversation took place [(3) ]() [(1) ]() . Always verify the field exists before using it .
Common Issue with Make.com/GHL Integration [(4) ]() :
When testing in Make.com, you need to run the scenario with unprocessed data after making a test call . The custom_analysis_data variables only become selectable after you've processed the call_analyzed event at least once .AI Evy
04/24/2026, 3:31 PMAI Evy
04/24/2026, 3:31 PMZai
04/24/2026, 3:54 PMAI Evy
04/24/2026, 3:54 PMAI Evy
04/24/2026, 3:55 PMjson
{
"event_type": "call_analyzed",
"call": {
"call_id": "...",
"call_analysis": {
"call_summary": "...",
"user_sentiment": "...",
"call_successful": true,
"custom_analysis_data": {
"callback_requested": true,
"callback_time": "tomorrow at 2pm"
}
}
}
}
Your custom function schema and Post-Call Analysis are two separate systems that can work together - one for real-time data during calls, one for analyzed data after calls complete [(4) ]() [(1) ]() [(2) ]() [(3) ]() .AI Evy
04/24/2026, 3:55 PMcustom_analysis_data [(4) ]() [(5) ]() [(3) ]()
2. Set Up the call_analyzed Webhook [(4) ]()
- Point it to your GHL inbound webhook URL
- Subscribe to the call_analyzed event type
3. **GHL Will Receive Both**:
- Real-time data from your custom function (during call) [(1) ]() [(2) ]() [(3) ]()
- Post-Call Analysis data from call_analyzed webhook (after call) [(4) ]() [(5) ]() [(3) ]()
The call_analyzed Webhook Payload Structure: [(4) ]()AI Evy
04/24/2026, 3:55 PMcall_analyzed webhook event [(4) ]()
- Contains the call_analysis object with custom_analysis_data [(4) ]() [(5) ]() [(3) ]()
To Get Post-Call Analysis Data in GHL:
Your GHL inbound webhook can receive Post-Call Analysis data, but you need to:
1. Configure Post-Call Analysis in Retell AI (separate from your function schema) [(4) ](AI Evy
04/24/2026, 3:55 PMAI Evy
04/24/2026, 3:55 PMZai
04/24/2026, 3:57 PMAI Evy
04/24/2026, 3:57 PMAI Evy
04/24/2026, 3:57 PMbedrooms, property_condition, callback_requested, etc.
What's Missing for Post-Call Analysis:
To get Post-Call Analysis data (which is sent after the call via the call_analyzed webhook) , you need to separately configure Post-Call Analysis categories in your Retell AI agent settings [(3) ]() [(4) ]() .
The call_analyzed Webhook Payload Structure:
When Retell AI sends the call_analyzed event to your GHL inbound webhook, it will have this structure [(3) ]() :
json
{
"event": "call_analyzed",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"call_analysis": {
"call_summary": "...",
"user_sentiment": "Positive",
"call_successful": true,
"custom_analysis_data": {}
}
}
}AI Evy
04/24/2026, 3:58 PMcustom_analysis_data field will contain the Post-Call Analysis results you configure separately from your function schema [(5) ]() [(2) ]() .
Bottom Line:
- Your webhook schema is good for real-time data extraction during calls [(1) ]() [(2) ]()
- For Post-Call Analysis data after calls, you need to configure analysis categories in Retell AI dashboard separately [(3) ]() [(4) ]()
- Both can send data to the same GHL inbound webhook, but they arrive at different times and in different payload structures [(3) ]() [(1) ]() [(2) ]()AI Evy
04/24/2026, 3:58 PMAI Evy
04/24/2026, 3:58 PMZai
04/24/2026, 3:59 PMAI Evy
04/24/2026, 3:59 PMAI Evy
04/24/2026, 3:59 PMcall_analyzed event type .
Step 3: Webhook Payload Structure
When a call ends and is analyzed, Retell AI will automatically POST this payload to your GHL webhook :
json
{
"event_type": "call_analyzed",
"call": {
// Call object with call_analysis field populated
}
}AI Evy
04/24/2026, 3:59 PMcall_analysis object contains [(1) ]() [(3) ]() :
- `call_summary`: Text summary of the call
- `user_sentiment`: Sentiment analysis
- `call_successful`: Boolean for success status
- `custom_analysis_data`: Your custom extraction fields
Step 4: Receive Data in GHL
Your GHL inbound webhook will receive the call_analyzed event automatically after each call completes [(1) ]() . The analysis results are typically available within seconds of the call ending [(2) ]() .
Important Notes:
- Post-Call Analysis fields are NOT populated for calls that were not connected or where no conversation took place [(1) ]()
- Always check whether the field exists before using it
- The call_analyzed webhook is separate from any custom function webhooks you may have configuredAI Evy
04/24/2026, 3:59 PMAI Evy
04/24/2026, 4:00 PMZai
04/24/2026, 4:00 PMZai
04/24/2026, 4:00 PMAI Evy
04/24/2026, 4:00 PMAI Evy
04/24/2026, 4:01 PMcall_analyzed event, I need to know:
1. What platform/language are you using? (Node.js, Python, or another language)
2. What do you want to do with the data? (Send to GHL, store in database, trigger callback, etc.)
Based on the available documentation, here are webhook receiver examples for the most common platforms:
## Node.js Example [(1) ]()
javascript
// install the sdk: <https://docs.retellai.com/get-started/sdk>
import { Retell } from "retell-sdk";
import express from "express";
const app = express() ;
// Use raw body for signature verification, not JSON.stringify(req.body) .
app.use(express.raw({ type: "application/json" }) ) ;
app.post("/webhook", (req, res) => {
const rawBody = req.body.toString("utf-8") ;
if (
!Retell.verify(
rawBody,
process.env.RETELL_API_KEY,
req.headers["x-retell-signature"],
)
) {
console.error("Invalid signature") ;
return;
}
const {event, call} = JSON.parse(rawBody) ;
switch (event) {
case "call_started":
console.log("Call started event received", call.call_id) ;
break;
case "call_ended":
console.log("Call ended event received", call.call_id) ;
break;
case "call_analyzed":
console.log("Call analyzed event received", call.call_id) ;
break;
case "transcript_updated":
console.log("Transcript updated event received", call.call_id) ;
break;
case "transfer_started":
case "transfer_bridged":
case "transfer_cancelled":
case "transfer_ended":
console.log("Transfer event received", event, call.call_id) ;
break;
default:
console.log("Received an unknown event:", event) ;
}
// Acknowledge the receipt of the event
res.status(204) .send() ;
}) ;
## Python ExampleAI Evy
04/24/2026, 4:01 PMpython
from retell import Retell
from flask import Flask, request
app = Flask(__name__)
@app.route("/webhook", methods=["POST"])
def handle_webhook() :
raw_body = request.data.decode("utf-8")
if not Retell.verify(
raw_body,
os.environ["RETELL_API_KEY"],
request.headers.get("X-Retell-Signature")
) :
print("Invalid signature")
return "", 401
data = request.get_json()
event = data.get("event")
call = data.get("call")
if event == "call_analyzed":
print(f"Call analyzed: {call.get('call_id') }")
# Access Post-Call Analysis data
call_analysis = call.get("call_analysis", {})
custom_data = call_analysis.get("custom_analysis_data", {})
# Example: Check for callback request
if custom_data.get("callback_requested") :
callback_time = custom_data.get("callback_time")
print(f"Callback requested for: {callback_time}")
return "", 204
## Key Points About the Webhook
The webhook will POST the payload to your endpoint . The webhook has a timeout of 10 seconds . If within 10 seconds no success status (2xx) is received, the webhook will be retried, up to 3 times .
Tell me which platform you're using and what you want to do with the data, and I'll customize the code specifically for your GHL integration and callback workflow.AI Evy
04/24/2026, 4:01 PMAI Evy
04/24/2026, 4:01 PMZai
04/24/2026, 4:02 PMZai
04/24/2026, 4:02 PMAI Evy
04/24/2026, 4:02 PMAI Evy
04/24/2026, 4:02 PMcall_analyzed event type .
## Step 2: Webhook Receiver Code (Node.js) [(2) ]()
javascript
// install the sdk: <https://docs.retellai.com/get-started/sdk>
import { Retell } from "retell-sdk";
import express, { Request, Response } from "express";
const app = express() ;
app.use(express.json() ) ;
app.post("/webhook", (req: Request, res: Response) => {
const {event, call} = req.body;
switch (event) {
case "call_started":
console.log("Call started event received", call.call_id) ;
break;
case "call_ended":
console.log("Call ended event received", call.call_id) ;
break;
case "call_analyzed":
console.log("Call analyzed event received", call.call_id) ;
break;
default:
console.log("Received an unknown event:", event) ;
}
// Acknowledge the receipt of the event
res.status(204) .send() ;
}) ;
## Step 3: Extract Post-Call Analysis Data
When the call_analyzed event arrives, the payload structure will be [(1) ]() :
json
{
"event_type": "call_analyzed",
"call": {
}
}AI Evy
04/24/2026, 4:02 PMcall_analysis object contains [(1) ]() [(3) ]() [(4) ]() :
- `call_summary`: Text summary of the call
- `user_sentiment`: Sentiment analysis
- `call_successful`: Boolean for success status
- `custom_analysis_data`: Your custom extraction fields
## Step 4: Send to GHL Custom Fields
Inside the call_analyzed case, extract the custom analysis data and send it to your GHL API endpoint. The custom_analysis_data field will contain fields like callback_requested and callback_time that you configured in your Post-Call Analysis settings .
## Step 5: Trigger Callback
Based on the callback_requested boolean and callback_time fields in custom_analysis_data, trigger your callback workflow in GHL .
## Important Notes
Post-Call Analysis fields are NOT populated for calls that were not connected or where no conversation took place [(1) ]() . Always check whether the field exists before using it .
The call_analyzed webhook is the third webhook sent per call and is the only one containing Post-Call Analysis data [(5) ]() [(6) ]() .AI Evy
04/24/2026, 4:02 PMAI Evy
04/24/2026, 4:02 PMZai
04/24/2026, 4:04 PMAI Evy
04/24/2026, 4:04 PMAI Evy
04/24/2026, 4:04 PMcall_analyzed webhook.
## Complete Webhook Receiver Code
Here's the Node.js webhook receiver that handles both the custom function responses and the call_analyzed event with all your property fields:AI Evy
04/24/2026, 4:04 PMjavascript
import express from "express";
import { Retell } from "retell-sdk";
const app = express() ;
app.use(express.raw({ type: "application/json" }) ) ;
app.post("/webhook", (req, res) => {
const rawBody = req.body.toString("utf-8") ;
// Verify signature
if (
!Retell.verify(
rawBody,
process.env.RETELL_API_KEY,
req.headers["x-retell-signature"],
)
) {
console.error("Invalid signature") ;
return res.status(401) .send("Unauthorized") ;
}
const { event, call } = JSON.parse(rawBody) ;
switch (event) {
case "call_started":
console.log("Call started event received", call.call_id) ;
break;
case "call_ended":
console.log("Call ended event received", call.call_id) ;
break;
case "call_analyzed":
console.log("Call analyzed event received", call.call_id) ;
// Extract Post-Call Analysis data
const callAnalysis = call.call_analysis || {};
const customData = callAnalysis.custom_analysis_data || {};
// Prepare data for GHL
const ghlPayload = {
call_id: call.call_id,
call_summary: callAnalysis.call_summary,
user_sentiment: callAnalysis.user_sentiment,
call_successful: callAnalysis.call_successful,
// Property details from Post-Call Analysis
bedrooms: customData.bedrooms,
bathrooms: customData.bathrooms,
property_condition: customData.property_condition,
roof_condition: customData.roof_condition,
occupancy: customData.occupancy,
motivation_to_sell: customData.motivation_to_sell,
ideal_close_date: customData.ideal_close_date,
asking_price: customData.asking_price,
// Callback information
callback_requested: customData.callback_requested,
callback_time: customData.callback_timeAI Evy
04/24/2026, 4:04 PM};
// Send to GHL
sendToGHL(ghlPayload) ;
// Trigger callback workflow if requested
if (customData.callback_requested) {
triggerCallback(call.call_id, customData.callback_time) ;
}
break;
default:
console.log("Received an unknown event:", event) ;
}
res.status(204) .send() ;
}) ;
async function sendToGHL(payload) {
// Your GHL API endpoint
const ghlWebhookUrl = "YOUR_GHL_INBOUND_WEBHOOK_URL";
try {
const response = await fetch(ghlWebhookUrl, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
}) ;
if (response.ok) {
console.log("Data sent to GHL successfully") ;
} else {
console.error("Failed to send to GHL:", response.status) ;
}
} catch (error) {
console.error("Error sending to GHL:", error) ;
}
}
function triggerCallback(callId, callbackTime) {
console.log(`Scheduling callback for call ${callId} at ${callbackTime}`) ;
// Implement your callback scheduling logic here
// This could trigger a GHL workflow or use Retell's Batch Dialer
}
app.listen(3000, () => {
console.log("Webhook server running on port 3000") ;
}) ;AI Evy
04/24/2026, 4:04 PMbedrooms (Text type)
- bathrooms (Text type)
- property_condition (Text or Selector type)
- roof_condition (Text or Selector type)
- occupancy (Text or Selector type)
- motivation_to_sell (Text type)
- ideal_close_date (Text type)
- asking_price (Text type)
- callback_requested (Boolean type)
- callback_time (Text type)
Step 2: Register Webhook in Retell AI
Point your webhook to your server endpoint and subscribe to the call_analyzed event type.
Step 3: Keep Your Custom Function [(1) ]()
Your existing custom function schema can remain as-is for real-time data extraction during calls.
## Important Notes
Post-Call Analysis fields are NOT populated for calls that were not connected or where no conversation took place [(2) ]() . Always check whether fields exist before using them.
The call_analyzed webhook is the third webhook sent per call and contains the Post-Call Analysis data in the custom_analysis_data object [(2) ]() [(3) ]() .AI Evy
04/24/2026, 4:04 PMAI Evy
04/24/2026, 4:04 PMZai
04/24/2026, 4:05 PMAI Evy
04/24/2026, 4:05 PMAI Evy
04/24/2026, 4:06 PMcall_analyzed webhook payload from Retell AI is already in JSON format [(1) ]() [(2) ]() . When Retell AI sends the webhook to your endpoint, it POSTs a JSON payload [(2) ]() .
Here's the exact JSON structure you'll receive from the call_analyzed webhook [(1) ]() [(2) ]() :
json
{
"event_type": "call_analyzed",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
"call_analysis": {
"call_summary": "The agent called the user to ask question about his purchase inquiry. The agent asked several questions regarding his preference and asked if user would like to book an appointment. The user happily agreed and scheduled an appointment next Monday 10am.",
"in_voicemail": false,
"user_sentiment": "Positive",
"call_successful": true,
"custom_analysis_data": {}
}
}
}
[(2) ]()
The custom_analysis_data object will contain your custom Post-Call Analysis fields [(1) ]() [(3) ]() . Based on your property fields, it would look like:AI Evy
04/24/2026, 4:06 PMjson
{
"event_type": "call_analyzed",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"call_analysis": {
"call_summary": "Summary text here",
"user_sentiment": "Positive",
"call_successful": true,
"custom_analysis_data": {
"bedrooms": "3",
"bathrooms": "2",
"property_condition": "Good",
"roof_condition": "Needs repair",
"occupancy": "Owner occupied",
"motivation_to_sell": "Relocating for work",
"ideal_close_date": "2026-06-15",
"asking_price": "350000",
"callback_requested": true,
"callback_time": "tomorrow at 2pm"
}
}
}
}
Your GHL inbound webhook will receive this JSON payload automatically after each call completes and is analyzed [(1) ]() [(2) ]() . The webhook has a timeout of 10 seconds [(2) ]() .AI Evy
04/24/2026, 4:06 PMAI Evy
04/24/2026, 4:06 PMZai
04/24/2026, 4:10 PMAI Evy
04/24/2026, 4:10 PMAI Evy
04/24/2026, 4:10 PMcall_started - When call begins
2. call_ended - When call finishes
3. call_analyzed - When Post-Call Analysis completes (contains your custom extraction data)
You can filter to receive ONLY the call_analyzed webhook to avoid multiple payloads hitting GHL . Here's how to set up a single webhook that only processes Post-Call Analysis data:
## Single Webhook Solution
Configure your webhook to only subscribe to the call_analyzed event type . This ensures GHL receives just one payload per call containing all your property fields.
The call_analyzed event includes everything you need in custom_analysis_data [(1) ]() [(2) ]() [(3) ]() :
json
{
"event_type": "call_analyzed",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"call_analysis": {
"call_summary": "Summary text here",
"user_sentiment": "Positive",
"call_successful": true,
"custom_analysis_data": {
"bedrooms": "3",
"bathrooms": "2",
"property_condition": "Good",
"roof_condition": "Needs repair",
"occupancy": "Owner occupied",
"motivation_to_sell": "Relocating for work",
"ideal_close_date": "2026-06-15",
"asking_price": "350000",
"callback_requested": true,
"callback_time": "tomorrow at 2pm"
}
}
}
}AI Evy
04/24/2026, 4:10 PMAI Evy
04/24/2026, 4:10 PMAI Evy
04/24/2026, 4:10 PMZai
04/24/2026, 4:35 PMZai
04/24/2026, 4:36 PMAI Evy
04/24/2026, 4:36 PMAI Evy
04/24/2026, 4:36 PMcall_analyzed webhook payload already includes phone number information for outbound calls. Here's the updated JSON structure showing the phone number fields [(1) ]() [(2) ]() [(3) ]() :
json
{
"event_type": "call_analyzed",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"call_type": "phone_call",
"from_number": "+14157774444",
"to_number": "+12137774445",
"direction": "outbound",
"call_analysis": {
"call_summary": "Summary text here",
"user_sentiment": "Positive",
"call_successful": true,
"custom_analysis_data": {
"bedrooms": "3",
"bathrooms": "2",
"property_condition": "Good",
"roof_condition": "Needs repair",
"occupancy": "Owner occupied",
"motivation_to_sell": "Relocating for work",
"ideal_close_date": "2026-06-15",
"asking_price": "350000",
"callback_requested": true,
"callback_time": "tomorrow at 2pm"
}
}
}
}
The key fields for outbound calls are :
- **`from_number`**: Your Retell-managed or imported number (the number you're calling from)
- **`to_number`**: The destination number (the customer you called)
- **`direction`**: Will be "outbound" for outbound calls
When you send data to GHL, include these phone number fields in your payload:AI Evy
04/24/2026, 4:36 PMjavascript
const ghlPayload = {
call_id: call.call_id,
from_number: call.from_number,
to_number: call.to_number,
direction: call.direction,
call_summary: callAnalysis.call_summary,
user_sentiment: callAnalysis.user_sentiment,
call_successful: callAnalysis.call_successful,
// Property details
bedrooms: customData.bedrooms,
bathrooms: customData.bathrooms,
property_condition: customData.property_condition,
roof_condition: customData.roof_condition,
occupancy: customData.occupancy,
motivation_to_sell: customData.motivation_to_sell,
ideal_close_date: customData.ideal_close_date,
asking_price: customData.asking_price,
// Callback information
callback_requested: customData.callback_requested,
callback_time: customData.callback_time
};
This gives you complete tracking of which number you called from and which customer number you reached .AI Evy
04/24/2026, 4:36 PMAI Evy
04/24/2026, 4:36 PMZai
04/29/2026, 6:54 AMAI Evy
04/29/2026, 6:54 AMAI Evy
04/29/2026, 6:54 AMjson
{
"event_type": "call_analyzed",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"from_number": "+14157774444",
"to_number": "+12137774445",
"direction": "outbound",
"call_analysis": {
"call_summary": "Summary text here",
"user_sentiment": "Positive",
"call_successful": true,
"custom_analysis_data": {
"bedrooms": "3",
"bathrooms": "2",
"property_condition": "Good",
"roof_condition": "Needs repair",
"occupancy": "Owner occupied",
"motivation_to_sell": "Relocating for work",
"ideal_close_date": "2026-06-15",
"asking_price": "350000",
"callback_requested": true,
"callback_time": "tomorrow at 2pm"
}
}
}
}
Step 4: GHL Processes the Data
Your GHL inbound webhook receives the call_analyzed event [(1) ]() . Map the fields from custom_analysis_data to your GHL custom fields [(1) ]() [(2) ]() .
Step 5: Trigger Callback Workflow in GHL
When callback_requested is true, use the callback_time value to trigger your GHL workflow that schedules the callback .
## Important Notes
Post-Call Analysis fields are NOT populated for calls that were not connected or where no conversation took place [(1) ]() . Always check whether the field exists before using it .
The call_analyzed webhook is the third webhook sent per call and is the only one containing Post-Call Analysis data .AI Evy
04/29/2026, 6:54 AMcallback_requested (Boolean type) - Whether user wants a callback
- callback_time (Text type) - When they want to be called back
- bedrooms (Text type)
- bathrooms (Text type)
- property_condition (Text type)
- roof_condition (Text type)
- occupancy (Text type)
- motivation_to_sell (Text type)
- ideal_close_date (Text type)
- asking_price (Text type)
Step 2: Set Up Webhook in Retell AI Dashboard
Configure a webhook pointing to your GHL inbound webhook URL and subscribe to ONLY the call_analyzed event type .
Step 3: Receive the Webhook Payload
After each call ends and is analyzed, Retell AI will POST this JSON payload to your GHL webhook [(1) ]() [(2) ]() :AI Evy
04/29/2026, 6:54 AMAI Evy
04/29/2026, 6:54 AMZai
04/29/2026, 6:56 AMAI Evy
04/29/2026, 6:56 AMAI Evy
04/29/2026, 6:57 AMcallback_requested (Boolean)
- callback_time (Text)
- All your property fields (bedrooms, bathrooms, etc.)
Step 3: Receive call_analyzed Webhook in GHL
When a call completes, Retell AI sends the call_analyzed webhook to your GHL inbound webhook URL [(1) ]() . This webhook contains all your extracted data in custom_analysis_data .
Step 4: GHL Workflow Triggers Callback
In GHL, when the webhook arrives with callback_requested: true, your existing second webhook workflow triggers to schedule the callback using the callback_time value.
Step 5: Callback Execution
When it's time for the callback, your GHL workflow can trigger a new outbound call through Retell AI by calling the Create Phone Call API again [(2) ]() .
## What You Need
I don't have specific documentation about automated callback scheduling within Retell AI itself. You may want to check the [official documentation](https://AI Evy
04/29/2026, 6:57 AMAI Evy
04/29/2026, 6:57 AMAI Evy
04/29/2026, 6:57 AMZai
04/29/2026, 6:58 AMAI Evy
04/29/2026, 6:58 AMAI Evy
04/29/2026, 6:59 AMjavascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: process.env['RETELL_API_KEY'],
}) ;
const phoneCallResponse = await client.call.createPhoneCall({
from_number: '+14157774444',
to_number: '+12137774445',
}) ;
*Callback Scheduling (When User Says "Call Me Back") *
After the initial call completes, Retell AI sends the call_analyzed webhook to GHL containing callback_requested: true and callback_time . Your GHL workflow stores this information and schedules the callback.
*Executing the Callback (Second Touch) *
When it's time for the callback, your GHL workflow triggers another outbound call using the same agent through the Create Phone Call API again :
javascript
const callbackResponse = await client.call.createPhoneCall({
from_number: '+14157774444',
to_number: '+12137774445',
}) ;
The key insight: You're using the same agent for both calls, but making two separate API calls - one for the initial outbound call, and another for the callback .
## How to Customize the Agent's Behavior for Callbacks
If you need the agent to behave differently during callbacks (e.g., "Hi, this is the callback you requested") , you can pass dynamic variables when creating the callback call :AI Evy
04/29/2026, 6:59 AMjavascript
const callbackResponse = await client.call.createPhoneCall({
from_number: '+14157774444',
to_number: '+12137774445',
retell_llm_dynamic_variables: {
is_callback: "true",
original_request_time: "yesterday at 2pm"
}
}) ;
These dynamic variables inject into your agent's prompt, allowing it to acknowledge it's a callback .
## Summary
One agent handles both scenarios by making two separate API calls through the Create Phone Call endpoint - the initial call and the scheduled callback . GHL orchestrates the timing between these calls based on the callback_time extracted from the first call's analysis .AI Evy
04/29/2026, 6:59 AMAI Evy
04/29/2026, 6:59 AMZai
04/29/2026, 7:01 AMAI Evy
04/29/2026, 7:01 AMAI Evy
04/29/2026, 7:01 AMcallback_requested and callback_time from the conversation [(1) ]() .
Step 2: Retell AI Sends call_analyzed Webhook to GHL
After the call ends and is analyzed, Retell AI sends this JSON payload to your GHL webhook [(1) ]() [(2) ]() :
json
{
"event_type": "call_analyzed",
"call": {
"call_analysis": {
"custom_analysis_data": {
"callback_requested": true,
"callback_time": "2pm"
}
}
}
}
[(1) ]()
Step 3: GHL Workflow Schedules the Callback
Your Go High Level workflow receives this webhook and:
- Checks if callback_requested is true
- Parses the callback_time value ("2pm", "tomorrow at 2pm", etc.)
- Schedules a delayed action/wait step in GHL until that time
Step 4: GHL Triggers New Retell AI Call at Scheduled Time
When the scheduled time arrives, your GHL workflow makes a new API call to Retell AI's Create Phone Call endpoint [(2) ]() :
javascript
const callbackResponse = await client.call.createPhoneCall({
from_number: '+14157774444',
to_number: '+12137774445',
retell_llm_dynamic_variables: {
is_callback: "true"
}
}) ;AI Evy
04/29/2026, 7:01 AMAI Evy
04/29/2026, 7:01 AMAI Evy
04/29/2026, 7:01 AMZai
04/29/2026, 7:02 AMAI Evy
04/29/2026, 7:02 AMAI Evy
04/29/2026, 7:02 AMjavascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: process.env['RETELL_API_KEY'],
}) ;
const phoneCallResponse = await client.call.createPhoneCall({
from_number: '+14157774444',
to_number: '+12137774445',
}) ;
Step 3: Post-Call Data Extraction
After the call ends, Retell AI automatically analyzes the conversation and sends a call_analyzed webhook to your GHL inbound webhook URL [(2) ]() . The webhook payload contains [(2) ]() [(1) ]() [(3) ]() :AI Evy
04/29/2026, 7:02 AMjson
{
"event_type": "call_analyzed",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"from_number": "+14157774444",
"to_number": "+12137774445",
"direction": "outbound",
"call_analysis": {
"call_summary": "Summary text here",
"user_sentiment": "Positive",
"call_successful": true,
"custom_analysis_data": {
"bedrooms": "3",
"bathrooms": "2",
"property_condition": "Good",
"roof_condition": "Needs repair",
"occupancy": "Owner occupied",
"motivation_to_sell": "Relocating for work",
"ideal_close_date": "2026-06-15",
"asking_price": "350000",
"callback_requested": true,
"callback_time": "tomorrow at 2pm"
}
}
}
}
[(2) ]()
Step 4: GHL Processes Webhook Data
Your GHL inbound webhook receives the call_analyzed event . Map all fields from custom_analysis_data to your GHL custom fields [(2) ]() [(3) ]() .
Step 5: Tag Leads Requesting Callbacks
In GHL, when callback_requested is true, add a tag to the contact indicating they requested a callback.
Step 6: GHL Workflow Schedules Callback
Your second GHL webhook workflow:
- Checks if the contact has the callback tag
- Parses the callback_time value ("2pm", "tomorrow at 2pm", etc.)
- Uses GHL's wait/delay action to schedule the callback for that specific time
Step 7: Execute Scheduled Callback
When the scheduled time arrives, your GHL workflow triggers a new outbound call to Retell AI using the Create Phone Call API again [(1) ]() :AI Evy
04/29/2026, 7:02 AMjavascript
const callbackResponse = await client.call.createPhoneCall({
from_number: '+14157774444',
to_number: '+12137774445',
retell_llm_dynamic_variables: {
is_callback: "true",
original_request_time: "yesterday at 2pm"
}
}) ;
Step 8: Callback Call Completes
The callback call follows the same flow as Step 3-4, sending another call_analyzed webhook to GHL with updated information.
## Key Configuration Requirements
In Retell AI Dashboard:
- Configure Post-Call Analysis with custom fields: callback_requested (Boolean) , callback_time (Text) , bedrooms, bathrooms, property_condition, roof_condition, occupancy, motivation_to_sell, ideal_close_date, asking_price [(2) ]()
- Set up webhook pointing to your GHL inbound webhook URL
- Subscribe to ONLY the call_analyzed event type to avoid multiple webhooks
In Go High Level:
- Inbound webhook to receive call_analyzed events from Retell AI
- Workflow to map extracted data to custom fields
- Workflow to tag contacts when callback_requested is true
- Second workflow with wait/delay action to schedule callbacks based on callback_time
- Workflow to trigger new Retell AI calls at scheduled times
## Important Notes
Post-Call Analysis fields are NOT populated for calls that were not connected or where no conversation took place . Always check whether fields exist before using them in GHL workflows.
You're using the same Retell AI agent for both initial calls and callbacks, but making two separate API calls through the Create Phone Call endpoint [(1) ]() .AI Evy
04/29/2026, 7:02 AMAI Evy
04/29/2026, 7:02 AMZai
05/02/2026, 12:48 PMAI Evy
05/02/2026, 12:48 PMAI Evy
05/02/2026, 12:48 PMcall_analyzed webhook from Retell AI
4. GHL workflows process the data and trigger automations
Retell AI sends webhooks to GHL—it doesn't receive webhooks from GHL to trigger simulations. Simulation Testing is a separate testing tool that runs independently within the Retell AI platform .
If you want to test your full system including GHL automation, you would need to make actual test calls through Retell AI, which would then trigger your real GHL webhooks and workflows.AI Evy
05/02/2026, 12:48 PMAI Evy
05/02/2026, 12:48 PMZai
05/02/2026, 12:49 PMAI Evy
05/02/2026, 12:49 PMAI Evy
05/02/2026, 12:49 PMjavascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: process.env['RETELL_API_KEY'],
}) ;
const webCallResponse = await client.call.createWebCall({
agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',
}) ;
This returns an access_token that you can use to join the call from your browser instead of your phone .
## Alternative: Test with a Different Number
If you need to test actual phone calls, you could:
1. Use a different phone number for testing (friend's phone, Google Voice number, etc.)
2. Check your phone number configuration - ensure the inbound agent is properly bound to your number [(2) ]()
3. Verify your number settings - check that your number accepts inbound calls and doesn't have country restrictions blocking your test calls [(3) ]()
For inbound calls to work, you must bind an agent to your phone number [(2) ]() . You can configure this in your phone number settings [(2) ]() [(3) ]() .
If you're using imported numbers via SIP trunking, verify your origination settings with your telephony provider [(4) ]() .AI Evy
05/02/2026, 12:50 PMAI Evy
05/02/2026, 12:50 PMAI Evy
05/10/2026, 12:26 PMZai
05/10/2026, 12:26 PMAI Evy
05/10/2026, 12:27 PMpostcode (or postal_code)
- **Type**: Text
- **Description/Prompt**: "Extract the postal code or postcode mentioned by the user during the conversation"
Step 2: The Data Will Appear in the call_analyzed Webhook
After the call ends and is analyzed, Retell AI will send this payload to your GHL webhook [(1) ]() :
json
{
"event_type": "call_analyzed",
"call": {
"call_analysis": {
"custom_analysis_data": {
"postcode": "12345",
"bedrooms": "3",
"bathrooms": "2"
}
}
}
}AI Evy
05/10/2026, 12:27 PMcall_analyzed webhook is sent after the call ends and contains all your extracted Post-Call Analysis data . This is separate from any Sympana extraction—you're now using Retell AI's native extraction instead.
If you're still not receiving the post-call analysis data in your webhook, verify that you've subscribed to the call_analyzed event type in your Retell AI webhook settings [(1) ]() [(3) ]() .AI Evy
05/10/2026, 12:27 PMAI Evy
05/10/2026, 12:27 PMZai
05/10/2026, 12:30 PMAI Evy
05/10/2026, 12:30 PMAI Evy
05/10/2026, 12:31 PMpostcode (Text)
- bedrooms (Text)
- bathrooms (Text)
- property_condition (Text)
- callback_requested (Boolean)
- callback_time (Text)
Retell AI Sends Data Directly to GHL:
After each call, Retell AI will send the call_analyzed webhook directly to your GHL inbound webhook URL :
json
{
"event_type": "call_analyzed",
"call": {
"call_analysis": {
"custom_analysis_data": {
"postcode": "12345",
"bedrooms": "3",
"bathrooms": "2",
"callback_requested": true,
"callback_time": "tomorrow at 2pm"
}
}
}
}AI Evy
05/10/2026, 12:31 PMAI Evy
05/10/2026, 12:31 PMAI Evy
05/10/2026, 12:31 PMZai
05/10/2026, 12:33 PMZai
05/10/2026, 12:33 PMAI Evy
05/10/2026, 12:33 PMAI Evy
05/10/2026, 12:33 PMcall_analyzed event . The webhook payload will look like this :
json
{
"event_type": "call_analyzed",
"call": {
// Call object with call_analysis field populated
}
}AI Evy
05/10/2026, 12:33 PMcall_analyzed webhook, NOT in call_started or call_ended [(5) ]() [(2) ]() . Each call triggers 3 different webhooks, and the custom analysis data is only in the third one [(2) ]() .
You need to filter for call_analyzed events - Set up a filter in your webhook receiver to only process call_analyzed events . Other users reported this solved their issue .
Custom analysis fields won't populate for failed calls - Post-call analysis fields are NOT populated for calls that were not connected or where no conversation took place [(1) ]() . Always check whether the field exists before using it .
## How to Verify It's Working
After configuring post-call analysis in your Retell AI dashboard, make a test call and check your webhook logs. You should see custom_analysis_data appear in the third webhook (the call_analyzed event) [(2) ]() .
If you're still not seeing the data after verifying you're checking the call_analyzed webhook, contact Retell AI support directly,AI Evy
05/10/2026, 12:33 PMAI Evy
05/10/2026, 12:33 PMZai
05/10/2026, 12:35 PMAI Evy
05/10/2026, 12:35 PMAI Evy
05/10/2026, 12:35 PMwebhook_url at the agent level, configure an account-level webhook in your Retell AI dashboard [(1) ]() . This allows you to:
- Keep Sympana using the agent-level webhook URL
- Receive post-call analysis data through a separate account-level webhook pointing directly to GHL
Set up the account-level webhook through the dashboard's webhooks tab . Any event associated with your agents will be pushed to this URL, unless an agent has its own webhook_url set .
## Option 2: Remove Agent-Level Webhook and Use Account-Level Only
If Sympana doesn't require the agent-level webhook, you can:
1. Set the agent's webhook_url field to null to remove it [(2) ]() [(3) ]()
2. Configure the account-level webhook to point to your GHL inbound webhook URL
This way, all webhook events (including call_analyzed) will go directly to GHL [(1) ]() .
## Configuring Webhook Events
Regardless of which option you choose, ensure you're subscribed to the call_analyzed event [(1) ]() [(2) ]() [(3) ]() [(4) ]() :
json
{
"webhook_events": [
"call_started",
"call_ended",
"call_analyzed"
]
}AI Evy
05/10/2026, 12:35 PMcall_analyzed webhook will contain your post-call analysis data in the payload [(5) ]() :
json
{
"event_type": "call_analyzed",
"call": {
"call_analysis": {
"custom_analysis_data": {
"postcode": "12345",
"bedrooms": "3"
}
}
}
}
## Important Notes
- If an agent has webhook_url set, the account-level webhook will NOT be triggered for that agent [(1) ]() [(3) ]()
- The webhook has a timeout of 10 seconds and will retry up to 3 times if no success status (2xx) is received [(1) ]()
- Post-call analysis fields are NOT populated for calls that were not connected or where no conversation took place [(5) ]()AI Evy
05/10/2026, 12:35 PMAI Evy
05/10/2026, 12:35 PMZai
05/10/2026, 12:37 PMAI Evy
05/10/2026, 12:37 PMAI Evy
05/10/2026, 12:38 PMpostcode (Text)
- bedrooms (Text)
- bathrooms (Text)
- callback_requested (Boolean)
- callback_time (Text)
Configure the Webhook to Send Directly to GHL
Set your agent's webhook URL to point directly to your GHL inbound webhook [(1) ]() [(2) ]() :
javascript
const agentResponse = await client.agent.update('16b980523634a6dc504898cda492e939', {
webhook_url: "<https://your-ghl-webhook-url%22,>
webhook_events: [
"call_analyzed"
]
}) ;
[(2) ]()
Receive the Data in GHL
After each call ends and is analyzed, Retell AI will send this payload directly to your GHL webhook [(1) ]() :
json
{
"event_type": "call_analyzed",
"call": {
"call_analysis": {
"custom_analysis_data": {
"postcode": "12345",
"bedrooms": "3",
"callback_requested": true,
"callback_time": "tomorrow at 2pm"
}
}
}
}AI Evy
05/10/2026, 12:38 PMcall_analyzed webhook is the ONLY webhook that contains your post-call analysis data [(4) ]() [(5) ]() [(6) ]() . You will receive 3 webhooks per call (call_started, call_ended, call_analyzed) , and the custom analysis data only appears in the third one [(5) ]() .
**Bottom line**: You don't need Sympana's custom functions for post-call data extraction if you configure Retell AI's native Post-Call Analysis properly. This simplifies your architecture significantly.AI Evy
05/10/2026, 12:38 PMAI Evy
05/10/2026, 12:38 PMZai
05/10/2026, 12:42 PMAI Evy
05/10/2026, 12:42 PMAI Evy
05/10/2026, 12:42 PMcontact_bathrooms (must match exactly what Sympana expects)
- **Type**: Text or Number
- **Description/Prompt**: "Extract the number of bathrooms mentioned by the user during the conversation"
You can add additional fields for all the data you need extracted [(2) ]() :
- contact_postcode
- contact_bedrooms
- property_condition
- callback_requested
- callback_time
How the Data Flows
After the call ends, Retell AI will send the call_analyzed webhook with this payload [(1) ]() :
json
{
"event_type": "call_analyzed",
"call": {
"call_analysis": {
"custom_analysis_data": {
"contact_bathrooms": "2",
"contact_postcode": "12345",
"contact_bedrooms": "3"
}
}
}
}AI Evy
05/10/2026, 12:42 PMcall_analyzed webhook event, which is the third webhook sent after each call [(3) ]() . Make sure Sympana is configured to process this specific event type.
**Bottom line**: Yes, you should configure the Post-Call Analysis prompts/fields in Retell AI with the exact field names Sympana expects (like contact_bathrooms) . This ensures Retell AI extracts the data and sends it via the call_analyzed webhook, which Sympana then writes to GHL.AI Evy
05/10/2026, 12:42 PMAI Evy
05/10/2026, 12:42 PMZai
05/10/2026, 12:43 PMZai
05/10/2026, 12:43 PMAI Evy
05/10/2026, 12:43 PMAI Evy
05/10/2026, 12:43 PMcall_analyzed webhook containing custom_analysis_data
3. Sympana receives that webhook and writes the values to GHL custom fields [(2) ]()
Sympana's logic for how it processes the webhook data (what fields it writes, when it writes them, etc.) is controlled by Sympana's configuration, not Retell AI's prompts .
**What you control in Retell AI**: The Post-Call Analysis field names, types, and extraction prompts [(1) ]() .
**What you don't control in Retell AI**: How Sympana processes that data after receiving it [(2) ]() .
If you want to change Sympana's behavior (like which GHL fields it updates or when) , you need to configure that in Sympana's settings, not in Retell AI's agent prompts.AI Evy
05/10/2026, 12:43 PMAI Evy
05/10/2026, 12:43 PMZai
05/11/2026, 7:16 AMAI Evy
05/11/2026, 7:16 AMAI Evy
05/11/2026, 7:17 AMcallback_requested (Boolean) - Whether the user requested a callback
- callback_time (Text) - When they want to be called back (e.g., "tomorrow at 2pm", "next week")
- callback_reason (Text) - Why they want the callback
Receive the data in GHL via webhook [(1) ]()
After the call ends, Retell AI sends the call_analyzed webhook with your extracted data:
json
{
"event_type": "call_analyzed",
"call": {
"call_analysis": {
"custom_analysis_data": {
"callback_requested": true,
"callback_time": "tomorrow at 2pm",
"callback_reason": "wants more information"
}
}
}
}AI Evy
05/11/2026, 7:17 AMcall_analyzed webhook from Retell AI
2. Check if callback_requested is true
3. Parse the callback_time to schedule the callback
4. Create a scheduled task or workflow in GHL to trigger a new Retell AI outbound call at that time
Retell AI only handles the calling [(6) ]() [(5) ]() - it doesn't schedule or automate when calls happen. You need GHL, Make.com, Zapier, or another automation platform to handle the scheduling logic and trigger new calls.AI Evy
05/11/2026, 7:17 AMAI Evy
05/11/2026, 7:17 AMZai
06/02/2026, 8:10 PMAI Evy
06/02/2026, 8:10 PMAI Evy
06/02/2026, 8:11 PMcall_analyzed for post-call analysis data) [(1) ]() [(2) ]()
- Missing webhook subscription - Verify you've subscribed to the events you need in your webhook configuration [(1) ]()
Please share the error details and I'll help you resolve it.AI Evy
06/02/2026, 8:11 PMAI Evy
06/02/2026, 8:11 PMZai
06/02/2026, 8:11 PMAI Evy
06/02/2026, 8:11 PMAI Evy
06/02/2026, 8:12 PMAI Evy
06/02/2026, 8:12 PMAI Evy
06/02/2026, 8:12 PMAI Evy
06/02/2026, 8:12 PMZai
06/02/2026, 8:13 PMAI Evy
06/02/2026, 8:13 PMAI Evy
06/02/2026, 8:13 PMAI Evy
06/02/2026, 8:13 PMAI Evy
06/02/2026, 8:14 PMAI Evy
06/02/2026, 8:14 PMZai
06/02/2026, 8:20 PMAI Evy
06/02/2026, 8:20 PMAI Evy
06/02/2026, 8:21 PMdial_failed, dial_no_answer, dial_busy disconnection reasons) , the call_started webhook won't be triggered, but call_ended and call_analyzed webhooks will still fire .
Please share the message you're seeing so I can provide more specific guidance.AI Evy
06/02/2026, 8:21 PMAI Evy
06/02/2026, 8:21 PMZai
06/02/2026, 8:21 PMAI Evy
06/02/2026, 8:21 PMAI Evy
06/02/2026, 8:22 PMAI Evy
06/02/2026, 8:22 PMAI Evy
06/02/2026, 8:22 PMZai
06/02/2026, 8:24 PMAI Evy
06/02/2026, 8:24 PMAI Evy
06/02/2026, 8:25 PMAI Evy
06/02/2026, 8:25 PMAI Evy
06/02/2026, 8:25 PM