wpf_forms_pre_submission_contact_id

wpf_forms_pre_submission_contact_id

#Overview
This filter is run when WP Fusion is processing a form submission from one of our supported form plugins.
It is triggered after WP Fusion has attempted to locate a contact ID in the CRM for the form submission, but before a contact record is created / updated, and before any tags are applied.
To use the code examples below, add them to your active theme』s functions.php file.
#Alternate filters
For more precise targeting there are two alternate filters with the same arguments:

wpf_{integration slug}_pre_submission_contact_id : Where {integration_slug} is the name of the form integration, for example wpf_gform_pre_submission_contact_id

#Parameters

$contact_id (string|false): The contact ID in the CRM to be updated, or false if no match found
$update_data (array): The data about to be synced to the CRM, in key => value pairs
$user_id (int): The ID of the registered user who submitted the form, or 0 for guest
$form_id (int): The ID of the submitted form

#Examples
#Force all form submissions to create a new contact record
This is a simple example that stops WP Fusion from trying update existing contact records in the CRM from form submissions. All form submissions will create a new contact.
add_filter( 'wpf_forms_pre_submission_contact_id', '__return_false' );
#Force all form submissions to create a new contact record by form ID
This is the same as the example above but only runs on form IDs 22 and 29
function always_create_new_contacts( $contact_id, $update_data, $user_id, $form_id ) {

if ( 22 == $form_id || 29 == $form_id ) {
$contact_id = false;
}

return $contact_id;

}

add_filter( 'wpf_forms_pre_submission_contact_id', 'always_create_new_contacts', 10, 4 );
#Use custom lookup logic for contact records – Infusionsoft
By default WP Fusion uses the first email address found on a submitted form when determining whether to create or update a contact record in your CRM.
In some cases you may want to use more complex rules for determining when a new record should be created.
This example for Infusionsoft attempts to match against the Email Address 2 and Email Address 3 fields in addition to the Email Address field. That means that if the form is submitted and the entered email matches the Email Address 3 field on an existing contact, that contact record will be updated (rather than a new contact record being added).
function wpf_lookup_additional_emails( $contact_id, $update_data, $user_id, $form_id ) {

if ( empty( $contact_id ) ) {

$email = $update_data['Email'];

wp_fusion()->crm->connect();

$query = array( 'EmailAddress2' => $email );
$result = wp_fusion()->crm->app->dsQuery( 'Contact', 1, 0, $query, array( 'Id' ) );

if ( isset( $result[0]['Id'] ) ) {

return $result[0]['Id'];

}

$query = array( 'EmailAddress3' => $email );
$result = wp_fusion()->crm->app->dsQuery( 'Contact', 1, 0, $query, array( 'Id' ) );

if ( isset( $result[0]['Id'] ) ) {

return $result[0]['Id'];

}
}

return $contact_id;

}

add_filter( 'wpf_forms_pre_submission_contact_id', 'wpf_lookup_additional_emails', 10, 4 );
#Use custom lookup logic for contact records – Salesforce
This example for Salesforce only updates an existing contact record if the email address, first name, and last name match. Otherwise a new record will be created.
function wpf_forms_name_lookup( $contact_id, $update_data, $user_id, $form_id ) {

$params = wp_fusion()->crm->get_params(); // get the authentication headers and other API params

// URL-encode the three lookup fields

$email_address = urlencode( $update_data['Email'] );
$first_name = urlencode( $update_data['FirstName'] );
$last_name = urlencode( $update_data['LastName'] );

// this is the SOQL, Salesforce Object Query Language:

$query_args = array(
'q' => "SELECT Id from {wp_fusion()->crm->object_type} WHERE Email = '{$email_address}' AND FirstName = '{$first_name}' AND LastName = '{$last_name}'",
);

$request = add_query_arg( $query_args, wp_fusion()->crm->instance_url . '/services/data/v42.0/query' );
$response = wp_remote_get( $request, $params );

if ( is_wp_error( $response ) ) {

// If an error was encountered, log it
wpf_log( 'error', $user_id, 'Error looking up Salesforce contact: ' . $response->get_error_message() );
return false;

}

$response = json_decode( wp_remote_retrieve_body( $response ) );

if ( empty( $response ) || empty( $response->records ) ) {

// If no match was found, return false so a new contact is created
return false;

}

// Return the ID of the contact that matched the email, first name, and last name
// It's this contact ID that will be updated by the form submission

return $response->records[0]->Id;

}

add_filter( 'wpf_forms_pre_submission_contact_id', 'wpf_forms_name_lookup', 10, 4 );

#Was this helpful?

Let us know if you liked the post. That』s the only way we can improve.

Yes

No

發表回覆

您的郵箱地址不會被公開。 必填項已用 * 標註