I have the same issue as the one here: CiviEvent - Error when registering: Could not find valid value for id However the solution mentioned does not work for me. Besides on the demo site http://wpmaster.demo.civicrm.org/ no base page is set and it works. Any help is greatly appreciated.

I'm on WP 4.4.2, civi 4.7.7

The error from the log is below:

May 20 10:06:31  [info] $Fatal Error Details = Array
    [message] => Could not find valid value for id
    [code] => 

May 20 10:06:31  [info] $backTrace = #0 /nas/content/staging/theexecnet/wp-content/plugins/civicrm/civicrm/CRM/Core/Error.php(371): CRM_Core_Error::backtrace("backTrace", TRUE)

1 /nas/content/staging/theexecnet/wp-content/plugins/civicrm/civicrm/CRM/Utils/Request.php(120): CRM_Core_Error::fatal("Could not find valid value for id")

2 /nas/content/staging/theexecnet/wp-content/plugins/civicrm/civicrm/CRM/Event/StateMachine/Registration.php(52): CRM_Utils_Request::retrieve("id", "Positive", Object(CRM_Event_Controller_Registration), TRUE)

3 /nas/content/staging/theexecnet/wp-content/plugins/civicrm/civicrm/CRM/Event/Controller/Registration.php(47): CRM_Event_StateMachine_Registration->__construct(Object(CRM_Event_Controller_Registration), TRUE)

4 /nas/content/staging/theexecnet/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(307): CRM_Event_Controller_Registration->__construct("Event Registration", TRUE, "null", NULL, "false")

5 /nas/content/staging/theexecnet/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(86): CRM_Core_Invoke::runItem((Array:15))

6 /nas/content/staging/theexecnet/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(54): CRM_Core_Invoke::_invoke((Array:3))

7 /nas/content/staging/theexecnet/wp-content/plugins/civicrm/civicrm.php(1229): CRM_Core_Invoke::invoke((Array:3))

8 /nas/content/staging/theexecnet/wp-content/plugins/civicrm/includes/civicrm.basepage.php(132): CiviCRM_For_WordPress->invoke()

9 [internal function](): CiviCRM_For_WordPress_Basepage->basepage_handler(Object(WP))

10 /nas/content/staging/theexecnet/wp-includes/plugin.php(601): call_user_func_array((Array:2), (Array:1))

11 /nas/content/staging/theexecnet/wp-includes/class-wp.php(692): do_action_ref_array("wp", (Array:1))

12 /nas/content/staging/theexecnet/wp-includes/functions.php(952): WP->main("")

13 /nas/content/staging/theexecnet/wp-blog-header.php(14): wp()

14 /nas/content/staging/theexecnet/index.php(17): require("/nas/content/staging/theexecnet/wp-blog-header.php")

15 {main}

enter image description here enter image description here

  • please check civicrm log message for more detailed error - even this is not helping this can be for any reason May 20, 2016 at 10:29
  • Also i can see that you are getting a Thankyou page screen - so everything in Civi should be alright - event should have been completed - I guess May 20, 2016 at 10:33
  • I've added the log message in the question. Yes, event registration is completed (same as the other bug), but how do I get rid of this error screen.
    – Stoycho
    May 20, 2016 at 10:47
  • did you manage test contribution page - is it working ? May 20, 2016 at 10:55
  • yes contributions are working
    – Stoycho
    May 20, 2016 at 12:05

3 Answers 3


use the civicrm events register link after /civicrm/ not after root.


The error message indicates that the id parameter (the event ID) is not being found in the URL or the form object that gets carried from step to step through the event registration process. Obviously the event ID is set at one point: the correct event is showing up. However, it's failing later.

WPEngine has very aggressive caching. I haven't tried using CiviCRM there in years, but it used to have serious problems with things like this. Certain aspects of a page would be cached so that certain URL parameters would never have any effect. Basically, WPEngine knows how to cache in ways that retain distinctions between WordPress pages, but it might not know all of the CiviCRM URL parameters to pay attention to.

Absent any other glaring issue with your setup (though you really should set a base page), you might try the site on a more traditional server environment.

  • not in this case, WPEngine does not cache on staging. On Live if you /civicrm/ as a base page and exclude it from caching - /civicrm/* - it should be fine. It is CiviCRM that has to display some message about this in the admin area - i.e. to use /civicrm/ as a base page
    – Stoycho
    May 23, 2016 at 17:07
  • I agree about the lack of warning: originally there was no support for alternate base pages--I built the feature for a client of ours soon after CiviCRM started supporting WordPress. Starting in 4.6, all of a sudden CiviCRM started presuming that everyone has a base page since it started creating one for everyone on install. Sites upgrading to 4.6 never got any notice that they should set one up, though.
    – Andie Hunt
    May 23, 2016 at 19:07
  • I hope this helps someone else - I installed and upgraded to Civi 4.7, w/WP frontend. Events are listed on a Calendar plugin. After loading and converting the database, I got this error. Event though I had defined a civicrm base page, I noticed on the browser tab that that page wasn't what was displayed. I had to re-enter the links to Events in the shortcode for the WP calendar. Otherwise, using the links from the Calendar would result in "Could not find valid value for id" Aug 10, 2017 at 0:28
  • And just for anyone who gets into technical details, the error comes after the call to controller->reset - the event ID is no longer stored in the session, and the next time the controller in Events is instantiated that is the error that comes from Request:retrieve($name, $type, $store) Aug 10, 2017 at 0:33

I had this problem intermittently for some time when embedding event registration forms using a Wordpress shortcode. It has to do with page caching. CiviCRM parses the shortcode to capture the event ID and adds the id value to the global $_GET object. If the page is loaded from cache (usually when the back/forward button is pressed) the code that parses the shortcode does not run, and the event ID is not added to $_GET.

I was able to fix this issue by making a page cache exception with the caching plugin I'm using.

I think this behavior is essentially a bug and CiviCRM should output a hidden form variable with the event ID so that it still gets passed to the "Thank You" page if the registration form is loaded from cache.

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.