If you need to send the form from a Contact Form 7 (CF7) form to another URL you can use this simple PHP script. Just add it in your WordPress functions.php file inside your theme.
// define the URL where data should be submitted, this constant can be stored in your `wp-config.php` file
define('CF7_TO_API_URL', 'https://...........');
function action_wpcf7_mail_sent( $contact_form ) {
// you can limit this script to certains forms, just change the IDs (111,222,333) and uncomment line 10 and 47
// if (in_array($WPCF7_ContactForm->id(), [111,222,333])) {
$wpcf7 = WPCF7_ContactForm::get_current();
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$data = $submission->get_posted_data();
$url = $submission->get_meta( 'url' ); // url where the submit come from
$postId = url_to_postid($url); // from the url we get the post ID
$postType = get_post_type($postId); // from post ID we get the post type
$title = get_the_title($postId); // and the title
$output = [
"firstname" => $data['firstname'],
"lastname" => $data['lastname'],
"email" => $data['email'],
"phone" => $data['phone'], // add all needed fields
"source" => $url,
"is_product" => $postType === 'product', // ex: we want to know if the page was a product (custom post)
"product_name" => $postType === 'product' ? $title : '', // if it is a product tell me the product name (title)
"want_newsletter" => $data['newsletter'] === 1 || $data['newsletter'] === "1" // ex. for checkbox
];
$options = array(
'http' => array(
'method' => 'POST', // you can change the method (GET, POST)
'content' => json_encode( $output ), // php array as json
'header'=> "Content-Type: application/json\r\n" .
"Accept: application/json\r\n"
)
);
$context = stream_context_create( $options );
$result = file_get_contents( CF7_TO_API_URL, false, $context );
$response = json_decode( $result ); // you can use/output the response from
}
// }
};
// add the action
add_action( 'wpcf7_mail_sent', 'action_wpcf7_mail_sent', 10, 1 );
That’s it, Enjoy!




