Custom module menu item declaration leads to error 404
I would guess that trailing slash on the path is throwing you

$items['eventi/book/%'] = array(
  'title' =&gt; 'Book',
  'page callback' =&gt; 'eventi_book',
  'access arguments' =&gt; array('allow booking'),
  'page arguments' =&gt; array(2),
  'type' =&gt; MENU_CALLBACK
);


Also, if you use %node for the variable in the path, the menu router will call node_load() on the given nid from the path and you'll get the full $node object in your callback function, like so:

$items['eventi/book/%node'] = array(
  'title' =&gt; 'Book',
  'page callback' =&gt; 'eventi_book',
  'access arguments' =&gt; array('allow booking'),
  'page arguments' =&gt; array(2),
  'type' =&gt; MENU_CALLBACK
);

// ...and so on, until...

function eventi_book($node) {
   return $node-&gt;title;
}


Also note that your callback function should return a value, not echo it.