This is what I got from paypal
Thank for you contacting PayPal Merchant Technical Support. I'm sorry for the delay in response.
For the kind of use case you're having here, IPN is a good choice. Furthermore, you're using WooCommerce to deal your backend, and I believe they require you to use IPN to make the back office stuff automated.
What you should do is to follow the WooCommerce instruction/guide. Since you're using WooCommerce , there's no need for you to prepare the IPN script as I believe they have it by their own. What you should do is to go into your PayPal account's profile and enable IPN. Inside the text box where it says you should paste the IPN URL, you should enter your URL as http://yoursite.com/checkout/order-received and if you want maintain your traffic source, paste in http://yoursite.com/checkout/order-received/?utm_nooverride=1 instead.
And that's it, your IPN should be enable now.The reason you don't need to put any IPN script is because WooCommerce will generate them for you and handle all the parsing for you. As long as you set it WooCommerce correctly and IPN too, it should be working as you want.
Will update when I test this.