Skip to content

Event Reminders

Event Reminders

A well-timed reminder the day before an event reduces no-shows and gives attendees a chance to review the details. Tickets Please automates this with a cron-based reminder that fires 24 hours before each event, respects timezones, and guarantees no attendee receives the same reminder twice.

How Reminders Work

Tickets Please registers a recurring hourly cron job (tec_event_reminders) that scans for events starting within the next 24 hours. When it finds a qualifying event, it sends the event_reminder email to every confirmed attendee for that event.

The process runs automatically in the background. You do not need to trigger it manually or schedule anything per event.

Timing

The cron job runs once per hour. On each run, it looks for events whose start time falls within a window centered at now + 24 hours, with a tolerance of plus or minus 30 minutes. This means:

  • An event starting at 7:00 PM tomorrow triggers reminders when the cron runs between approximately 6:30 PM and 7:30 PM today.
  • The 30-minute tolerance window accounts for the hourly cron schedule, ensuring no event is missed if the cron fires slightly before or after the exact 24-hour mark.

Timezone Awareness

The reminder timing uses the event’s timezone, not the server’s timezone. If your event is set to Pacific Time but your server runs on UTC, the 24-hour calculation is based on the event’s Pacific Time start. This ensures attendees in different timezones receive reminders at the appropriate time relative to the event.

Recipients

Reminders go to all attendees in completed status for the event. Attendees in other states are excluded:

  • pending — not yet confirmed, so no reminder
  • checked_in — already at the event (rare for a 24-hour-before reminder, but excluded for correctness)
  • refunded, cancelled, failed, expired — no longer attending

If an attendee’s status changes between the reminder send and the event (e.g., they cancel after receiving the reminder), the reminder has already been delivered. No recall is attempted.

Deduplication

A transient-based deduplication system prevents double-sends. After sending reminders for an event, Tickets Please stores a transient keyed to the event ID. If the cron job runs again before the transient expires, it skips that event.

This protects against two common scenarios:

  1. Overlapping cron runs — if a cron execution takes longer than expected and the next hourly run starts, the same event is not processed twice.
  2. Manual cron triggers — if you or a plugin triggers wp_cron manually (e.g., via WP-CLI or a cron management plugin), deduplication prevents duplicate emails.

Email Content

The reminder uses the event_reminder email template. Like all Tickets Please emails, it supports the full set of placeholders:

  • {event_name} — the event title
  • {event_date} — the formatted event date
  • {event_time} — the formatted start time
  • {event_venue} — the venue name
  • {event_url} — link to the event page
  • {attendee_name} — the recipient’s name
  • {site_name}, {site_url} — your site details

Customize the subject line and body in Events > Settings under the event reminder email section. See Email Customization for full template editing instructions.

Enabling Reminders

Event reminders are not enabled by default. To turn them on:

  1. Go to Events > Settings in the WordPress admin.
  2. Find the Event Reminder email settings.
  3. Toggle Enable to on.
  4. Optionally customize the subject line and body template.
  5. Save your settings.

Once enabled, reminders activate automatically for all future events. No per-event configuration is needed.

WP-Cron Considerations

WordPress cron is triggered by site visits, not by a system-level scheduler. On low-traffic sites, cron jobs may not run at exactly the scheduled time. If your site gets minimal traffic outside business hours, the hourly reminder cron might not fire until the next visitor arrives.

To ensure reliable timing, set up a real system cron job that hits wp-cron.php on schedule:

Terminal window
*/15 * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Then disable WordPress’s built-in cron trigger by adding this to wp-config.php:

define( 'DISABLE_WP_CRON', true );

This combination ensures the reminder cron fires reliably regardless of site traffic.

Common Questions

Can I change the reminder timing to something other than 24 hours? The current implementation sends reminders at the 24-hour mark only. There is no admin setting to change the timing window.

What if I enable reminders for an event that starts in less than 24 hours? If the event’s start time has already passed the 24-hour reminder window, no reminder is sent. Reminders only fire for events that enter the window after the feature is enabled.

Can I send reminders manually? There is no manual “send reminder” button. The reminder system is fully automated. If you need to send a one-off communication to attendees, use the Event Update notification instead (see Event Updates).

Do RSVPed attendees receive reminders? Yes, as long as they are in completed status. The reminder system treats all confirmed attendees the same regardless of whether they registered via RSVP or ticket purchase.

How do I know if reminders were sent for an event? Check your server’s mail logs or your SMTP plugin’s email log. Tickets Please does not maintain its own sent-email log in the admin interface.

Will attendees get a reminder if the event has been updated? Yes. The reminder system operates independently from the event update notification. Attendees may receive both an update notification and a reminder if the event was modified and is also within the 24-hour window.

Next Steps