Skip to content


Starting in CiviCRM Version 5.25 CiviCRM's extern scripts have been exposed as WordPress REST endpoints.


  • PHP 7.1+
  • WordPress 4.7+
  • CiviCRM version 5.25


  1. civicrm/v3/rest - a wrapper around civicrm_api3()


    • key - required, the site key
    • api_key - required, the contact api key
    • entity - required, the API entity
    • action - required, the API action
    • json - optional, json formatted string with the API parameters/arguments, or 1 as in json=1

    It mimics CiviCRM's REST interface, by default all calls to civicrm/v3/rest return XML formatted results. To get json formatted results pass json=1 or a json formatted string with the API parameters, like in example 2 below.



    2.<site_key>&api_key=<api_key>&json={"group": "Administrators"}

  2. civicrm/v3/url - a substitution for civicrm/extern/url.php to track when links in mailings are clicked.

  3. civicrm/v3/open - a substitution for civicrm/extern/open.php to track when recipients open mailings.

  4. civicrm/v3/authorizeIPN - a substitution for civicrm/extern/authorizeIPN.php (for testing as per docs)

    Note: this endpoint has not been tested

  5. civicrm/v3/ipn - a substitution for civicrm/extern/ipn.php (for PayPal Standard and Pro live transactions)

    Note: this endpoint has not been tested

  6. civicrm/v3/cxn - a substitution for civicrm/extern/cxn.php

  7. civicrm/v3/pxIPN - a substitution for civicrm/extern/pxIPN.php

    Note: this endpoint has not been tested

  8. civicrm/v3/widget - a substitution for civicrm/extern/widget.php

  9. civicrm/v3/soap - a substitution for civicrm/extern/soap.php

    Note: this endpoint has not been tested


It is recommened to use the hook included in the code to replace the mailing url via the WP REST API. To do this create a plugin that includes the following:

add_filter( 'civi_wp_rest/plugin/replace_mailing_tracking_urls', '__return_true' )

Creating a standalone functionality plugin is recommended. You can read the WP docs on Writing a plugin, there is a good tutorial on a Functionality Plugin at ccs-tricks

Alternatively, but not recommended. you can set the CIVICRM_WP_REST_REPLACE_MAILING_TRACKING constant to true to replace mailing url and open tracking calls with their counterpart REST endpoints, civicrm/v3/url and civicrm/v3/open.

Note: use this setting with caution, it may affect performance on large mailings, see CiviCRM_WP_REST\Civi\Mailing_Hooks class.