Gravity Forms Delayed Notifications
Schedule Sending Gravity Forms Email Notifications by Period-of-Time, Specific-Date, or Form-Field from the Moment of Submission
If you have any issues with your delayed email notifications not going out at the exact time they’re scheduled to, then it could be related to your website’s traffic.
Our Delayed Notifications plugin uses WordPress’s scheduling system (WP-Cron) to send emails at a specific time or after a defined delay. In most cases this works reliably, but in certain environments emails may run late or not fire exactly on schedule. One thing that can help in improving reliability of the WP-Cron would be to set up a recurring 5-minute Cron job based upon your webhost server instead of having the CRON driven by site traffic (the default way).
This article explains why this happens, how to fix it, and how to confirm everything is working correctly.
Why This Happens
WordPress does not run scheduled tasks on a real clock by default.
Instead, WP-Cron is triggered when someone visits your website. This means:
- On low-traffic sites, scheduled emails may run late or not fire on time
- On high-traffic sites, cron jobs may be delayed due to server load
- Time-sensitive emails (for example, “send at exactly 11:00 AM”) are most affected
This behavior is expected and not specific to this plugin.
Recommended Solution: Use a Real Server Cron Job
For reliable, time-accurate delivery, we strongly recommend replacing traffic-based WP-Cron with a real server Cron job.
A server Cron runs on a fixed schedule regardless of site traffic and ensures delayed notifications fire consistently.
Is Running a Cron Every 5 Minutes Safe?
Yes. Running a Cron job every 5 minutes is not performance-draining.
A server Cron execution is no different than a single visitor loading your site. Even running it every minute has minimal impact on most hosting environments.
For time-specific notifications, 5 minutes is the recommended interval.
Running the Cron less frequently (for example, once or twice per hour) can cause scheduled emails to:
- Send late
- Miss their intended delivery time
Step 1: Disable WordPress’s Default WP-Cron
When using a real server Cron, you must disable the default traffic-based WP-Cron to prevent conflicts.
Add the following line to your wp-config.php file:
define('DISABLE_WP_CRON', true);
This ensures scheduled events are handled only by the server Cron.
Step 2: Set Up a Real Server Cron Job
Your hosting provider will manage this step. The exact setup varies by host.
For SiteGround users, follow this guide:
https://www.siteground.com/tutorials/wordpress/real-cron-job/
Key points to confirm:
- The Cron changes into your WordPress directory (
cd /path/to/wordpress) - It runs WP-Cron using WP-CLI (
wp cron event run --due-now) - It runs every 5 minutes
Once configured correctly, the Cron takes effect immediately. There is no delay or warm-up period.
Step 3: Verify That Delayed Notifications Are Running
To confirm that delayed notifications are being scheduled and executed correctly, we recommend installing a Cron management plugin.
Install WP Crontrol
How to Check the Cron Event
- Submit a Gravity Form entry with a delayed notification (for example, scheduled for 11:00 AM)
- Open Tools → Cron Events in WordPress
- Search for the following cron event:
gfdn_send_after_delay
What you should see:
- Before the scheduled time:
Thegfdn_send_after_delayevent should appear in the list - After the scheduled time passes:
The event should disappear and the email should be sent
If the event remains after the scheduled time, it means the Cron did not execute and the server Cron setup should be reviewed.
Optional: Manual Testing
You can also manually test the cron event as shown in this screencast:
- Click Run next to
gfdn_send_after_delayin WP Crontrol - If the email sends immediately, the plugin is functioning correctly and the issue is Cron execution
Summary
If delayed notifications are not sending at the exact scheduled time, the cause is almost always WP-Cron behavior rather than a plugin issue.
To resolve this:
- Disable default WP-Cron
- Set up a real server Cron running every 5 minutes
- Verify execution using WP Crontrol
Once these steps are complete, delayed notifications should send reliably and on time, regardless of website traffic.