Hello Zoho,
I am currently working on integrating webhooks in my application so that it gets notified of subscription modifications. The goal is to not have to poll the Zoho API and reduce the usage.
The problem I am facing now is that my customers can easily figure out I'm using zoho services, and could potentially find the webhook URL used. With both information in their hands they can then forge a webhook request to make my application think that a subscription has been renewed.
- I could create a hard to predict URL for the webhook, but that's not bulletproof.
- I could crosscheck the webhook's payload with an API call, but that would increase my API usage.
- I could "resync" by fetching all zoho events at the end of the day everyday, but that would give the user a day's worth of free subscription and he could then redo it everyday.
So I'm think of implementing the first and last possibility, if a resync finds out a user cheated on me, they are marked as cheaters and treated as so, from now on if I receive a webhook for that user I use the second option to make sure I'm not getting cheated again.
This seems like a heavy lifting work for just something that could be done using private tokens... Please, before I start working on all this, could you share how you are handling it? And if the Zoho team could provide me with a "best practice" for handling webhooks, I'd appreciate it much.