diff --git a/modules/contact-form/grunion-contact-form.php b/modules/contact-form/grunion-contact-form.php
index 95685a8441aa1..02b6d09102e55 100644
--- a/modules/contact-form/grunion-contact-form.php
+++ b/modules/contact-form/grunion-contact-form.php
@@ -1,17 +1,13 @@
-\n";
+ }
$r .= "\t\t\n";
$r .= "\t\t\n";
$r .= "\t\t\n";
@@ -2553,6 +2553,10 @@ function process_submission() {
$i++; // Increment prefix counter for the next extra field
}
+ if ( isset( $_REQUEST['is_block'] ) && $_REQUEST['is_block'] ) {
+ $extra_values['is_block'] = true;
+ }
+
$contact_form_subject = trim( $contact_form_subject );
$comment_author_IP = Grunion_Contact_Form_Plugin::get_ip_address();
@@ -3539,3 +3543,61 @@ function grunion_delete_old_spam() {
wp_schedule_single_event( time() + 700, 'grunion_scheduled_delete' );
}
}
+
+/**
+ * Send an event to Tracks on form submission.
+ *
+ * @param int $post_id - the post_id for the CPT that is created.
+ * @param array $all_values - fields from the default contact form.
+ * @param array $extra_values - extra fields added to from the contact form.
+ *
+ * @return null|void
+ */
+function jetpack_tracks_record_grunion_pre_message_sent( $post_id, $all_values, $extra_values ) {
+ // Do not do anything if the submission is not from a block.
+ if (
+ ! isset( $extra_values['is_block'] )
+ || ! $extra_values['is_block']
+ ) {
+ return;
+ }
+
+ /*
+ * Event details.
+ */
+ $event_user = wp_get_current_user();
+ $event_name = 'contact_form_block_message_sent';
+ $event_props = array(
+ 'entry_permalink' => esc_url( $all_values['entry_permalink'] ),
+ 'feedback_id' => esc_attr( $all_values['feedback_id'] ),
+ );
+
+ /*
+ * Record event.
+ * We use different libs on wpcom and Jetpack.
+ */
+ if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
+ $event_name = 'wpcom_' . $event_name;
+ $event_props['blog_id'] = get_current_blog_id();
+ // If the form was sent by a logged out visitor, record event with blog owner.
+ if ( empty( $event_user->ID ) ) {
+ $event_user_id = wpcom_get_blog_owner( $event_props['blog_id'] );
+ $event_user = get_userdata( $event_user_id );
+ }
+
+ require_lib( 'tracks/client' );
+ tracks_record_event( $event_user, $event_name, $event_props );
+ } else {
+ // If the form was sent by a logged out visitor, record event with Jetpack master user.
+ if ( empty( $event_user->ID ) ) {
+ $master_user_id = Jetpack_Options::get_option( 'master_user' );
+ if ( ! empty( $master_user_id ) ) {
+ $event_user = get_userdata( $master_user_id );
+ }
+ }
+
+ $tracking = new Automattic\Jetpack\Tracking();
+ $tracking->record_user_event( $event_name, $event_props, $event_user );
+ }
+}
+add_action( 'grunion_pre_message_sent', 'jetpack_tracks_record_grunion_pre_message_sent', 12, 3 );