Skip to content

Troubleshooting

  1. Go to Tools → Scheduled Actions
  2. Check the status of wpify_send_email actions
  3. If they are in “Failed” status, check the errors

If you have DISABLE_WP_CRON in wp-config.php, you need to set up an external cron:

Terminal window
# Every minute
* * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron

If you are using an SMTP plugin:

  1. Check SMTP settings
  2. Verify login credentials
  3. Try sending a test email

A short delay (usually up to 1 minute) is normal. Emails are sent asynchronously during the next cron run.

If cron only runs on page visits:

  • Set up an external cron for regular execution
  • Or use a service like UptimeRobot for regular pings
  1. Check wp-config.php:

    define( 'DISABLE_WP_CRON', true ); // Problem
  2. If disabled, set up an external cron

Some security or cache plugins may block cron. Check:

  • Security plugins (Wordfence, Sucuri)
  • Cache plugins (W3 Total Cache, WP Super Cache)
  1. Check the WordPress debug log:

    wp-content/debug.log
  2. Check the server error log

If you see the error “Email args not found”:

  • Data may have been deleted before sending
  • Check the wp_options table
// Get the number of pending actions
$pending = as_get_scheduled_actions( [
'hook' => 'wpify_send_email',
'status' => ActionScheduler_Store::STATUS_PENDING,
] );
echo 'Pending emails: ' . count( $pending );
Terminal window
# Using WP-CLI
wp cron event run --due-now
# Or using Action Scheduler
wp action-scheduler run
-- Find stored emails in wp_options
SELECT option_name, option_value
FROM wp_options
WHERE option_name REGEXP '^[a-f0-9]{32}$'
LIMIT 10;

If a large number of actions are accumulating:

  1. Check that cron is running regularly
  2. Consider increasing the action limit per run:
    add_filter( 'action_scheduler_queue_runner_batch_size', function() {
    return 50; // Default is 25
    } );

Action Scheduler keeps action history. For cleanup:

// Automatic cleanup older than 30 days (default)
add_filter( 'action_scheduler_retention_period', function() {
return 7 * DAY_IN_SECONDS; // 7 days instead of 30
} );