I'm working on a plugin which will involve accepting PayPal Instant Payment Notifications. IPNs are a web-hook which gets called when a payment is processed. Currently I have a script to handle the IPNs within the plugin e.g.


I then paste this URL into the PayPal developer settings area.

I'd like to use a more customizable location for the IPN handler (with a friendlier URL).

I was thinking maybe a shortcode could be used to give 'handler' functionality to any page it's inserted in. Is this a sensible idea? Does anyone have any suggestion on how I can make the URL of the handler shorter?



You can hook to the init action and then check for the query variable, you can use the PayPal provided query var or you can use your own custom query var.

I will give you example of your own custom query var i.e MYIPN_LISTENER

The Code:

function wpse58656_paypal_ipn_listener() {
    // check for your custom query var
    // If you are paranoid you can also check the value of the var
    if ( ! isset( $_GET['MYIPN_LISTENER'] ) ) {
        // if query var is not present just return

    // do the processsing here

    // don't forget to exit when you are done
add_action( 'init', 'wpse58656_paypal_ipn_listener' );

Now you can use any URL but it should have MYIPN_LISTENER as a query var e.g: http://mywordpressinstall.com/?MYIPN_LISTENER=1

| improve this answer | |
  • I was going to ask exactly the same question pertaining to another event notifier. +1 for saving me the trouble. – helgatheviking Nov 10 '12 at 18:00
  • @hameedulllah-khan can I just ask why you have to exit? – helgatheviking Nov 10 '12 at 18:35
  • You have to exit because your hooking into WordPress init function, init is run before WordPress sends any headers back. If you will not exit than WordPress will start sending headers and content which is not required in this case. – Hameedullah Khan Nov 11 '12 at 9:13
  • ok. makes sense. thank you for the additional explanation. – helgatheviking Nov 11 '12 at 15:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.