IPN Notification URLs are hard; make them easy

2020-07-28 08:10
Written by
AllenShaw - member of the CiviCRM community - view blog guidelines

Part of the setup for a payment processor (like PayPal or Authorize.net) involves configuring some kind of pingback/notification URL so that the payment service can notify CiviCRM of payment completion or failure, especially on recurring contributions. This means you have to know the correct URL for that specific CiviCRM payment processor on your site.

If this isn't set up correctly you may see one or more of the following symptoms in CiviCRM:

  • Payments not marked as "Completed".
  • New payments not recorded in CiviCRM.

This notification URL is not something you often need to think about, but when you do, it can be a little complicated to figure out. From the docs:

Screenshot from civicrm documenattion: See below for the full address to add to the endpoint (replace NN with your actual ID number):

For Drupal and Backdrop: https://example.com/civicrm/payment/ipn/NN
For Joomla: https://example.com/?option=com_civicrm&task=civicrm/payment/ipn/NN
For WordPress: https://example.com/?page=CiviCRM&q=civicrm/payment/ipn/NN
Got it?

At Joinery, we've encountered a few clients over the years who, already stressed that their payments don't seem to be recording correctly, had a really hard time determining the correct URL. And being sure that URL is right goes a long way toward diagnosing such problems. It's an easy fix if you can easily determine the URL; but it's nerve-wracking if you're not sure.

So, we created a simple extension to make it easy.

The CiviCRM Easy IPN URL extension is pretty simple. It just adds a new link in CiviCRM's Payment Processor listing that displays the proper notification URL, with a single click. This way you don’t have to piece together a URL on your own or instruct clients on how to formulate such a URL themselves.

Learn more or download the extension yourself here, and let us know how it helps you -- and of course, requests for improvements are always welcome.


This looks handy! I'm wondering if this should be core functionality?