My first idea was that the client should be responsible for checking periodically if payments are due and doing them. But now I think that it’s better if a server (zapplepay/zapplanner/recipient server is doing it). The zap events can be authored by a 3rd party while the subscription event is authored by the end-user once, at the start.
Discussion
Should the NWC pay request be updated to add the event that you are zapping, instead of just the invoice? Then wallets can show users in a decent way what they were paying.