Contact Form 7 sends an AJAX request and expects a JSON payload. The browser tries to parse the response as JSON. If the first character is “<", the parser throws an error.
The “<" usually belongs to an HTML document. It appears when the server returns an error page, a PHP warning, or any markup before the JSON data. The response may be a 404 page, a 500 error page, a security block page, or debug output.
When the error occurs the form never shows the success message. No email is sent. The console displays “Unexpected token ‘<' in JSON at position 0”. The network tab shows a 200 status but the response starts with "” or similar.