Version Description
- Released 2018-01-10
- Enhancement: Added Matomo (formerly Piwik) support
Download this release
Release Info
| Developer | ronalfy |
| Plugin | |
| Version | 2.1.0 |
| Comparing to | |
| See all releases | |
Code changes from version 2.0.9 to 2.1.0
- README.txt +16 -10
- gravity-forms-event-tracking.php +37 -3
- includes/GFGAET_Matomo_HTTP_API.php +159 -0
- includes/GFGAET_Pagination.php +82 -1
- includes/GFGAET_Submission_Feeds.php +105 -7
- includes/GFGAET_UA.php +64 -21
README.txt
CHANGED
|
@@ -1,26 +1,26 @@
|
|
| 1 |
=== Event Tracking for Gravity Forms ===
|
| 2 |
-
Contributors: ronalfy, bigwing, nmarks
|
| 3 |
-
Tags: gravity forms, google analytics, google tag manager, event tracking
|
| 4 |
Requires at least:4.0
|
| 5 |
Tested up to: 4.9
|
| 6 |
-
Stable tag: 2.0
|
| 7 |
Requires PHP: 5.6
|
|
|
|
| 8 |
License: GPLv2 or later
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
| 11 |
-
Easily add event tracking using Gravity Forms and your Google Analytics
|
| 12 |
|
| 13 |
== Description ==
|
| 14 |
|
| 15 |
-
This plugin provides an easy way to add event tracking to your Gravity Forms using Google Analytics
|
| 16 |
-
|
| 17 |
-
Properly track for submissions as events/conversions in Google Analytics.
|
| 18 |
|
| 19 |
Also supports:
|
| 20 |
|
| 21 |
* Pagination events
|
| 22 |
* JS only events
|
| 23 |
* Google Tag Manager
|
|
|
|
| 24 |
|
| 25 |
= Setup Guide =
|
| 26 |
Looking for help setting things up? [Read Our Setup Guide](https://bigwing.com/nest/gravity-forms-event-tracking-google-analytics)
|
|
@@ -29,9 +29,11 @@ Looking for help setting things up? [Read Our Setup Guide](https://bigwing.com/n
|
|
| 29 |
- Gravity Forms 2.0+
|
| 30 |
- Google Analytics Universal Analytics
|
| 31 |
- Google Tag Manager (optional)
|
|
|
|
| 32 |
|
| 33 |
= Features =
|
| 34 |
- Submit events to Google Analytics using the Measurement Protocol, JavaScript, or using Google Tag Manager
|
|
|
|
| 35 |
- Add multiple event feeds with conditionals
|
| 36 |
- Custom event categories, actions, labels and even values
|
| 37 |
- Track form pagination events
|
|
@@ -93,12 +95,16 @@ Check out the documentation on [github](https://github.com/ronalfy/wordpress-gra
|
|
| 93 |
|
| 94 |
== Screenshots ==
|
| 95 |
|
| 96 |
-
1. The Gravity Forms setting screen where you setup your
|
| 97 |
2. The form settings feed list.
|
| 98 |
3. The feed settings page
|
| 99 |
|
| 100 |
== Changelog ==
|
| 101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 102 |
= 2.0.9 =
|
| 103 |
* Released 2017-11-29
|
| 104 |
* Bug fix: added host name to measurement protocol due to filters blocking the conversion.
|
|
@@ -211,5 +217,5 @@ Check out the documentation on [github](https://github.com/ronalfy/wordpress-gra
|
|
| 211 |
|
| 212 |
== Upgrade Notice ==
|
| 213 |
|
| 214 |
-
= 2.0
|
| 215 |
-
|
| 1 |
=== Event Tracking for Gravity Forms ===
|
| 2 |
+
Contributors: ronalfy, bigwing, nmarks, kzeni
|
| 3 |
+
Tags: gravity forms, google analytics, google tag manager, matomo, piwik, event tracking
|
| 4 |
Requires at least:4.0
|
| 5 |
Tested up to: 4.9
|
| 6 |
+
Stable tag: 2.1.0
|
| 7 |
Requires PHP: 5.6
|
| 8 |
+
Donate link: https://mediaron.com/contribute/
|
| 9 |
License: GPLv2 or later
|
| 10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 11 |
|
| 12 |
+
Easily add event tracking using Gravity Forms and your Google Analytics, Google Tag Manager, or Matomo (formerly Piwik) account.
|
| 13 |
|
| 14 |
== Description ==
|
| 15 |
|
| 16 |
+
This plugin provides an easy way to add event tracking to your Gravity Forms using Google Analytics, Google Tag Manager, or Matomo (formerly Piwik).
|
|
|
|
|
|
|
| 17 |
|
| 18 |
Also supports:
|
| 19 |
|
| 20 |
* Pagination events
|
| 21 |
* JS only events
|
| 22 |
* Google Tag Manager
|
| 23 |
+
* Matomo (formerly Piwik)
|
| 24 |
|
| 25 |
= Setup Guide =
|
| 26 |
Looking for help setting things up? [Read Our Setup Guide](https://bigwing.com/nest/gravity-forms-event-tracking-google-analytics)
|
| 29 |
- Gravity Forms 2.0+
|
| 30 |
- Google Analytics Universal Analytics
|
| 31 |
- Google Tag Manager (optional)
|
| 32 |
+
- Matomo (formerly Piwik) account (optional)
|
| 33 |
|
| 34 |
= Features =
|
| 35 |
- Submit events to Google Analytics using the Measurement Protocol, JavaScript, or using Google Tag Manager
|
| 36 |
+
- Submit events using Matomo (formerly Piwik)
|
| 37 |
- Add multiple event feeds with conditionals
|
| 38 |
- Custom event categories, actions, labels and even values
|
| 39 |
- Track form pagination events
|
| 95 |
|
| 96 |
== Screenshots ==
|
| 97 |
|
| 98 |
+
1. The Gravity Forms setting screen where you setup your event tracking.
|
| 99 |
2. The form settings feed list.
|
| 100 |
3. The feed settings page
|
| 101 |
|
| 102 |
== Changelog ==
|
| 103 |
|
| 104 |
+
= 2.1.0 =
|
| 105 |
+
* Released 2018-01-10
|
| 106 |
+
* Enhancement: Added Matomo (formerly Piwik) support
|
| 107 |
+
|
| 108 |
= 2.0.9 =
|
| 109 |
* Released 2017-11-29
|
| 110 |
* Bug fix: added host name to measurement protocol due to filters blocking the conversion.
|
| 217 |
|
| 218 |
== Upgrade Notice ==
|
| 219 |
|
| 220 |
+
= 2.1.0 =
|
| 221 |
+
Enhancement: Added Matomo (formerly Piwik) support
|
gravity-forms-event-tracking.php
CHANGED
|
@@ -2,15 +2,15 @@
|
|
| 2 |
/**
|
| 3 |
* Plugin Name: Gravity Forms Event Tracking
|
| 4 |
* Plugin URI: https://wordpress.org/plugins/gravity-forms-google-analytics-event-tracking/
|
| 5 |
-
* Description: Add
|
| 6 |
-
* Version: 2.0
|
| 7 |
* Author: Ronald Huereca
|
| 8 |
* Author URI: https://mediaron.com
|
| 9 |
* Text Domain: gravity-forms-google-analytics-event-tracking
|
| 10 |
* License: GPL-2.0+
|
| 11 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
| 12 |
* Domain Path: /languages
|
| 13 |
-
* Developer Credit: Nathan Marks
|
| 14 |
*/
|
| 15 |
|
| 16 |
// If this file is called directly, abort.
|
|
@@ -183,6 +183,39 @@ class GFGAET {
|
|
| 183 |
return false;
|
| 184 |
}
|
| 185 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 186 |
/**
|
| 187 |
* Autoload class files.
|
| 188 |
*
|
|
@@ -228,6 +261,7 @@ class GFGAET {
|
|
| 228 |
public function pagination( $form, $source_page_number, $current_page_number ) {
|
| 229 |
$pagination = GFGAET_Pagination::get_instance();
|
| 230 |
$pagination->paginate( $form, $source_page_number, $current_page_number );
|
|
|
|
| 231 |
}
|
| 232 |
}
|
| 233 |
|
| 2 |
/**
|
| 3 |
* Plugin Name: Gravity Forms Event Tracking
|
| 4 |
* Plugin URI: https://wordpress.org/plugins/gravity-forms-google-analytics-event-tracking/
|
| 5 |
+
* Description: Add event tracking to your Gravity Forms with ease using Google Analytics, Tag Manager, or Matomo (formerly Piwik).
|
| 6 |
+
* Version: 2.1.0
|
| 7 |
* Author: Ronald Huereca
|
| 8 |
* Author URI: https://mediaron.com
|
| 9 |
* Text Domain: gravity-forms-google-analytics-event-tracking
|
| 10 |
* License: GPL-2.0+
|
| 11 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
| 12 |
* Domain Path: /languages
|
| 13 |
+
* Developer Credit: Nathan Marks, Kurt Zenisek
|
| 14 |
*/
|
| 15 |
|
| 16 |
// If this file is called directly, abort.
|
| 183 |
return false;
|
| 184 |
}
|
| 185 |
|
| 186 |
+
/**
|
| 187 |
+
* Check to see if Matomo (formerly Piwik) has been configured
|
| 188 |
+
*
|
| 189 |
+
* @since 2.1.0
|
| 190 |
+
* @return string/bool Returns string UA code, false otherwise
|
| 191 |
+
*/
|
| 192 |
+
public static function is_matomo_configured() {
|
| 193 |
+
$gravity_forms_add_on_settings = get_option( 'gravityformsaddon_GFGAET_UA_settings', array() );
|
| 194 |
+
if( isset( $gravity_forms_add_on_settings[ 'gravity_forms_event_tracking_matomo_url' ] ) && isset( $gravity_forms_add_on_settings[ 'gravity_forms_event_tracking_matomo_siteid' ] ) ){ // Both the Matomo URL and Site ID have been specified
|
| 195 |
+
return true;
|
| 196 |
+
}else{
|
| 197 |
+
return false;
|
| 198 |
+
}
|
| 199 |
+
}
|
| 200 |
+
|
| 201 |
+
/**
|
| 202 |
+
* Checks whether Matomo (formerly Piwik) JavaScript only mode is activated for sending events.
|
| 203 |
+
*
|
| 204 |
+
* @since 2.1.0
|
| 205 |
+
*
|
| 206 |
+
* @return bool true if Matomo JavaScript only, false if not
|
| 207 |
+
*/
|
| 208 |
+
public static function is_matomo_js_only() {
|
| 209 |
+
$gravity_forms_add_on_settings = get_option( 'gravityformsaddon_GFGAET_UA_settings', false );
|
| 210 |
+
if ( ! isset( $gravity_forms_add_on_settings[ 'matomo_mode' ] ) ) {
|
| 211 |
+
return false;
|
| 212 |
+
}
|
| 213 |
+
if ( 'matomo_js' == $gravity_forms_add_on_settings[ 'matomo_mode' ] ) {
|
| 214 |
+
return true;
|
| 215 |
+
}
|
| 216 |
+
return false;
|
| 217 |
+
}
|
| 218 |
+
|
| 219 |
/**
|
| 220 |
* Autoload class files.
|
| 221 |
*
|
| 261 |
public function pagination( $form, $source_page_number, $current_page_number ) {
|
| 262 |
$pagination = GFGAET_Pagination::get_instance();
|
| 263 |
$pagination->paginate( $form, $source_page_number, $current_page_number );
|
| 264 |
+
$pagination->matomo_paginate( $form, $source_page_number, $current_page_number );
|
| 265 |
}
|
| 266 |
}
|
| 267 |
|
includes/GFGAET_Matomo_HTTP_API.php
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
class GFGAET_Matomo_HTTP_API {
|
| 3 |
+
|
| 4 |
+
private $endpoint = ''; // Tracking HTTP API Endpoint
|
| 5 |
+
private $_id = ''; // Unique Visitor ID
|
| 6 |
+
private $idsite = ''; // Site ID
|
| 7 |
+
private $rec = 1; // Required for tracking
|
| 8 |
+
private $apiv = 1; // API Version (currently v1)
|
| 9 |
+
private $rand = ''; // Random value to help avoid the tracking request being cached by the browser or a proxy
|
| 10 |
+
private $action_name = ''; // Event category
|
| 11 |
+
private $e_c = ''; // Event category
|
| 12 |
+
private $e_a = ''; // Event action
|
| 13 |
+
private $e_n = ''; // Event Label
|
| 14 |
+
private $e_v = ''; // Event Value
|
| 15 |
+
private $url = ''; // Full URL
|
| 16 |
+
|
| 17 |
+
public function init() {
|
| 18 |
+
$this->_id = $this->create_client_id();
|
| 19 |
+
|
| 20 |
+
if ( GFGAET::is_matomo_configured() ) {
|
| 21 |
+
|
| 22 |
+
$gravity_forms_add_on_settings = get_option( 'gravityformsaddon_GFGAET_UA_settings', false );
|
| 23 |
+
|
| 24 |
+
$this->endpoint = rtrim($gravity_forms_add_on_settings[ 'gravity_forms_event_tracking_matomo_url' ],'/').'/piwik.php'; // Provided Tracking HTTP API Endpoint (auto-remove trailing slash in provided URL to then include our own [prevent worrying if the trailing slash was or wasn't provided.])
|
| 25 |
+
|
| 26 |
+
$this->idsite = $gravity_forms_add_on_settings[ 'gravity_forms_event_tracking_matomo_siteid' ]; // Site ID
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
$this->rand = uniqid('',false); // Random value to help avoid the tracking request being cached by the browser or a proxy
|
| 30 |
+
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
public function set_matomo_event_category( $event_category ) {
|
| 34 |
+
$this->action_name = urlencode($event_category);
|
| 35 |
+
$this->e_c = urlencode($event_category);
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
public function set_matomo_event_action( $event_action ) {
|
| 39 |
+
$this->e_a = urlencode($event_action);
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
public function set_matomo_event_label( $event_label ) {
|
| 43 |
+
$this->e_n = urlencode($event_label);
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
public function set_matomo_event_value( $event_value ) {
|
| 47 |
+
$this->e_v = urlencode($event_value);
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
public function set_matomo_document_location( $document_location ) {
|
| 51 |
+
$this->url = urlencode($document_location);
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
public function send_matomo() {
|
| 55 |
+
|
| 56 |
+
if ( GFGAET::is_matomo_configured() ) {
|
| 57 |
+
|
| 58 |
+
// Get variables in wp_remote_post body format
|
| 59 |
+
$matomo_mp_vars = array(
|
| 60 |
+
//'_id',
|
| 61 |
+
'idsite',
|
| 62 |
+
'rec',
|
| 63 |
+
'apiv',
|
| 64 |
+
'rand',
|
| 65 |
+
'action_name',
|
| 66 |
+
'e_c',
|
| 67 |
+
'e_a',
|
| 68 |
+
'e_n',
|
| 69 |
+
'e_v',
|
| 70 |
+
'url',
|
| 71 |
+
);
|
| 72 |
+
$matomo_mp_body = array();
|
| 73 |
+
foreach( $matomo_mp_vars as $index => $matomo_mp_var ) {
|
| 74 |
+
if ( empty( $this->{$matomo_mp_vars[$index]} ) ) continue; // Empty params cause the payload to fail in testing
|
| 75 |
+
$matomo_mp_body[$matomo_mp_var] = $this->{$matomo_mp_vars[$index]};
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
// Add Payload
|
| 79 |
+
$payload = add_query_arg( $matomo_mp_body, $this->endpoint );
|
| 80 |
+
|
| 81 |
+
// Perform the POST
|
| 82 |
+
$response = wp_remote_get( esc_url_raw( $payload ) );
|
| 83 |
+
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
|
| 89 |
+
/**
|
| 90 |
+
* Create a GUID on Client specific values
|
| 91 |
+
*
|
| 92 |
+
* @return string
|
| 93 |
+
*/
|
| 94 |
+
private function create_client_id() {
|
| 95 |
+
|
| 96 |
+
// collect user specific data
|
| 97 |
+
if ( isset( $_COOKIE['_ga'] ) ) {
|
| 98 |
+
|
| 99 |
+
$ga_cookie = explode( '.', $_COOKIE['_ga'] );
|
| 100 |
+
if( isset( $ga_cookie[2] ) ) {
|
| 101 |
+
|
| 102 |
+
// check if uuid
|
| 103 |
+
if( $this->check_UUID( $ga_cookie[2] ) ) {
|
| 104 |
+
|
| 105 |
+
// uuid set in cookie
|
| 106 |
+
return $ga_cookie[2];
|
| 107 |
+
}
|
| 108 |
+
elseif( isset( $ga_cookie[2]) && isset( $ga_cookie[3] ) ) {
|
| 109 |
+
|
| 110 |
+
// google default client id
|
| 111 |
+
return $ga_cookie[2] . '.' . $ga_cookie[3];
|
| 112 |
+
}
|
| 113 |
+
}
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
// nothing found - return random uuid client id
|
| 117 |
+
return $this->generate_UUID();
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
/**
|
| 121 |
+
* Check if is a valid UUID v4
|
| 122 |
+
*
|
| 123 |
+
* @param $uuid
|
| 124 |
+
* @return int
|
| 125 |
+
*/
|
| 126 |
+
private function check_UUID( $uuid ) {
|
| 127 |
+
return preg_match('#^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$#i', $uuid );
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
/**
|
| 131 |
+
* Generate UUID v4 function - needed to generate a CID when one isn't available
|
| 132 |
+
*
|
| 133 |
+
* @author Andrew Moore http://www.php.net/manual/en/function.uniqid.php#94959
|
| 134 |
+
* @return string
|
| 135 |
+
*/
|
| 136 |
+
private function generate_UUID() {
|
| 137 |
+
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
| 138 |
+
// 32 bits for "time_low"
|
| 139 |
+
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
|
| 140 |
+
|
| 141 |
+
// 16 bits for "time_mid"
|
| 142 |
+
mt_rand( 0, 0xffff ),
|
| 143 |
+
|
| 144 |
+
// 16 bits for "time_hi_and_version",
|
| 145 |
+
// four most significant bits holds version number 4
|
| 146 |
+
mt_rand( 0, 0x0fff ) | 0x4000,
|
| 147 |
+
|
| 148 |
+
// 16 bits, 8 bits for "clk_seq_hi_res",
|
| 149 |
+
// 8 bits for "clk_seq_low",
|
| 150 |
+
// two most significant bits holds zero and one for variant DCE1.1
|
| 151 |
+
mt_rand( 0, 0x3fff ) | 0x8000,
|
| 152 |
+
|
| 153 |
+
// 48 bits for "node"
|
| 154 |
+
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
|
| 155 |
+
);
|
| 156 |
+
}
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
+
?>
|
includes/GFGAET_Pagination.php
CHANGED
|
@@ -44,7 +44,7 @@ class GFGAET_Pagination {
|
|
| 44 |
if ( false !== $ua_code ) {
|
| 45 |
$event = new GFGAET_Measurement_Protocol();
|
| 46 |
$event->init();
|
| 47 |
-
|
| 48 |
/**
|
| 49 |
* Filter: gform_pagination_event_category
|
| 50 |
*
|
|
@@ -140,4 +140,85 @@ class GFGAET_Pagination {
|
|
| 140 |
}
|
| 141 |
|
| 142 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
}
|
| 44 |
if ( false !== $ua_code ) {
|
| 45 |
$event = new GFGAET_Measurement_Protocol();
|
| 46 |
$event->init();
|
| 47 |
+
|
| 48 |
/**
|
| 49 |
* Filter: gform_pagination_event_category
|
| 50 |
*
|
| 140 |
}
|
| 141 |
|
| 142 |
}
|
| 143 |
+
|
| 144 |
+
/**
|
| 145 |
+
* Send pagination events.
|
| 146 |
+
*
|
| 147 |
+
* @since 2.0.0
|
| 148 |
+
*
|
| 149 |
+
* @param array $form The form arguments
|
| 150 |
+
* @param int @source_page_number The original page number
|
| 151 |
+
* @param int $current_page_number The new page number
|
| 152 |
+
*/
|
| 153 |
+
public function matomo_paginate( $form, $source_page_number, $current_page_number ) {
|
| 154 |
+
|
| 155 |
+
if ( GFGAET::is_matomo_configured() ) {
|
| 156 |
+
$event = new GFGAET_Matomo_HTTP_API();
|
| 157 |
+
$event->init();
|
| 158 |
+
|
| 159 |
+
/**
|
| 160 |
+
* Filter: gform_pagination_event_category
|
| 161 |
+
*
|
| 162 |
+
* Filter the event category dynamically
|
| 163 |
+
*
|
| 164 |
+
* @since 2.0.0
|
| 165 |
+
*
|
| 166 |
+
* @param string $category Event Category
|
| 167 |
+
* @param array $form Gravity Form form array
|
| 168 |
+
* @param int $source_page_number Source page number
|
| 169 |
+
* @param int $current_page_number Current Page Number
|
| 170 |
+
*/
|
| 171 |
+
$event_category = apply_filters( 'gform_pagination_event_category', 'form', $form, $source_page_number, $current_page_number );
|
| 172 |
+
|
| 173 |
+
/**
|
| 174 |
+
* Filter: gform_pagination_event_action
|
| 175 |
+
*
|
| 176 |
+
* Filter the event action dynamically
|
| 177 |
+
*
|
| 178 |
+
* @since 2.0.0
|
| 179 |
+
*
|
| 180 |
+
* @param string $action Event Action
|
| 181 |
+
* @param array $form Gravity Form form array
|
| 182 |
+
* @param int $source_page_number Source page number
|
| 183 |
+
* @param int $current_page_number Current Page Number
|
| 184 |
+
*/
|
| 185 |
+
$event_action = apply_filters( 'gform_pagination_event_action', 'pagination', $form, $source_page_number, $current_page_number );
|
| 186 |
+
|
| 187 |
+
/**
|
| 188 |
+
* Filter: gform_pagination_event_label
|
| 189 |
+
*
|
| 190 |
+
* Filter the event label dynamically
|
| 191 |
+
*
|
| 192 |
+
* @since 2.0.0
|
| 193 |
+
*
|
| 194 |
+
* @param string $label Event Label
|
| 195 |
+
* @param array $form Gravity Form form array
|
| 196 |
+
* @param int $source_page_number Source page number
|
| 197 |
+
* @param int $current_page_number Current Page Number
|
| 198 |
+
*/
|
| 199 |
+
$event_label = sprintf( '%s::%d::%d', esc_html( $form['title'] ), absint( $source_page_number ), absint( $current_page_number ) );
|
| 200 |
+
$event_label = apply_filters( 'gform_pagination_event_label', $event_label, $form, $source_page_number, $current_page_number );
|
| 201 |
+
|
| 202 |
+
$event->set_matomo_event_category( $event_category );
|
| 203 |
+
$event->set_matomo_event_action( $event_action );
|
| 204 |
+
$event->set_matomo_event_label( $event_label );
|
| 205 |
+
|
| 206 |
+
if ( GFGAET::is_matomo_js_only() ) {
|
| 207 |
+
?>
|
| 208 |
+
<script>
|
| 209 |
+
if ( typeof window.parent._paq != 'undefined' ) {
|
| 210 |
+
|
| 211 |
+
window.parent._paq.push(['trackEvent', '<?php echo esc_js( $event_category ); ?>', '<?php echo esc_js( $event_action ); ?>', '<?php echo esc_js( $event_label ); ?>']);
|
| 212 |
+
|
| 213 |
+
}
|
| 214 |
+
</script>
|
| 215 |
+
<?php
|
| 216 |
+
return;
|
| 217 |
+
}
|
| 218 |
+
|
| 219 |
+
// Submit the Matomo (formerly Piwik) event
|
| 220 |
+
$event->send_matomo();
|
| 221 |
+
}
|
| 222 |
+
|
| 223 |
+
}
|
| 224 |
}
|
includes/GFGAET_Submission_Feeds.php
CHANGED
|
@@ -214,6 +214,8 @@ class GFGAET_Submission_Feeds extends GFFeedAddOn {
|
|
| 214 |
|
| 215 |
// Push the event to google
|
| 216 |
$this->push_event( $entry, $form, $ga_event_data );
|
|
|
|
|
|
|
| 217 |
}
|
| 218 |
|
| 219 |
/**
|
|
@@ -238,6 +240,8 @@ class GFGAET_Submission_Feeds extends GFFeedAddOn {
|
|
| 238 |
|
| 239 |
// Push the event to google
|
| 240 |
$this->push_event( $entry, $form, $ga_event_data );
|
|
|
|
|
|
|
| 241 |
}
|
| 242 |
|
| 243 |
/**
|
|
@@ -404,12 +408,111 @@ class GFGAET_Submission_Feeds extends GFFeedAddOn {
|
|
| 404 |
|
| 405 |
//Push out the event to each UA code
|
| 406 |
foreach( $google_analytics_codes as $ua_code ) {
|
| 407 |
-
|
| 408 |
// Submit the event
|
| 409 |
$event->send( $ua_code );
|
| 410 |
}
|
| 411 |
}
|
| 412 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 413 |
/**
|
| 414 |
* Get the event value for payment entries
|
| 415 |
*
|
|
@@ -465,11 +568,6 @@ class GFGAET_Submission_Feeds extends GFFeedAddOn {
|
|
| 465 |
//Check for a valid UA code
|
| 466 |
$feed_ua_code = isset( $settings[ 'gaEventUA' ] ) ? $settings[ 'gaEventUA' ] : '';
|
| 467 |
$ua_codes = $this->get_ua_codes( $feed_ua_code, $this->get_ga_id() );
|
| 468 |
-
if ( empty( $ua_codes ) ) {
|
| 469 |
-
GFCommon::add_error_message( __( 'You must set a UA code for event tracking to work.', 'gravity-forms-google-analytics-event-tracking' ) );
|
| 470 |
-
return $feed_id;
|
| 471 |
-
}
|
| 472 |
-
|
| 473 |
|
| 474 |
if ( $is_valid ) {
|
| 475 |
$settings = $this->filter_settings( $sections, $settings );
|
|
@@ -545,7 +643,7 @@ class GFGAET_Submission_Feeds extends GFFeedAddOn {
|
|
| 545 |
"type" => "text",
|
| 546 |
"name" => "gaEventUA",
|
| 547 |
"class" => "medium",
|
| 548 |
-
"tooltip" => sprintf( '<h6>%s</h6>%s', __( 'Google Analytics UA Code', 'gravity-forms-google-analytics-event-tracking' ), __( 'Leave empty to use global GA Code. You can enter multiple UA codes as long as they are comma separated.', 'gravity-forms-google-analytics-event-tracking' ) ),
|
| 549 |
"placeholder" => $ga_id_placeholder,
|
| 550 |
),
|
| 551 |
array(
|
| 214 |
|
| 215 |
// Push the event to google
|
| 216 |
$this->push_event( $entry, $form, $ga_event_data );
|
| 217 |
+
// Push the event to matomo
|
| 218 |
+
$this->push_matomo_event( $entry, $form, $ga_event_data );
|
| 219 |
}
|
| 220 |
|
| 221 |
/**
|
| 240 |
|
| 241 |
// Push the event to google
|
| 242 |
$this->push_event( $entry, $form, $ga_event_data );
|
| 243 |
+
// Push the event to matomo
|
| 244 |
+
$this->push_matomo_event( $entry, $form, $ga_event_data );
|
| 245 |
}
|
| 246 |
|
| 247 |
/**
|
| 408 |
|
| 409 |
//Push out the event to each UA code
|
| 410 |
foreach( $google_analytics_codes as $ua_code ) {
|
|
|
|
| 411 |
// Submit the event
|
| 412 |
$event->send( $ua_code );
|
| 413 |
}
|
| 414 |
}
|
| 415 |
|
| 416 |
+
/**
|
| 417 |
+
* Push the Matomo (formerly Piwik) Event!
|
| 418 |
+
*
|
| 419 |
+
* @since 2.1.0
|
| 420 |
+
* @param array $event Gravity Forms event object
|
| 421 |
+
* @param array $form Gravity Forms form object
|
| 422 |
+
*/
|
| 423 |
+
private function push_matomo_event( $entry, $form, $ga_event_data ) {
|
| 424 |
+
|
| 425 |
+
if ( false === GFGAET::is_matomo_configured() ) return;
|
| 426 |
+
|
| 427 |
+
$event = new GFGAET_Matomo_HTTP_API();
|
| 428 |
+
$event->init();
|
| 429 |
+
|
| 430 |
+
// Set some defaults
|
| 431 |
+
$event->set_matomo_document_location( 'http' . ( isset( $_SERVER['HTTPS'] ) ? 's' : '' ) . '://' . str_replace( '//', '/', $_SERVER['HTTP_HOST'] . '/' . $_SERVER['REQUEST_URI'] ) );
|
| 432 |
+
|
| 433 |
+
// Set our event object variables
|
| 434 |
+
/**
|
| 435 |
+
* Filter: gform_event_category
|
| 436 |
+
*
|
| 437 |
+
* Filter the event category dynamically
|
| 438 |
+
*
|
| 439 |
+
* @since 1.6.5
|
| 440 |
+
*
|
| 441 |
+
* @param string $category Event Category
|
| 442 |
+
* @param object $form Gravity Form form object
|
| 443 |
+
* @param object $entry Gravity Form Entry Object
|
| 444 |
+
*/
|
| 445 |
+
$event_category = apply_filters( 'gform_event_category', $ga_event_data['gaEventCategory'], $form, $entry );
|
| 446 |
+
$event->set_matomo_event_category( $event_category );
|
| 447 |
+
|
| 448 |
+
/**
|
| 449 |
+
* Filter: gform_event_action
|
| 450 |
+
*
|
| 451 |
+
* Filter the event action dynamically
|
| 452 |
+
*
|
| 453 |
+
* @since 1.6.5
|
| 454 |
+
*
|
| 455 |
+
* @param string $action Event Action
|
| 456 |
+
* @param object $form Gravity Form form object
|
| 457 |
+
* @param object $entry Gravity Form Entry Object
|
| 458 |
+
*/
|
| 459 |
+
$event_action = apply_filters( 'gform_event_action', $ga_event_data['gaEventAction'], $form, $entry );
|
| 460 |
+
$event->set_matomo_event_action( $event_action );
|
| 461 |
+
|
| 462 |
+
/**
|
| 463 |
+
* Filter: gform_event_label
|
| 464 |
+
*
|
| 465 |
+
* Filter the event label dynamically
|
| 466 |
+
*
|
| 467 |
+
* @since 1.6.5
|
| 468 |
+
*
|
| 469 |
+
* @param string $label Event Label
|
| 470 |
+
* @param object $form Gravity Form form object
|
| 471 |
+
* @param object $entry Gravity Form Entry Object
|
| 472 |
+
*/
|
| 473 |
+
$event_label = apply_filters( 'gform_event_label', $ga_event_data['gaEventLabel'], $form, $entry );
|
| 474 |
+
$event->set_matomo_event_label( $event_label );
|
| 475 |
+
|
| 476 |
+
/**
|
| 477 |
+
* Filter: gform_event_value
|
| 478 |
+
*
|
| 479 |
+
* Filter the event value dynamically
|
| 480 |
+
*
|
| 481 |
+
* @since 1.6.5
|
| 482 |
+
*
|
| 483 |
+
* @param object $form Gravity Form form object
|
| 484 |
+
* @param object $entry Gravity Form Entry Object
|
| 485 |
+
*/
|
| 486 |
+
$event_value = apply_filters( 'gform_event_value', $ga_event_data['gaEventValue'], $form, $entry );
|
| 487 |
+
if ( $event_value ) {
|
| 488 |
+
// Event value must be a valid float!
|
| 489 |
+
$event_value = GFCommon::to_number( $event_value );
|
| 490 |
+
$event->set_matomo_event_value( $event_value );
|
| 491 |
+
}
|
| 492 |
+
|
| 493 |
+
$feed_id = absint( $ga_event_data[ 'feed_id' ] );
|
| 494 |
+
$entry_id = $entry['id'];
|
| 495 |
+
|
| 496 |
+
if ( GFGAET::is_matomo_js_only() ) {
|
| 497 |
+
?>
|
| 498 |
+
<script>
|
| 499 |
+
var matomo_feed_submission = sessionStorage.getItem('matomo_feed_<?php echo absint( $feed_id ); ?>_entry_<?php echo absint( $entry[ 'id' ] ); ?>');
|
| 500 |
+
if ( null == matomo_feed_submission ) {
|
| 501 |
+
if ( typeof window.parent._paq != 'undefined' ) {
|
| 502 |
+
|
| 503 |
+
window.parent._paq.push(['trackEvent', '<?php echo esc_js( $event_category ); ?>', '<?php echo esc_js( $event_action ); ?>', '<?php echo esc_js( $event_label ); ?>']);
|
| 504 |
+
|
| 505 |
+
sessionStorage.setItem('matomo_feed_<?php echo absint( $feed_id ); ?>_entry_<?php echo absint( $entry[ 'id' ] ); ?>', true );
|
| 506 |
+
}
|
| 507 |
+
}
|
| 508 |
+
</script>
|
| 509 |
+
<?php
|
| 510 |
+
return;
|
| 511 |
+
}
|
| 512 |
+
// Submit the Matomo (formerly Piwik) event
|
| 513 |
+
$event->send_matomo();
|
| 514 |
+
}
|
| 515 |
+
|
| 516 |
/**
|
| 517 |
* Get the event value for payment entries
|
| 518 |
*
|
| 568 |
//Check for a valid UA code
|
| 569 |
$feed_ua_code = isset( $settings[ 'gaEventUA' ] ) ? $settings[ 'gaEventUA' ] : '';
|
| 570 |
$ua_codes = $this->get_ua_codes( $feed_ua_code, $this->get_ga_id() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 571 |
|
| 572 |
if ( $is_valid ) {
|
| 573 |
$settings = $this->filter_settings( $sections, $settings );
|
| 643 |
"type" => "text",
|
| 644 |
"name" => "gaEventUA",
|
| 645 |
"class" => "medium",
|
| 646 |
+
"tooltip" => sprintf( '<h6>%s</h6>%s', __( 'Google Analytics UA Code (Optional)', 'gravity-forms-google-analytics-event-tracking' ), __( 'Leave empty to use global GA Code. You can enter multiple UA codes as long as they are comma separated.', 'gravity-forms-google-analytics-event-tracking' ) ),
|
| 647 |
"placeholder" => $ga_id_placeholder,
|
| 648 |
),
|
| 649 |
array(
|
includes/GFGAET_UA.php
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?php
|
| 2 |
GFForms::include_addon_framework();
|
| 3 |
class GFGAET_UA extends GFAddOn {
|
| 4 |
-
protected $_version = '2.0';
|
| 5 |
protected $_min_gravityforms_version = '1.8.20';
|
| 6 |
protected $_slug = 'GFGAET_UA';
|
| 7 |
protected $_path = 'gravity-forms-google-analytics-event-tracking/gravity-forms-event-tracking.php';
|
|
@@ -14,7 +14,7 @@ class GFGAET_UA extends GFAddOn {
|
|
| 14 |
protected $_capabilities_settings_page = 'gravityforms_event_tracking';
|
| 15 |
protected $_capabilities_form_settings = 'gravityforms_event_tracking';
|
| 16 |
protected $_capabilities_uninstall = 'gravityforms_event_tracking_uninstall';
|
| 17 |
-
|
| 18 |
private static $_instance = null;
|
| 19 |
|
| 20 |
/**
|
|
@@ -26,13 +26,13 @@ class GFGAET_UA extends GFAddOn {
|
|
| 26 |
if ( self::$_instance == null ) {
|
| 27 |
self::$_instance = new self();
|
| 28 |
}
|
| 29 |
-
|
| 30 |
return self::$_instance;
|
| 31 |
}
|
| 32 |
-
|
| 33 |
public function init() {
|
| 34 |
parent::init();
|
| 35 |
-
|
| 36 |
// Migrate old GA Code over to new add-on
|
| 37 |
$ga_options = get_option( 'gravityformsaddon_GFGAET_UA_settings', false );
|
| 38 |
if ( ! $ga_options ) {
|
|
@@ -41,19 +41,19 @@ class GFGAET_UA extends GFAddOn {
|
|
| 41 |
update_option( 'gravityformsaddon_GFGAET_UA_settings', $old_ga_option );
|
| 42 |
}
|
| 43 |
}
|
| 44 |
-
|
| 45 |
}
|
| 46 |
-
|
| 47 |
/**
|
| 48 |
* Plugin settings fields
|
| 49 |
-
*
|
| 50 |
* @return array Array of plugin settings
|
| 51 |
*/
|
| 52 |
public function plugin_settings_fields() {
|
| 53 |
return array(
|
| 54 |
array(
|
| 55 |
-
'title'
|
| 56 |
-
'description' => __( 'Need help? <a target="_blank" href="https://bigwing.com/nest/gravity-forms-event-tracking-google-analytics/">See our guide</a
|
| 57 |
'fields' => array(
|
| 58 |
array(
|
| 59 |
'name' => 'gravity_forms_event_tracking_ua',
|
|
@@ -61,14 +61,8 @@ class GFGAET_UA extends GFAddOn {
|
|
| 61 |
'label' => __( 'UA Tracking ID', 'gravity-forms-google-analytics-event-tracking' ),
|
| 62 |
'type' => 'text',
|
| 63 |
'class' => 'small',
|
| 64 |
-
|
| 65 |
),
|
| 66 |
-
)
|
| 67 |
-
),
|
| 68 |
-
array(
|
| 69 |
-
'title' => __( 'Advanced', 'gravity-forms-google-analytics-event-tracking' ),
|
| 70 |
-
'description' => __( 'By default, events are sent using the measurement protocol. You can change to using pure Google Analytics and Google Tag Manager if your forms are Ajax only.', 'gravity-forms-google-analytics-event-tracking' ),
|
| 71 |
-
'fields' => array(
|
| 72 |
array(
|
| 73 |
'type' => 'radio',
|
| 74 |
'name' => 'mode',
|
|
@@ -78,7 +72,7 @@ class GFGAET_UA extends GFAddOn {
|
|
| 78 |
'choices' => array(
|
| 79 |
array(
|
| 80 |
'name' => 'ga_on',
|
| 81 |
-
'tooltip' => esc_html__( 'Forms must be Ajax only', '
|
| 82 |
'label' => esc_html__( 'Google Analytics (Ajax only)', 'gravity-forms-google-analytics-event-tracking' ),
|
| 83 |
'value' => 'ga'
|
| 84 |
),
|
|
@@ -90,12 +84,60 @@ class GFGAET_UA extends GFAddOn {
|
|
| 90 |
),
|
| 91 |
array(
|
| 92 |
'name' => 'gmp_on',
|
| 93 |
-
'tooltip' => esc_html__( 'Events will be sent using the measurement protocol.', '
|
| 94 |
'label' => esc_html__( 'Measurement Protocol (Default)', 'gravity-forms-google-analytics-event-tracking' ),
|
| 95 |
'value' => 'gmp'
|
| 96 |
),
|
| 97 |
),
|
| 98 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
array(
|
| 100 |
'type' => 'radio',
|
| 101 |
'name' => 'ajax_only',
|
|
@@ -115,8 +157,9 @@ class GFGAET_UA extends GFAddOn {
|
|
| 115 |
),
|
| 116 |
),
|
| 117 |
),
|
| 118 |
-
|
| 119 |
)
|
|
|
|
| 120 |
);
|
| 121 |
}
|
| 122 |
-
}
|
| 1 |
<?php
|
| 2 |
GFForms::include_addon_framework();
|
| 3 |
class GFGAET_UA extends GFAddOn {
|
| 4 |
+
protected $_version = '2.0';
|
| 5 |
protected $_min_gravityforms_version = '1.8.20';
|
| 6 |
protected $_slug = 'GFGAET_UA';
|
| 7 |
protected $_path = 'gravity-forms-google-analytics-event-tracking/gravity-forms-event-tracking.php';
|
| 14 |
protected $_capabilities_settings_page = 'gravityforms_event_tracking';
|
| 15 |
protected $_capabilities_form_settings = 'gravityforms_event_tracking';
|
| 16 |
protected $_capabilities_uninstall = 'gravityforms_event_tracking_uninstall';
|
| 17 |
+
|
| 18 |
private static $_instance = null;
|
| 19 |
|
| 20 |
/**
|
| 26 |
if ( self::$_instance == null ) {
|
| 27 |
self::$_instance = new self();
|
| 28 |
}
|
| 29 |
+
|
| 30 |
return self::$_instance;
|
| 31 |
}
|
| 32 |
+
|
| 33 |
public function init() {
|
| 34 |
parent::init();
|
| 35 |
+
|
| 36 |
// Migrate old GA Code over to new add-on
|
| 37 |
$ga_options = get_option( 'gravityformsaddon_GFGAET_UA_settings', false );
|
| 38 |
if ( ! $ga_options ) {
|
| 41 |
update_option( 'gravityformsaddon_GFGAET_UA_settings', $old_ga_option );
|
| 42 |
}
|
| 43 |
}
|
| 44 |
+
|
| 45 |
}
|
| 46 |
+
|
| 47 |
/**
|
| 48 |
* Plugin settings fields
|
| 49 |
+
*
|
| 50 |
* @return array Array of plugin settings
|
| 51 |
*/
|
| 52 |
public function plugin_settings_fields() {
|
| 53 |
return array(
|
| 54 |
array(
|
| 55 |
+
'title' => __( 'Google Analytics and Google Tag Manager', 'gravity-forms-google-analytics-event-tracking' ),
|
| 56 |
+
'description' => '<p>' . __( 'By default, events are sent using the measurement protocol. You can change to using pure Google Analytics and Google Tag Manager if your forms are Ajax only.', 'gravity-forms-google-analytics-event-tracking' ) . '</p><p>' . __( 'Need help? <a target="_blank" href="https://bigwing.com/nest/gravity-forms-event-tracking-google-analytics/">See our guide</a>.</p>', 'gravity-forms-google-analytics-event-tracking' ),
|
| 57 |
'fields' => array(
|
| 58 |
array(
|
| 59 |
'name' => 'gravity_forms_event_tracking_ua',
|
| 61 |
'label' => __( 'UA Tracking ID', 'gravity-forms-google-analytics-event-tracking' ),
|
| 62 |
'type' => 'text',
|
| 63 |
'class' => 'small',
|
| 64 |
+
|
| 65 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
array(
|
| 67 |
'type' => 'radio',
|
| 68 |
'name' => 'mode',
|
| 72 |
'choices' => array(
|
| 73 |
array(
|
| 74 |
'name' => 'ga_on',
|
| 75 |
+
'tooltip' => esc_html__( 'Forms must be Ajax only', 'gravity-forms-google-analytics-event-tracking' ),
|
| 76 |
'label' => esc_html__( 'Google Analytics (Ajax only)', 'gravity-forms-google-analytics-event-tracking' ),
|
| 77 |
'value' => 'ga'
|
| 78 |
),
|
| 84 |
),
|
| 85 |
array(
|
| 86 |
'name' => 'gmp_on',
|
| 87 |
+
'tooltip' => esc_html__( 'Events will be sent using the measurement protocol.', 'gravity-forms-google-analytics-event-tracking' ),
|
| 88 |
'label' => esc_html__( 'Measurement Protocol (Default)', 'gravity-forms-google-analytics-event-tracking' ),
|
| 89 |
'value' => 'gmp'
|
| 90 |
),
|
| 91 |
),
|
| 92 |
),
|
| 93 |
+
),
|
| 94 |
+
),
|
| 95 |
+
array(
|
| 96 |
+
'title' => __( '<a target="_blank" href="https://matomo.org">Matomo</a> (formerly Piwik) Open Analytics Platform', 'gravity-forms-google-analytics-event-tracking' ),
|
| 97 |
+
'fields' => array(
|
| 98 |
+
array(
|
| 99 |
+
'name' => 'gravity_forms_event_tracking_matomo_url',
|
| 100 |
+
'tooltip' => __( 'Enter your Matomo (formerly Piwik) URL. This is the same URL you use to access your Matomo instance (ex. http://www.example.com/matomo/.)', 'gravity-forms-google-analytics-event-tracking' ),
|
| 101 |
+
'label' => __( 'Matomo URL', 'gravity-forms-google-analytics-event-tracking' ),
|
| 102 |
+
'type' => 'text',
|
| 103 |
+
'class' => 'small',
|
| 104 |
+
|
| 105 |
+
),
|
| 106 |
+
array(
|
| 107 |
+
'name' => 'gravity_forms_event_tracking_matomo_siteid',
|
| 108 |
+
'tooltip' => __( 'Enter your Site ID (ex. 2 or J2O1NDvxzmMB if using the Protect Track ID plugin.)', 'gravity-forms-google-analytics-event-tracking' ),
|
| 109 |
+
'label' => __( 'Site ID', 'gravity-forms-google-analytics-event-tracking' ),
|
| 110 |
+
'type' => 'text',
|
| 111 |
+
'class' => 'small',
|
| 112 |
+
|
| 113 |
+
),
|
| 114 |
+
array(
|
| 115 |
+
'type' => 'radio',
|
| 116 |
+
'name' => 'matomo_mode',
|
| 117 |
+
'horizontal' => false,
|
| 118 |
+
'default_value' => 'matomo_http',
|
| 119 |
+
'label' => 'How would you like to send <strong>Matomo</strong> events?',
|
| 120 |
+
'choices' => array(
|
| 121 |
+
array(
|
| 122 |
+
'name' => 'matomo_js_on',
|
| 123 |
+
'tooltip' => esc_html__( 'Forms must be Ajax only. Events will be sent using the <a target="_blank" href="https://matomo.org/docs/event-tracking/#javascript-trackevent">`trackEvent` JavaScript function</a>.', 'gravity-forms-google-analytics-event-tracking' ),
|
| 124 |
+
'label' => esc_html__( 'JavaScript `trackEvent` Function (Ajax only)', 'gravity-forms-google-analytics-event-tracking' ),
|
| 125 |
+
'value' => 'matomo_js'
|
| 126 |
+
),
|
| 127 |
+
array(
|
| 128 |
+
'name' => 'matomo_http_on',
|
| 129 |
+
'tooltip' => esc_html__( 'Events will be sent using the <a target="_blank" href="https://developer.matomo.org/api-reference/tracking-api">Tracking HTTP API</a>.', 'gravity-forms-google-analytics-event-tracking' ),
|
| 130 |
+
'label' => esc_html__( 'Tracking HTTP API (Default)', 'gravity-forms-google-analytics-event-tracking' ),
|
| 131 |
+
'value' => 'matomo_http'
|
| 132 |
+
),
|
| 133 |
+
),
|
| 134 |
+
),
|
| 135 |
+
)
|
| 136 |
+
),
|
| 137 |
+
array(
|
| 138 |
+
'title' => __( 'Advanced', 'gravity-forms-google-analytics-event-tracking' ),
|
| 139 |
+
'description' => __( 'This will make all your forms Ajax only for options that require it.', 'gravity-forms-google-analytics-event-tracking' ),
|
| 140 |
+
'fields' => array(
|
| 141 |
array(
|
| 142 |
'type' => 'radio',
|
| 143 |
'name' => 'ajax_only',
|
| 157 |
),
|
| 158 |
),
|
| 159 |
),
|
| 160 |
+
)
|
| 161 |
)
|
| 162 |
+
|
| 163 |
);
|
| 164 |
}
|
| 165 |
+
}
|
