GHL + Make + Retell

Problem Summary (What’s Broken)

Building a GHL Voice AI demo using Retell, with this intended flow:

GHL Workflow

Make.com (pull calendar availability from GHL)

→ Retell outbound call

→ Lead confirms time

→ Send booking back to GHL

→ GHL sends calendar invite

What’s happening instead:

Retell does place the call

Make does fetch the correct availability

BUT Retell does not read the latest availability

Retell hallucinates dates (e.g. June)

Confirmed booking cannot reliably flow back to GHL

Root Cause (The Real Issue)

:cross_mark: Architecture flaw

Your current flow is:

GHL → Make (availability)

GHL → Retell (call)

There is no data bridge between Make and Retell.

:backhand_index_pointing_right: Retell cannot “see” Make’s output unless Make starts the call or injects the data at call creation.

Because the Retell call is triggered by GHL, it starts before availability exists in the call context, so:

availability_text is empty

Retell guesses dates (June)

Booking becomes unreliable

Required Architecture Correction (Critical)

:white_check_mark: Correct, production-safe flow

GHL → Make (webhook)Make:

1. Pull availability from GHL calendar

2. Aggregate + format availability_text

3. START Retell call (inject variables)Retell:

- Reads injected availability

- Confirms time with lead

- Sends booking_details → MakeMake:

- Create GHL appointmentGHL:

- Sends calendar invite + SMS

Key rule:

The system that fetches availability must start the Retell call.

Concrete Fixes You Must Apply

:one: Remove Retell call trigger from GHL

Disable or delete the “Trigger Retell Outbound Call” step in GHL

GHL should only send data to Make

:two: Start the Retell call from Make (REQUIRED)

In Make, after availability is aggregated:

HTTP Module

Method: POST

URL:

https://api.retellai.com/v1/calls

Headers

Authorization: Bearer YOUR_RETELL_API_KEY

Content-Type: application/json

Body

{

“agent_id”: “YOUR_RETELL_AGENT_ID”,

“to”: “{{phone}}”,

“from”: “+1XXXXXXXXXX”,

“variables”: {

“availability_text”: “{{availability_text}}”,

“today_date”: “{{formatDate(now; \“YYYY-MM-DD\”)}}”,

“first_name”: “{{first_name}}”,

“business_name”: “{{business_name}}”,

“persona_summary”: “{{persona_summary}}”,

“website”: “{{website}}”

}}

:pushpin: Important

Use /v1/calls (not v2/create-phone-call)

Variables must be under “variables”

Variable names must match your prompt exactly

:three: Lock the Retell prompt (prevents hallucinations)

Add this rule near the top of the agent prompt:

CRITICAL RULE:

You must ONLY offer the time exactly as written in {{availability_text}}.

You are not allowed to guess, infer, or suggest other dates.

If availability_text is missing, politely end the call.

:four: Capture booking confirmation from Retell

When the lead confirms a time, Retell should send:

{

“booking_confirmed”: true,

“booking_details”: {

“confirmed_date”: “2026-02-09”,

“confirmed_time”: “10:30 AM”,

“timezone”: “America/New_York”,

“lead_name”: “John Smith”,

“lead_phone”: “+19105551234”

}}

This hits a second Make webhook.

:five: Create the appointment in GHL from Make

In Make:

Use GHL → Create Appointment

Map:

Date + time from booking_details

Contact phone

Calendar ID

GHL will automatically:

Send calendar invite

Send SMS/email reminders

Why This Fix Works

Retell call starts after availability exists

Availability is injected at call creation

No race condition between GHL and Make

No LLM guessing

Deterministic, repeatable demo behavior

Final Takeaway (for docs / support)

Retell will hallucinate dates unless availability is injected into the call context at call creation.

If GHL triggers the call before Make finishes, Retell will not read the latest availability.

The call must be started from Make using /v1/calls with variables injected.