I’ve had same problem and found that CF7 didn’t properly attach reCaptcha’s API.
You’ll need to insert the following inside template with form in it, or globally:
(insert before call for wp_head())
wp_register_script('recaptcha_api', 'https://www.google.com/recaptcha/api.js');
wp_enqueue_script('recaptcha_api');
…or just hardcode script into site header (maybe even footer)
Also I don’t like that after message is sent, anchor link is still present in url (like contact/#wpcf7-f326-p41-o1), which resends message on every page reload and browser always ask “are you sure you want to resend your data?”.
Found nice solution for that:
(insert this js somewere inside page with contact form)
var reg = window.location.href;
reg = reg.replace(/#wpcf7.+$/i, "");
window.history.pushState('Some String','Title', reg);