Hourly events don’t get triggered

You probably don’t have enough visitors on your site. Although it looks otherwise WordPress doesn’t actually schedule the events. It writes the time when it should happen to the database, and only when somebody visits the site WP gets fired up, checks the database and fires the event.

So, if nobody is around at the time you want it, your event won’t happen.

What you need to do in order to make sure that an event fires exactly at the time you want, is circumventing WP’s own scheduling system and schedule it directly with the operating system. If you google for “wordpress force cron job” you will find plenty of tutorials. I like this one.

This, of course, won’t work if you have no access to a cpanel or other hosting service that allows you to set up a cron job (as you say). In that case google for “free cron job”. That will give you a server that will act as the hourly visitor that fires the event.