Talal Khawaja, home

Blog · GoHighLevel

The reminder time was wrong. The calendar was right. Audit Logs said why.

A GoHighLevel appointment showed the right time on the calendar but the wrong time in the reminder. The answer wasn't in any workflow. It was in the contact's Audit Log.

The symptom

An appointment sat at the correct time on the GoHighLevel calendar, but the reminder message for the same appointment quoted a different time. Nothing in the workflow looked wrong, and the calendar settings looked fine.

In a small account you'd open every workflow and check it. In a busy account, with leads arriving from website forms, Facebook Ads, Zapier, n8n, direct API calls and a job-management integration, that's an afternoon gone.

The question that actually matters

"What's wrong with the reminder?" is the wrong question. The useful one is:

What changed this contact, and when?

Was it a form submission? A workflow action? A Zapier step? An API call? A team member editing the record by hand? GoHighLevel already records the answer.

Where the answer was

The contact's Audit Log showed a form submission updating the contact's timezone. Filtering one affected contact's history showed that field changing again and again.

The form had "Enable Timezone" switched on, so each submission overwrote the contact's timezone field. The calendar kept the appointment's own time, but the reminder rendered that time in the contact's timezone, which was now wrong.

It was a small setting that caused a lot of confusion.

The fix

Correct the form setting, repair the affected contacts, then re-run the path with a test contact. The reminder workflow itself didn't need changing: its wait steps were fine all along.

The debugging order I use now

  1. Find one affected contact.
  2. Open its Audit Logs.
  3. Look at what changed around the time things went wrong.
  4. Identify who or what made the change: a form, a workflow, an integration, an API user or a staff member.
  5. Follow that source.

Only after that do I open workflows.

Why this generalises

The more intake sources an account has, the less useful "inspect every automation" becomes, and the more useful the change history is. Audit Logs turn a search across a whole account into a lookup on one record.

It's the same instinct I use outside GoHighLevel. When a system has several writers, start from the evidence of what actually wrote to the record, not from your list of what might have.

If you want the wider version of this check, the free GoHighLevel automation audit checklist covers Audit Logs, timezones, wait steps and the other places a busy account goes wrong.


This comes from my professional GoHighLevel work; the organisation and its customers stay anonymous. Related: GoHighLevel · workflow automation.

Work like this runs through Teqprotech · GoHighLevel Systems , Workflow Automation (Zapier, n8n, webhooks)

More writing

Keep reading