What happens when an Event is deleted, or a contribution page is disabled, or a profile no longer exists?

Links i am thinking of include


http://dmaster.demo.civicrm.org/civicrm/contribute/transact?reset=1&id=14 You get a yellow page saying

Sorry but we are not able to provide this at the moment. The page you requested is currently unavailable.



If you are logged out you end up at the home page



You get a yellow page saying

Sorry but we are not able to provide this at the moment. The requested profile (gid=19) is inactive or does not exist.

  • Has anyone seen any progress on this issue? We are in the process of obsoleting one of our longest standing contribution page and google (and several other sites) still show the old one. I don't just want to turn it off without a good redirect. Mar 1, 2019 at 21:45
  • Did you read my answer below - and maybe give it a +1 while you are there :-). That extension is your friend.
    – petednz - fuzion
    Mar 2, 2019 at 4:06

2 Answers 2


This same issue bothers me because I see so many fatal errors in logfiles across multiple servers when all that is happening is that a contribution page has been disabled / removed. I'd love to see it addressed in core if possible; CiviCRM should be capable of handling invalid inputs without showing the end user an unthemed, unhelpful error message.

One extension does already address this - ca.bidon.reporterror. It includes an option to detect those fatal errors (a user hitting a contribution page with invalid ID, or a disabled contribution page, or with an expired session) and redirect them to a default contribution page. This is a big improvement on the default behaviour! However, it's not included in core, and it comes bundled with other behaviours which might not be what all sites want.

Ideally, I'd like to make progress on tickets like CRM-19157: Replace CRM_Core_Error::fatal() with CRM_Utils_System::permissionDenied() so that we can drop the ugly (to users) and noisy (to sysadmins) "fatal" approach to handling invalid inputs in favour of a more "controlled landing" when things go wrong - which can both deliver a helpful and on-brand experience to the user seeing it, and reduce the level of log noise which results from the use of CRM_Core_Error::fatal() as a technique to bail out.

Instead we should deliver be delivering a nuanced experience to both users and admins: where we currently have CRM_Core_Error::fatal() we should throw an exception with information about what went wrong, and then CiviCRM can handle those exceptions appropriately. Broken contribute URL? Direct viewer to a default contribute page! User triggered IDS / DDOS / flood control? Maybe we can dispense with the pretty theme ...


There is also this extension from eileen at fuzion which lets admins set a default Contribution page to handle ones that don't exist any longer

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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