Deviate
03/02/2026, 6:14 PMAI Evy
03/02/2026, 6:14 PMAI Evy
03/02/2026, 6:14 PM## Task Instructions
When presenting availability options:
1. Always read exactly 3 time slots if available (or all slots if fewer than 3 exist)
2. Present each slot one by one in spoken form: "Your first option is [time], your second option is [time], your third option is [time]"
3. After listing all options, ask: "Which of these times works best for you?"
## Response Guidelines
Return times in spoken form: Say "ten AM" not "10:00 AM".
Never summarize multiple slots into one.
Never skip available time slots.AI Evy
03/02/2026, 6:14 PMretell_llm_dynamic_variables. All values must be strings. [(2) ]() You could structure your availability as separate variables like {{slot_1}}, {{slot_2}}, {{slot_3}} rather than a single array, which may help the agent enumerate them more reliably.
## Regarding Tool Formatting
Tool formatting won't solve this specific issue since it's about how the agent speaks the data, not how it retrieves it. The fix is in prompt instructions that explicitly tell the agent to enumerate rather than summarize. [(1) ]()AI Evy
03/02/2026, 6:14 PMAI Evy
03/02/2026, 6:14 PMDeviate
03/02/2026, 6:39 PMDeviate
03/02/2026, 6:51 PMAI Evy
03/02/2026, 6:51 PMAI Evy
03/02/2026, 6:52 PM## Task Instructions and ## Response Guidelines [(1) ]()
- Adding explicit enumeration instructions that tell the agent to list each slot one by one rather than summarizing
- Ensuring your dynamic variables are formatted correctly (no spaces inside the curly braces—use {{variable_name}} not {{ variable_name }}) [(2) ]()
- Considering whether to pass availability as separate variables like {{slot_1}}, {{slot_2}}, {{slot_3}} rather than a single array [(3) ]()
Please share your prompt and I'll review it for you.AI Evy
03/02/2026, 6:52 PMAI Evy
03/02/2026, 6:52 PMDeviate
03/02/2026, 6:54 PMAI Evy
03/02/2026, 6:54 PMAI Evy
03/02/2026, 6:54 PM## Task Instructions and ## Response Guidelines to structure your prompt [(1) ]()
Explicit enumeration — Add specific instructions telling the agent to list each time slot one by one rather than summarizing
Dynamic variable formatting — Ensure you're using the correct syntax {{variable_name}} with no spaces inside the curly braces [(2) ]()
Separate variables for slots — Consider passing availability as individual variables like {{slot_1}}, {{slot_2}}, {{slot_3}} rather than a single array, which may help the agent enumerate them more reliably
Knowledge base vs prompt — For business-specific data like availability, you can load context and immediate conversation needs in the prompt while storing more extensive information in a knowledge base [(3) ]()
Please share your prompt text and I'll provide specific corrections.AI Evy
03/02/2026, 6:54 PMAI Evy
03/02/2026, 6:54 PMDeviate
03/02/2026, 6:55 PMAI Evy
03/02/2026, 6:55 PMAI Evy
03/02/2026, 6:56 PM## Identity
You are a friendly AI assistant for [Company Name].
## Style Guardrails
Be concise: Keep responses under 2 sentences unless explaining complex topics.
Be conversational: Use natural language and acknowledge what the caller says.
## Response Guidelines
Return dates in spoken form: Say "January fifteenth" not "1/15".
Ask one question at a time.
## Task Instructions
[Specific steps for availability handling]
## For Your Availability Issue Specifically
Add explicit enumeration instructions in your Task Instructions section:
- Define trigger words that should prompt the availability listing behavior
- Specify exact sequences for how the agent should present slots
- Set boundaries on summarization behavior
## Dynamic Variable Formatting
Ensure your availability variables use correct syntax {{variable_name}} with no spaces inside the curly braces. [(2) ]() Consider passing slots as separate variables like {{slot_1}}, {{slot_2}}, {{slot_3}} rather than a single array.
Please paste your prompt text directly and I'll provide specific corrections.AI Evy
03/02/2026, 6:56 PMAI Evy
03/02/2026, 6:56 PMDeviate
03/02/2026, 6:57 PMAI Evy
03/02/2026, 6:57 PMAI Evy
03/02/2026, 6:58 PM```
Your prompt text here
```
Once you paste the text directly, I'll be able to read it and provide specific feedback on your availability handling instructions.AI Evy
03/02/2026, 6:58 PMAI Evy
03/02/2026, 6:58 PMDeviate
03/02/2026, 7:00 PMAI Evy
03/02/2026, 7:00 PMAI Evy
03/02/2026, 7:00 PM`
Your prompt text here
`
Once you paste the actual text, I can review it against Retell AI's prompt engineering best practices for your availability enumeration issue—specifically checking your sectional organization, task instructions, and dynamic variable formatting. [(1) ]() [(2) ]()AI Evy
03/02/2026, 7:00 PMAI Evy
03/02/2026, 7:00 PMDeviate
03/02/2026, 7:01 PMAI Evy
03/02/2026, 7:01 PMAI Evy
03/02/2026, 7:01 PM{{availability_text}} as a single variable, but there's no explicit instruction telling the agent how to enumerate multiple slots from that variable. [(1) ]()
Key Issues in This Chunk:
1. Single variable for all slots — You're passing availability as {{availability_text}}, which likely contains all slots together. The agent is summarizing rather than enumerating because there's no explicit instruction to list them one by one.
2. Missing enumeration instructions — Your "Booking Rules" section tells the agent to "only offer" the available slots but doesn't specify how to present them (e.g., list exactly 3, read each one separately, then ask for preference) .
Recommended Fix for This Section:
Replace your current Booking Rules with something like:
Booking Rules:
- Available slots: {{availability_text}}
- When presenting availability, you MUST:
1. List up to 3 time slots individually (e.g., "Your first option is [time], your second option is [time], your third option is [time]")
2. Read each slot one by one—never summarize multiple slots into one statement
3. After listing all options, ask: "Which of these times works best for you?"
- If a user asks for a time not in this list, tell them it is unavailable and suggest the closest available time.
Better Approach — Separate Variables:
Consider passing availability as separate dynamic variables like {{slot_1}}, {{slot_2}}, {{slot_3}} rather than a single {{availability_text}} array. This makes enumeration more reliable since the agent can reference each slot explicitly.
Please share the remaining chunks and I'll review the full prompt structure.AI Evy
03/02/2026, 7:01 PMAI Evy
03/02/2026, 7:01 PMDeviate
03/02/2026, 7:02 PMAI Evy
03/02/2026, 7:02 PMAI Evy
03/02/2026, 7:02 PMAVAILABILITY HANDLING
When availability is provided via {{availability_text}}:
1. ALWAYS present exactly 3 time slots if available (or all slots if fewer than 3 exist)
2. Read each slot ONE BY ONE in spoken form:
- "Your first option is [day] at [time]"
- "Your second option is [day] at [time]"
- "Your third option is [day] at [time]"
3. NEVER summarize multiple slots into one statement
4. NEVER say "I have availability on [date]" without listing specific times
5. After listing all options, ask: "Which of these times works best for you?"
IMPORTANT AVAILABILITY RULES (NON-NEGOTIABLE) :
- The availability payload is the ONLY source of truth
- You MUST NOT calculate, infer, guess, extend, or modify dates
- You MUST ONLY speak dates and times that appear explicitly in {{availability_text}}
The key addition is steps 1-5 with trigger words and explicit sequences for how the agent should behave.
Please share any remaining chunks so I can review the full prompt structure.AI Evy
03/02/2026, 7:02 PMAI Evy
03/02/2026, 7:02 PMDeviate
03/02/2026, 7:02 PMAI Evy
03/02/2026, 7:02 PMDeviate
03/02/2026, 7:02 PMAI Evy
03/02/2026, 7:02 PMAI Evy
03/02/2026, 7:02 PM{{availability_text}} as a single variable containing grouped data, but your HOW TO SPEAK AVAILABILITY section (chunk 3) references individual variables like {{morning_slot_1}}, {{morning_slot_2}}, {{afternoon_slot_1}}, {{afternoon_slot_2}}, {{weekday}}, {{date}}, and {{timezone}}. [(1) ]()
If you're only passing {{availability_text}} from GHL, the agent doesn't have access to {{morning_slot_1}}, etc. — those variables would be empty or undefined, which explains why the agent defaults to reading just one slot.
## Recommended Fix
Option A: Pass separate variables from GHL
Update your GHL webhook to pass availability as individual dynamic variables:
- {{weekday}}
- {{date}}
- {{morning_slot_1}}
- {{morning_slot_2}}
- {{afternoon_slot_1}}
- {{afternoon_slot_2}}
- {{timezone}}
This matches your spoken format template and gives the agent explicit slots to enumerate.
Option B: Consolidate to one variable approach
If you must use {{availability_text}}, remove the individual slot variable references and rewrite the spoken format to work with the single variable—but this is less reliable for enumeration.
## Additional Suggestion
If reliability remains an issue after fixing the variables, consider switching to a Conversation Flow agent. Each node can focus on one specific task with more deterministic behavior, which is recommended when Single/Multi Prompt agents show inconsistent behavior with 5+ functions or complex logic. [(2) ](AI Evy
03/02/2026, 7:03 PMAI Evy
03/02/2026, 7:03 PMAI Evy
03/02/2026, 7:03 PM{{morning_slot_1}}, {{morning_slot_2}}, {{afternoon_slot_1}}, {{afternoon_slot_2}}
If you're only passing {{availability_text}} as a single variable but your speaking format expects separate slot variables, the agent can't follow the enumeration format correctly.
[(1) ]()
## Recommended Fixes
Option 1: Pass separate dynamic variables
Update your GHL webhook to pass availability as individual variables:
- {{slot_date_1}}
- {{morning_slot_1}}
- {{morning_slot_2}}
- {{afternoon_slot_1}}
- {{afternoon_slot_2}}
Option 2: Rewrite your enumeration to work with {{availability_text}}
If you must use a single variable, add explicit parsing instructions:
HOW TO SPEAK AVAILABILITY:
When you receive {{availability_text}}, you MUST:
1. Identify all time slots for the earliest available date
2. Separate them into morning (before 12:00 PM) and afternoon (12:00 PM or later)
3. List each slot individually using this exact format:
- "I have availability on [weekday], [date] with a couple of options."
- "In the morning, I have [time 1] and [time 2]."
- "In the afternoon, I have [time 1] and [time 2]."
4. NEVER summarize slots—always list each one separately
5. End with: "All times are in Eastern Time. Which one works best for you?"AI Evy
03/02/2026, 7:03 PM{{DATE}}, {{TIME}}, {{TIMEZONE}} in uppercase, but also {{confirmed_date}} and {{confirmed_time}} in lowercase. Make sure your variable names are consistent.
## Consider Conversation Flow
If this Single Prompt approach continues to be unreliable, Conversation Flow agents provide more deterministic control—each node focuses on one specific task with predictable behavior.
[(2) ]() , [(3) ]()AI Evy
03/02/2026, 7:03 PMAI Evy
03/02/2026, 7:03 PMDeviate
03/02/2026, 7:04 PMAI Evy
03/02/2026, 7:04 PMAI Evy
03/02/2026, 7:04 PMavailability_text string:
json
{
"first_name": "John",
"business_name": "ABC Company",
"persona_summary": "Your business description here",
"slot_date": "Monday, February 10th",
"morning_slot_1": "10:00 AM",
"morning_slot_2": "11:30 AM",
"afternoon_slot_1": "1:30 PM",
"afternoon_slot_2": "2:00 PM",
"timezone": "Eastern Time"
}
## Why This Works Better
When you pass availability as individual variables, your prompt's speaking format can directly reference each one:
[(2) ]()
"I have availability on {{slot_date}} with a couple of options."
"In the morning, I have {{morning_slot_1}} and {{morning_slot_2}}."
"In the afternoon, I have {{afternoon_slot_1}} and {{afternoon_slot_2}}."
"All times are in {{timezone}}. Which one works best for you?"
## Alternative: Use a Custom Function
If you need to fetch availability dynamically during the call (rather than pre-loading it) , create a check availability function that returns structured data. The function response can then populate variables that the agent enumerates.
[(1) ]()
## Updated Prompt Section
Remove {{availability_text}} from your Booking Rules and update to:AI Evy
03/02/2026, 7:04 PMBooking Rules:
- Available slots are provided via: {{slot_date}}, {{morning_slot_1}}, {{morning_slot_2}}, {{afternoon_slot_1}}, {{afternoon_slot_2}}
- Use the exact speaking format in the HOW TO SPEAK AVAILABILITY section
- If any slot variable is empty, skip that slot when speaking
[(2) ]()
This ensures the agent has explicit, separate variables to enumerate rather than trying to parse a single text block.AI Evy
03/02/2026, 7:04 PMAI Evy
03/02/2026, 7:05 PMAyo Lyn
03/04/2026, 9:51 AMDeviate
03/05/2026, 2:46 AMAI Evy
03/05/2026, 2:46 AMAI Evy
03/05/2026, 2:46 AMAVAILABILITY DATE RULES (STRICT) :
1. ALWAYS start with TODAY's availability if any slots exist
2. Then offer TOMORROW's availability
3. Then offer the NEXT available day after tomorrow
4. Present availability for the FIRST 3 DAYS that have openings—do not skip to next week if earlier dates exist
5. For each day, offer 2 morning slots and 2 afternoon slots (if available)
6. Use {{current_time_America/New_York}} to determine what "today" means
[(2) ]()
## Check Your GHL Payload
Make sure your GHL webhook is sending the immediate dates first in your slot variables. If GHL is sending next week's dates in {{slot_date}}, {{morning_slot_1}}, etc., the agent will read those.
Structure your payload to prioritize immediate availability:
json
{
"day_1_date": "Tuesday, February 11th",
"day_1_morning_1": "10:00 AM",
"day_1_morning_2": "11:30 AM",
"day_1_afternoon_1": "1:30 PM",
"day_1_afternoon_2": "2:00 PM",
"day_2_date": "Wednesday, February 12th",
"day_2_morning_1": "9:30 AM",
...
}
The agent reads what you send it—if immediate dates aren't in the payload, it can't offer them. [(1) ]()AI Evy
03/05/2026, 2:46 AMAI Evy
03/05/2026, 2:46 AMDeviate
03/05/2026, 3:05 AMAI Evy
03/05/2026, 3:05 AMAI Evy
03/05/2026, 3:05 AMAVAILABILITY HANDLING (STRICT) :
When presenting availability from {{availability_text}}:
DATE SELECTION RULES:
1. Use {{current_time_America/New_York}} to determine "today"
2. From the slots in {{availability_text}}, identify the FIRST 3 DAYS with openings
3. Start with the earliest available date—this should be today or the nearest future date
4. Never skip to next week if earlier dates have slots
SLOT PRESENTATION RULES:
- For each day, present maximum 4 slots (1-2 morning, 1-2 afternoon)
- Group slots by time of day (morning before 12:00 PM, afternoon 12:00 PM or later)
- Enumerate each option clearly using "and" between slots
- Only offer slots that exist in {{availability_text}}—never calculate, infer, or guess dates
SPEAKING FORMAT:
"I have availability on [weekday], [date]. In the morning, I have [time] and [time]. In the afternoon, I have [time] and [time], all in Eastern Time. Which one works best for you?"
The contradiction was:
- Rule 4 says "present availability for the FIRST 3 DAYS"
- CRITICAL rule says "list ALL available time slots"
These conflict when {{availability_text}} contains more than 3 days of availability. The corrected version clarifies: present the first 3 days, with up to 4 slots per day.
Important: The agent can only read what's in {{availability_text}}. If your GHL webhook is sending next week's dates first, the agent will offer those. Verify that GHL is ordering the payload with immediate dates at the top.
[(2) ]()AI Evy
03/05/2026, 3:05 AMAI Evy
03/05/2026, 3:05 AMDeviate
03/05/2026, 3:15 AMAI Evy
03/05/2026, 3:15 AMAI Evy
03/05/2026, 3:15 AMAI Evy
03/05/2026, 3:15 AMAVAILABILITY HANDLING (STRICT) :
When presenting availability from {{availability_text}}:
MULTI-DAY PRESENTATION RULES:
1. Use {{current_time_America/New_York}} to determine "today"
2. You MUST present availability for UP TO 3 SEPARATE DAYS—not just one
3. After presenting the first day's slots, IMMEDIATELY continue to the second day
4. After presenting the second day's slots, continue to the third day
5. Only stop when you've covered 3 days OR exhausted all available dates
SLOT RULES PER DAY:
- Maximum 4 slots per day (1-2 morning, 1-2 afternoon)
- Group by time of day
- Only use slots from {{availability_text}}—never infer or guess
SPEAKING FORMAT (FOLLOW THIS EXACTLY) :
"I have a few options for you over the next few days.
On [day 1 weekday], [day 1 date], in the morning I have [time] and [time]. In the afternoon, I have [time] and [time].
On [day 2 weekday], [day 2 date], in the morning I have [time] and [time]. In the afternoon, I have [time] and [time].
And on [day 3 weekday], [day 3 date], in the morning I have [time] and [time]. In the afternoon, I have [time] and [time].
All times are in Eastern Time. Which day and time works best for you?"
The key addition is the opening phrase "I have a few options for you over the next few days" which signals to the LLM that multiple days must follow, plus the explicit day-by-day format template.
[(2) ]()AI Evy
03/05/2026, 3:15 AMAI Evy
03/05/2026, 3:23 AMDeviate
03/05/2026, 3:23 AMAI Evy
03/05/2026, 3:24 AM{{current_time_America/New_York}} explicitly in your prompt before any availability functions are triggered, and reinforce that the agent must **never calculate dates**:
, [(2) ]()
CRITICAL DATE RULES (NON-NEGOTIABLE) :
1. Today's date and time is: {{current_time_America/New_York}}
2. You MUST read dates EXACTLY as they appear in {{availability_text}}
3. You are FORBIDDEN from calculating, inferring, or adjusting any date
4. If {{availability_text}} says "Friday, March 6th" — you say "Friday, March 6th"
5. NEVER attempt to match weekdays to dates yourself—trust the payload completely
[(3) ]()
## Why This Happens
The LLM doesn't have reliable awareness of current dates. When it sees "Friday" and tries to figure out the date, it guesses wrong. The solution is to ensure your {{availability_text}} payload includes both the weekday AND the full date together (e.g., "Friday, March 6th") and instruct the agent to read them as a single unit without modification.
[(2) ]() , [(1) ]()
## Verify Your GHL Payload
Make sure GHL is sending dates in this exact format:
json
{
"availability_text": "Friday, March 6th: 10:00 AM, 11:30 AM, 1:30 PM, 2:00 PM | Monday, March 9th: 9:30 AM, 10:00 AM, 1:00 PM, 2:30 PM"
}AI Evy
03/05/2026, 3:24 AMAI Evy
03/05/2026, 3:24 AMDeviate
03/05/2026, 3:37 AMAI Evy
03/05/2026, 3:37 AMAI Evy
03/05/2026, 3:38 AM{{availability_text}} variable from Make.com likely contains March 5th data, but the agent isn't reading it because there's a disconnect between what Make.com outputs and what actually gets passed to the Retell agent.
[(1) ]()
## Troubleshooting Steps
1. Verify the actual payload reaching Retell
Check your call logs in the Retell dashboard to see what value {{availability_text}} actually contains when the call starts. The Make.com output and what Retell receives may differ.
2. Check if March 5th is formatted correctly in the payload
If Make.com outputs March 5th slots but formats them differently (e.g., "2025-03-05" instead of "Wednesday, March 5th") , the agent may not recognize it as "tomorrow" even though the data exists.
[(2) ]()
3. Add explicit "today" anchoring at the start of your prompt
Place this at the very beginning of your availability section:
TODAY IS: {{current_time_America/New_York}}
The FIRST date in {{availability_text}} is the earliest available date—start there.
[(1) ]()
4. Consider using separate date variables
Instead of relying on the agent to parse {{availability_text}}, pass each day's availability as individual variables from Make.com:
, [(2) ]()
- {{day_1_date}} = "Wednesday, March 5th"
- {{day_1_slots}} = "10:00 AM, 11:30 AM, 1:30 PM"
- {{day_2_date}} = "Thursday, March 6th"
- etc.
This eliminates the agent's need to parse and select from a text block.
Can you share what the actual {{availability_text}} output looks like from Make.com? That will help identify whether the issue is in the payload format or the agent's interpretation.AI Evy
03/05/2026, 3:38 AMAI Evy
03/05/2026, 3:38 AMDeviate
03/05/2026, 5:45 AMAI Evy
03/05/2026, 5:45 AMAI Evy
03/05/2026, 5:45 AMTODAY IS: {{current_time_America/New_York}}
The FIRST date in {{availability_text}} represents the earliest available date—this should be TODAY or the nearest future date with openings. Start with this date and proceed chronologically.
[(2) ]() , [(1) ]()
## Why This Is Better
- Anchors "today" explicitly using the {{current_time_America/New_York}} dynamic variable so the agent knows the current date [(2) ]()
- Removes ambiguity by saying "TODAY or the nearest future date" rather than "same date or next date"
- Adds "proceed chronologically" to reinforce the multi-day presentation order [(1) ]()
## Additional Tip
Make sure this anchoring instruction appears at the very top of your AVAILABILITY HANDLING section, before any other rules. LLMs process instructions sequentially, so placing the date anchor first helps establish context for everything that follows. [(3) ]()AI Evy
03/05/2026, 5:45 AMAI Evy
03/05/2026, 5:45 AMAI Evy
03/05/2026, 5:54 AMDeviate
03/05/2026, 5:54 AMAI Evy
03/05/2026, 5:54 AMAVAILABILITY PRESENTATION RULES (STRICT) :
1. You MUST present Greg's availability FIRST—never ask the prospect for their availability
2. Do NOT say "When are you available?" or "What time works for you?" before presenting slots
3. ALWAYS lead with: "I have a few options for you over the next few days" and then list Greg's slots
4. After presenting all available slots, THEN ask: "Which day and time works best for you?"
5. The prospect CHOOSES from Greg's availability—they do not provide their own schedule
## Why This Happens
LLMs can default to conversational patterns like asking open-ended questions ("When are you free?") because that's common in natural dialogue. Explicit instructions override this default behavior. [(2) ]()
## Example Speaking Flow
CORRECT:
"I have a few options for you over the next few days. On Wednesday, March 5th, in the morning I have 10:00 AM and 11:30 AM. In the afternoon, I have 1:30 PM and 2:00 PM. All times are in Eastern Time. Which one works best for you?"
INCORRECT:
"When are you available this week?" [then provides Greg's availability after]
[(1) ]()
Add this instruction near the top of your prompt so it takes priority.AI Evy
03/05/2026, 5:54 AMAI Evy
03/05/2026, 5:54 AMAyo Lyn
03/05/2026, 6:28 AMDeviate
03/05/2026, 3:28 PMAI Evy
03/05/2026, 3:28 PMAI Evy
03/05/2026, 3:28 PMformatDate function expects a full datetime string (with date + time) , not just a time value like "10:30 AM". [(1) ]()
## The Problem
Make.com's parseDate function cannot interpret "10:30 AM" alone—it needs a complete date-time value like "2026-03-05 10:30 AM" or an ISO format.
## Solution
You need to combine the confirmed date and time before passing them to formatDate in Make.com:
1. Extract both values separately from Retell's webhook payload
- Confirmed date (e.g., "Wednesday, March 5th" or "2026-03-05")
- Confirmed time (e.g., "10:30 AM")
2. Concatenate them in Make.com before formatting
- Use a Set Variable or Compose module to combine: {{confirmed_date}} {{confirmed_time}}
- Then pass the combined string to parseDate
3. Ensure consistent date format from Retell
- In your Retell prompt, when the agent confirms the appointment, have it save the date in a machine-readable format (e.g., "2026-03-05") alongside the human-readable format [(2) ]()
## Retell-Side Adjustment
Consider adding response variables in your custom function to extract structured date/time data. When configuring your custom function, you can set response variables that save values as dynamic variables for later use. [(3) ]()
This ensures Retell passes a properly formatted datetime that Make.com can parse without errors.AI Evy
03/05/2026, 3:28 PMAI Evy
03/05/2026, 3:28 PMDeviate
03/05/2026, 3:31 PMAI Evy
03/05/2026, 3:31 PMAI Evy
03/05/2026, 3:32 PMjson
{
"properties": {
"user": {
"name": "John Doe",
"age": 26
}
}
}
You would map these to dynamic variables like {{user_name}} that can be referenced later.
## Step 2: Structure Your Retell Prompt to Save Machine-Readable Dates
Add an instruction in your prompt that tells the agent to save the confirmed appointment in a specific format when the prospect selects a slot. For example:
APPOINTMENT CONFIRMATION RULES:
When the prospect confirms a time slot:
1. Save the confirmed date in format YYYY-MM-DD (e.g., 2026-03-05) as {{confirmed_date_iso}}
2. Save the confirmed time in 24-hour format (e.g., 10:30) as {{confirmed_time_24h}}
3. Also save the human-readable versions for verbal confirmationAI Evy
03/05/2026, 3:32 PMconfirmed_date_iso = "2026-03-05" and confirmed_time_24h = "10:30") , you can concatenate them in Make.com and parseDate will work correctly because it receives a complete datetime string like "2026-03-05 10:30" rather than just "10:30 AM".
The key is ensuring Retell outputs machine-readable formats (ISO date, 24-hour time) alongside the human-readable formats the agent speaks aloud.AI Evy
03/05/2026, 3:32 PMAI Evy
03/05/2026, 3:32 PMDeviate
03/05/2026, 3:35 PMAI Evy
03/05/2026, 3:35 PMAI Evy
03/05/2026, 3:35 PMAPPOINTMENT CONFIRMATION RULES:
When the prospect confirms a time slot:
1. Save booking_details as JSON: {confirmed_date, confirmed_time, timezone, lead_phone, lead_name}
2. Set booking_confirmed to true
3. ALSO save machine-readable formats for Make.com:
- {{confirmed_date_iso}} in format YYYY-MM-DD (e.g., 2026-03-05)
- {{confirmed_time_24h}} in 24-hour format (e.g., 10:30)
4. Verbally confirm the appointment using human-readable date and time
## Why Merge Instead of Replace
- Your existing line handles the JSON output and booking_confirmed flag—keep that logic
- The new additions ensure Make.com receives properly formatted datetime values
- A single unified rule is clearer for the LLM than two separate "when confirmed" instructions
This way, Retell outputs both the human-readable format (for verbal confirmation) and machine-readable format (for Make.com's parseDate function) in one step.AI Evy
03/05/2026, 3:35 PMAI Evy
03/05/2026, 3:35 PMDeviate
03/05/2026, 4:35 PMAI Evy
03/05/2026, 4:35 PMAI Evy
03/05/2026, 4:35 PMCannot POST /calendars/events) is a GoHighLevel (GHL) API issue, not a Retell issue. This error indicates the GHL endpoint URL or method is incorrect.
## The Problem
The URL ` is returning a 404, which means either:
- The endpoint path is wrong
- The HTTP method (POST) isn't supported at that path
- Required path parameters are missing (like a calendar ID)
## What to Check
1. Verify the correct GHL API endpoint
GHL calendar booking endpoints typically require a calendar ID in the path. The correct format is usually something like:
- `
2. Check GHL's API documentation
This is a GHL-specific issue. You'll need to consult [GoHighLevel's API documentation]() to confirm the correct endpoint for creating calendar events/appointments.
3. Verify your HTTP module configuration in Make.com
Ensure you're using the correct:
- HTTP method (POST vs PUT)
- Full endpoint URL with required path parameters
- Authorization headers for GHL
I don't have specific information about GHL API endpoints in my sources. For GHL-specific API questions, I'd recommend checking their official documentation or support channels.AI Evy
03/05/2026, 4:35 PMAI Evy
03/05/2026, 4:35 PMDeviate
03/05/2026, 5:51 PMAI Evy
03/05/2026, 5:51 PMAI Evy
03/05/2026, 5:52 PM{{current_time_America/New_York}} dynamic variable to check the current time and instruct the agent to filter slots accordingly. [(1) ]()
## Add This to Your Prompt
SLOT TIME FILTERING RULES (STRICT) :
1. Current time is: {{current_time_America/New_York}}
2. ONLY present time slots that are AFTER 10:30 AM
3. If a slot is at or before 10:30 AM, SKIP it entirely—do not mention it
4. If all slots for a given day are at or before 10:30 AM, skip that day and move to the next
5. Never offer 9:00 AM, 9:30 AM, 10:00 AM, or 10:30 AM slots
## Alternative: Filter in Make.com Before Sending to Retell
A more reliable approach is to filter the slots in Make.com before passing them to Retell via {{availability_text}}. This way, Retell only receives slots after 10:30 AM and doesn't need to interpret filtering logic. [(2) ]()
## Why Prompt-Level Filtering Can Be Unreliable
LLMs can sometimes misinterpret time comparisons. If you find the agent still occasionally mentions early slots, pre-filtering in Make.com before the data reaches Retell is the more robust solution. [(3) ]()AI Evy
03/05/2026, 5:52 PMAI Evy
03/05/2026, 5:52 PMDeviate
03/05/2026, 6:18 PMAI Evy
03/05/2026, 6:18 PMAI Evy
03/05/2026, 6:18 PMAI Evy
03/05/2026, 6:18 PMAI Evy
03/05/2026, 6:18 PMDeviate
03/05/2026, 6:19 PMAI Evy
03/05/2026, 6:19 PMAI Evy
03/05/2026, 6:19 PMbegin icon in your flow editor. From there, you can select who speaks first in the call. [(1) ]()
## Additional Setting: Begin Message Delay
If you're using "Agent Speaks First" but want a delay before speaking, there's a begin_message_delay_ms parameter. This delays the first message by the specified milliseconds (valid range: 0-5000ms) , giving the user more time to prepare. This only applies when the agent speaks first. [(2) ]()
## What to Verify
1. Check the begin node in your Conversation Flow — click on it and confirm "Human speaks first" is selected [(1) ]()
2. **If using API**: Verify your agent isn't being created/updated with settings that override the dashboard. The begin_message_delay_ms parameter only applies when agent speaks first [(3) ]()
3. **Alternative approach**: One community member suggested using "Agent Speaks First with Delay" to handle scenarios where you want the agent to wait but still respond if the human doesn't speak [(4) ]()
Can you confirm which type of agent you're using (Conversation Flow or Single/Multi Prompt) and describe exactly what you see in your "begin" node settings?AI Evy
03/05/2026, 6:20 PMAI Evy
03/05/2026, 6:20 PMDeviate
03/05/2026, 6:22 PMAI Evy
03/05/2026, 6:22 PMAI Evy
03/05/2026, 6:22 PMstart_speaker parameter.
[(1) ]()
## Verify Your Configuration
In the API, this is set using start_speaker with the value `"user"`:
json
"start_speaker": "user"
## Additional Setting to Check
There's also a begin_after_user_silence_ms parameter—if this is set, the AI will begin the conversation after waiting for the user for the specified duration (in milliseconds) even when configured to wait for the user to speak first.
For example, if begin_after_user_silence_ms is set to 2000, the agent will start speaking after 2 seconds of user silence.
## Troubleshooting Steps
1. Check if begin_after_user_silence_ms is set — If this has a value, the agent will speak after that timeout even with "user speaks first" enabled
2. Verify via API — Use the Get Agent API to confirm your agent's actual settings match what you expect
3. Check for speakerphone/echo issues — One community member reported that agents can sometimes trigger on speakerphone when the agent hears itself, causing it to respond as if the user spoke
[(2) ]()
If you've confirmed start_speaker is set to "user" and begin_after_user_silence_ms is either null or not set, and the agent still speaks first, I'd recommend reaching out to Retell support with a specific call ID showing the issue.AI Evy
03/05/2026, 6:22 PMAI Evy
03/05/2026, 6:22 PMDeviate
03/06/2026, 5:56 PMAI Evy
03/06/2026, 5:56 PMAI Evy
03/06/2026, 5:57 PM## Related Knowledge Base Contexts.
## Optional: Adjust Retrieval Settings
After connecting a knowledge base, you can configure retrieval settings via **"Adjust KB Retrieval Chunks and Similarity"**:
- **Chunks to retrieve**: Max number of chunks (1-10, default: 3)
- **Similarity Threshold**: How strict matching is (default: 0.6)
For most cases, the recommended settings are 3 chunks and 0.60 similarity threshold.AI Evy
03/06/2026, 5:57 PMAI Evy
03/06/2026, 5:57 PMDeviate
03/06/2026, 6:25 PMAI Evy
03/06/2026, 6:25 PMAI Evy
03/06/2026, 6:26 PM.md (Markdown) files over .txt. Well-structured Markdown is chunked and retrieved more accurately.
Format your pricing clearly and explicitly:
## Service Package Pricing
- Setup Fee: $1,000 (exactly one thousand dollars)
- Monthly Fee: $497/month (exactly four hundred ninety-seven dollars per month)
2. Add a Strict Prompt Instruction
Add this to your agent prompt to prevent the LLM from generating information not in the knowledge base:
Only answer using the information in ## Related Knowledge Base Contexts.
If ## Related Knowledge Base Contexts is missing or does not contain relevant information, respond:
"There is no related information in knowledge base."
3. Use Specificity in Your Knowledge Base
Avoid ambiguity and use specificity in references. Include exact numbers, units, and avoid approximations.
For pricing, consider adding redundancy:
Setup: $1,000 (one thousand dollars exactly, NOT $999)
Monthly: $497/mo (four hundred ninety-seven dollars, NOT $450)
4. Lower Model Temperature
If you're using a higher temperature setting, reduce it. Lower values mean more deterministic responses, reducing the chance of the LLM "rounding" or approximating numbers. [(2) ]()AI Evy
03/06/2026, 6:26 PMAI Evy
03/06/2026, 6:26 PM