The webhook URL must be Twitter-validated at setup by GET method to the specified (Bubble app) endpoint. The endpoint should send a token back in response (Challenge-Response Check) to validate the webhook, which is now ready to receive events at this point.
BUT this CRC check via GET is performed every 24 hours. Failure to do so invalidate the said endpoint for security reasons.
However, this webhook URL is also used to listen to Twitter using POST method.
If I am not mistaken, it implies that the Bubble app Backend API endpoint must support both GET and POST methods - which is not possible in Bubble apparently, only GET or POST.
In a situation like this I would probably use a CloudFlare service worker. I’ve done this previously to handle converting GET requests to POST requests (pre Bubble supporting GET requests natively).
Sure it’s an intermediary, but it’s in your own CloudFlare account and isn’t doing any processing, it’s just passing the request through.