GoHighLevel birthday or date triggers firing at the wrong time

Short answer
GoHighLevel's Birthday Reminder trigger runs daily at 8 AM in the account's time zone and skips contacts with an empty or badly formatted date of birth. The Custom Date Reminder fires before, on or after a date field, set by its days-before or days-after filters. To send at a specific hour, add wait steps; the workflow's time zone setting decides whether later steps follow the account's or the contact's time.
How to fix it
- Know when it runs. Birthday Reminder fires at 8 AM in the account time zone. Add a wait to send later in the day.
- Check the dates. Contacts with an empty or badly formatted date of birth are skipped. Store and import dates as MM/DD/YYYY.
- Check the filters. Before or after a number of days, day, month, and for custom dates whether to match the year too.
- Check the time zone and window. Workflow Settings: account or contact time zone, and the time window, either of which can move send times.
- Test it. Set a test contact's birthday to tomorrow, or use a days-before filter.
- Other date fields. Custom Date Reminder also works on opportunity, company and custom object dates.
Common questions
- What time does Custom Date Reminder run?
- HighLevel doesn't document a time of day for it; add a wait to control the hour.
- Why did a birthday text arrive at 5 AM?
- The account time zone is ahead of the contact's. Use the contact time zone in workflow settings, and a wait.
More workflow fixes
GoHighLevel sending duplicate text messages
Usually two triggers firing on one event, re-entry left on, or the same person saved as two contacts.
GoHighLevel workflow not triggering: a checklist
Usually it's still in Draft, the trigger filters don't match, or re-entry is off. The execution logs tell you which.
GoHighLevel workflow Wait step not working, or contacts stuck
Usually the wait is waiting exactly as set: for a reply or event with no timeout, inside an advanced window, or on timing that was edited later.
GoHighLevel workflow Goal Event not firing
Only one goal per workflow, each contact is checked against it once, and the event or filter has to match exactly.
GoHighLevel trigger links not tracking clicks
Usually a pasted URL instead of the trigger link itself, no workflow listening for the click, or a filter pointing at a different link.
GoHighLevel If/Else branch not matching
Usually AND and OR grouped wrong, a field updated in the same second as the check, or data that isn't there when the step runs.
GoHighLevel custom values or fields showing blank in messages
The contact has no value saved, the workflow doesn't supply it (appointment fields need an appointment trigger), or it was typed instead of picked.
Related fixes
GoHighLevel appointment reminders going out at the wrong time
Usually the workflow's time zone, a fixed wait instead of one timed from the appointment, or calendar notifications sending a second copy.
Read the fix
Want GoHighLevel set up and running for you?
Book a free 15-minute call. Tell us what you sell and where your leads come from, new account or the one you have, and we'll tell you what we'd set up, how long it takes and what it costs.