A lot of people are saying WOL doesn't work over the internet, but I've got it working.
Basically port forward UDP 9 to your broadcast address (the last possible IP in your subnet), eg. 192.168.1.255
. Then send the WOL to your public IP which will then get broadcasted out over your network by your router.
Typing this out, I realised this seems like a horrible security practice, so I'll probably disable it soon anyway, now that I've got multiple servers and a failover VPN.