When a workflow starts from a Contact Tag, Pipeline Stage, or the 'Test Workflow' button, HighLevel runs in Contact scope rather than Appointment scope—so {{appointment.start_time}} and {{appointment.end_time}} are sent as empty strings.
Switch the workflow trigger to an Appointment event ('Appointment Status = Confirmed' or 'Customer Booked Appointment'), add a native Date/Time Formatter step to output clean ISO-8601 timestamps, and pass those formatted fields in your Outbound Webhook.
Fix our GoHighLevel Outbound Webhook workflow where appointment.start_time and appointment.end_time arrive blank:
1. Check the workflow trigger and replace any Contact-scoped trigger (like Contact Tag Added or Opportunity Changed) with "Appointment Status" (Status = Confirmed) or "Customer Booked Appointment".
2. Add a native "Format Data — Date/Time Formatter" action before the Outbound Webhook to format {{appointment.start_time}} and {{appointment.end_time}} as ISO-8601 timestamps.
3. Map the formatted timestamps into explicit Custom Data keys on the Outbound Webhook action.
# 1. MCP Tool Call (ghl-crm-mcp)
{
"tool": "workflows_create_from_recipe",
"arguments": {
"location_id": "<YOUR_LOCATION_ID>",
"recipe": "appointment_iso_timestamp_webhook",
"trigger": "appointment_status_confirmed",
"dry_run": true
}
}
# 2. Or run via ghl-crm Rust CLI
ghl-crm workflows apply-recipe --location-id <YOUR_LOCATION_ID> --recipe appointment-iso-webhook --dry-run
Enable both Linked Calendar and Conflict Calendar sync on Google/Outlook, require a two-way 'Reply C to confirm' SMS 3 hours before the slot, and auto-text a 1-tap reschedule link if unconfirmed.
PLAYBOOK T22 · Workflows & AutomationFetch a real sample request inside your Inbound Webhook Trigger (never use the 'Test Workflow' button), add a native Format Data -> Format Phone Number (E.164) step first, and map the formatted phone and email into Create/Update Contact.
PLAYBOOK T10 · Workflows & AutomationUse HighLevel's built-in Format Data, Math Operation, Goal Events, and Inbound/Outbound Webhook steps inside a single native workflow so contact history and error logs stay in one place.
PLAYBOOK T13 · Calendars & BookingHave your Voice AI or intake form ask for the caller's preferred neighborhood or zip code first, then route them to a partitioned location calendar and text a matching Google Maps pin.
Connect Claude Code, Cursor, or OpenAI Codex to our ghl-tools MCP Server & Rust CLI for 30-second sub-account doctor checks, --dry-run previews, and snapshot diffs—or start/upgrade your GoHighLevel plan through our partner link to unlock up to $612+ in implementation kits (including GHL Workflow Recipe Pack ($47 — or Free with Trial)) and our weekly live engineering clinics.