How to insert a single row to WP database table?

In your code, if an email is set and validated (which I suppose should be the normal case), your code will exit at wp_die(), and never reaches the $wpdb->insert.

Your $wpdb->insert statement will only ever be reached if an email is not set, or if “validation” is false.

You might want to get rid of the wp_die() call altogether, or place that call at the very end of your function, depending on your needs.

Other than that, try determining whether your function is called at all (might be something wrong with the AJAX call itself).