If you can see it in ngrok but not in your server.
That would suggest that ngrok ↔ server is not working as expected
Your code looks like when you get a POST to your sever, then you are creating a subscription.
Which is wrong in the work flow here.
This example might help
https://github.com/BarryCarlyon/twitch_misc/blob/main/eventsub/handlers/nodejs/receive.js
Using express, this example only handles POST/webhooks in.
You use another system to create a subscription request, and this example replies to that request and handles incoming data