&hooks=`spam,email`
&hooks=`recaptcha,spam,email`
That's not right.
1) You should specify it only once. You'll probably see that only the last value is used, so the first is obsolete.
2) You're never telling it when to redirect or validate. Validation and Redirection is another hook in itself, so you need to add that in the &hooks property. Assuming you'd want to first validate the form, than the recaptcha, then check for spam, then send the email and finally redirect this is what your &hooks property would look like:
&hooks=`validate,recaptcha,spam,email,redirect`
See
http://rtfm.modx.com/display/ADDON/FormIt.Hooks for more information. Another thing there you can find on the spam hook is that it defaults to checking the "email" field for known spam emails. However you named your email field "contact_email" so you'd want to set another "spamEmailFields" property with that.
http://rtfm.modx.com/display/ADDON/FormIt.Hooks.spam
This can also become an issue:
&validate=`contact_name:required:minLength=`2`,
contact_email:email:required,
contact_message:required`
The nested `` (with the minLength) can tick off the parser. Instead you can use this which bypasses that:
&validate=`contact_name:required:minLength=^2^,
contact_email:email:required,
contact_message:required`