It is hard to say what the right approach is, and giving a more direct answer without more information.
If you want to "catch" a package sent to the server from the client, than you can do this with almost any Linux / Unix system.
If you have a firewall (or in this case OpenWRT router) in between server and client you can parse the logs of the firewall, tcpdump or what OpenWRT offers.
When a package is received by the firewall with destination of the 'sleeping'-server with WoL UDP package pattern from the client, you know that the server has received it. You can than wait for any amount of time before you than send your payload.
Best approach
If you have a monitoring service you can send the WoL UDP package, and than wait for your monitoring service such as Zabbix to indicate that the server is now fully 'awake'. Than execute your payload.
Some people claim what I described is not possible
It is highly possible.
without losing significant bandwidth
Their is no reason you should lose any throughput over this.