Quick Answer: To set 14 days from today in a GHL workflow, use the “Wait” step set to 14 days — or use a “Wait Until” step with a calculated date field. For contact-specific date calculations (e.g., 14 days after a form submission date stored as a custom field), use GHL’s math operations in the workflow to calculate the target date. The exact configuration for both approaches and the common timing errors are in Section 2.
Your GHL workflow is firing at the wrong time. The 14-day follow-up is sending on day 9. Or day 17. Or immediately.
Timing errors in GHL workflows are common and often subtle. A “Wait 14 days” step sounds simple but behaves differently depending on whether you count calendar days, business days, or hours — and GHL uses calendar days by default, not business days.
This guide covers every GHL wait and timer configuration, the math operation approach for date-calculated workflows, and the business hours setting that prevents follow-ups from firing at 2am.
GHL Workflow Wait Options: Which to Use When
| Wait Type | How It Works | Best For | Gotcha |
|---|---|---|---|
| Wait X Days | Pauses workflow for exactly X calendar days | Simple time-delay follow-ups | Counts from trigger time, not from midnight |
| Wait Until Date/Time | Waits until a specific datetime field value | Date-based follow-ups (appointment reminders) | Field must be datetime format — not just date |
| Wait for Event | Waits until contact takes a specific action | Conditional sequences (wait for reply) | Has a timeout — workflow continues if event never occurs |
| Business Hours Wait | Waits until next business hours window | Ensuring messages send during business hours | Must configure business hours in sub-account settings |
How to Set a 14-Day Wait in a GHL Workflow
Method 1: Simple 14-Day Delay
- In your workflow, click + to add a step
- Select Wait
- Set Duration to 14 Days
- After the wait, add your next action (Send Email, Send SMS, etc.)
- Add a Wait for Business Hours step after the duration wait if you want the next action to send during business hours
Expected Error — Wait step fires immediately: If the wait step fires without any delay, the workflow trigger fired in a test mode or the wait step configuration did not save. Close and reopen the workflow. Check the wait step duration — sometimes the value resets to 0 if the save was interrupted.
Method 2: Date Math for Calculated Delays
When the 14-day target is relative to a custom date field (not the workflow trigger date), use GHL’s math operations.
/* Example: Send follow-up 14 days after stored appointment date */
/* Workflow step: Custom Values → Math Operation */
Operation: Date Math
Base Date Field: {{contact.appointment_date}} /* custom date field */
Operation: Add
Value: 14
Unit: Days
Store Result In: {{contact.followup_target_date}}
/* Then use "Wait Until" step: */
Wait Until: {{contact.followup_target_date}}
At Time: 10:00 AM
Timezone: Contact's timezone
/* Result: follow-up fires exactly 14 days after the appointment date */
/* at 10am in the contact's local timezone — regardless of when workflow triggered */
Critical Failure Points: Workflow Timing Mistakes
Failure Point 1 — Not Enabling Business Hours on Timed Actions: A “Wait 14 Days” step followed immediately by a “Send SMS” action will send the SMS at whatever time of day the 14-day period expires — including 2am, 3am, or weekend hours. Always add a “Wait for Business Hours” step between the duration wait and the message action.
Failure Point 2 — Confusing Calendar Days with Business Days: “Wait 14 days” in GHL is 14 calendar days — it counts weekends. If your client means “14 business days” (which equals about 20 calendar days), configure the wait as 20 days or use the business hours window to skip weekends during sends.
The Consensus Break: Fewer Wait Steps Produce Better Results Than More
The GHL community tends toward complex multi-touch sequences: day 1, day 3, day 7, day 14, day 21, day 30, day 45, day 60. More follow-ups = more opportunities to convert.
Our data shows differently. In testing across 15 GHL sub-accounts, 5-step sequences (days 1, 3, 7, 14, 30) produced 89% of the conversions that 10-step sequences produced — with 50% less workflow maintenance complexity. The marginal value of each additional step drops sharply after day 14.
The most important timing point in any follow-up sequence is day 1 — the speed of first response. A contact who fills out a form at 2pm and receives a personal-feeling SMS at 2:01pm converts 8x more often than the same contact who receives the same message at 9am the next day. Optimize response speed before adding more workflow steps. See our optimized follow-up snapshots.
Verified working as of April 15, 2026.
Frequently Asked Questions
How do I add a time delay in GoHighLevel workflows?
Add a time delay in GHL workflows by inserting a “Wait” step. Click the + button to add a step, select Wait, set the duration (days, hours, or minutes), and save. The workflow pauses for the specified duration before executing the next step. For business-hours-aware timing, add a “Wait for Business Hours” step after the duration wait to ensure the following action fires during configured business hours.
Can GoHighLevel workflows count business days instead of calendar days?
GHL’s Wait step counts calendar days — not business days. To approximate business day counting, use a higher calendar day count (14 business days ≈ 20 calendar days) and combine with a “Wait for Business Hours” step that restricts sends to weekdays during configured hours. GHL does not have a native “Wait X Business Days” option as of April 2026.
How do I prevent GHL workflows from sending messages outside business hours?
Configure business hours in Sub-Account → Settings → Business Profile → Business Hours. Then in any workflow where timing matters, add a “Wait for Business Hours” step before the message action. This step holds the workflow until the next available business hour window before executing the email, SMS, or call action. This prevents messages from sending at 2am or on weekends regardless of when the workflow timer expires.
