How the automation works

Your WordPress server fetches the calendar's .ics address on a schedule, compares what came back with what it already has, and creates, updates or removes events accordingly. There is no push from Google — no webhook, no notification — so “automatic” means “polled on a timer”.

That polling is where the trouble is.

WordPress cron is not a timer

This surprises people. WordPress's scheduler does not run on a clock. It runs when somebody loads a page on your site, and it checks whether anything was due. A site with steady traffic runs its scheduled jobs roughly on time. A site with quiet nights runs them whenever the next visitor turns up.

For a venue's website, this can mean the sync you configured hourly runs three times a day, in bursts, at whatever times people happened to visit. And on the morning you publish a change and check the site immediately, nothing has synced — because you are the first visitor.

The fix, in two steps

Add define( 'DISABLE_WP_CRON', true ); to wp-config.php, then create a real cron job — through your host's control panel or your server — that requests https://yoursite.com/wp-cron.php?doing_wp_cron every fifteen minutes. Most hosts have a scheduled-task page for exactly this, and several do it by default.

This is not specific to calendars. It fixes scheduled posts, backups and everything else that quietly depends on the same mechanism. It is one of the highest-value ten-minute changes on a WordPress site.

Do not confuse the two delays

Even with a perfect cron, Google regenerates its .ics export on its own schedule. So the total delay is Google's regeneration plus your polling interval, and polling every five minutes does not help if the file only changes every few hours.

Set polling to something sensible — hourly is generous — and if you need a change live immediately, use whatever manual “sync now” button the plugin offers.

Make failure visible

An unattended sync that stops working is the most expensive failure in this category, because it does not look like a failure. Your website shows a calendar with nothing coming up, which is what a quiet month looks like too. Nobody investigates a quiet month.

Whatever you use, make sure there is a screen showing the last successful fetch and the last error — and look at it occasionally. A calendar that has stopped syncing must be distinguishable from a calendar with no events.