Stephan Böni - E-Mail-Öffnen verfolgen

Analytics

E-Mail-Öffnen in GA4 verfolgen

Google Analytics 4 Measurement Protocol (GA4MP) ist ein standardisierter Satz von Regeln zum Sammeln und Senden von Ereignissen direkt an den Google Analytics-Server. GA4MP ermöglicht es dir, Daten von internetfähigen Geräten zu senden, die deine Website oder App ergänzen.

Hier findest du eine Anleitung, wie du mittels GA4MP verfolgen kannst, ob deine E-Mails geöffnet werden.

Tracking-Bild im E-Mail einbinden

Zuerst musst du ein unsichtbares Bild idealerweise am Ende deiner E-Mail einbinden. Wenn der Empfänger die E-Mail öffnet wird dieses vermeintliche Bild von deinem Server abgefragt.

HTML <img src="https://my.domain.com/email.php?subject=Test&template=mailTemplateSample" alt=" ">

Konkret werden in diesem Beispiel der Betreff und der Name der verwendeten E-Mail-Vorlage deinem Server übergeben. Du kannst hier natürlich beliebige andere zu protokollierende Paramenter verwenden.

Weiterleiten an Google Analytics

In einem PHP-Script nimmst du die Werte entgegen und leitest diese an Google Analytics 4 weiter. Dazu benötigst du die Datastream Measurement ID (G-Nummer) und das Measurement Protocol API Secret (Token), die du beide deiner GA4-Einrichtung entnehmen kannst.

email.php <?php // please edit --------------------- $mid = "G-xxxxxxxxx"; // datastream measusrement id $secret = "xxxxxxxxx"; // measurement protocol api secret $debug = 0; // debug mode if required // --------------------------------- // read client id from ga cookie if available if(isset($_COOKIE["_ga"])) { list(, , $id1, $id2) = explode(".", $_COOKIE["_ga"], 4); $client_id = "$id1.$id2"; } else { $client_id = "anonymous.".time(); } // read session id from ga session cookie $ga4_session_cookie = "_ga_" . str_replace("G-", "", $mid); if(isset($_COOKIE[$ga4_session_cookie])) { $cookie_parts = explode(".", $_COOKIE[$ga4_session_cookie]); $session_id = $cookie_parts[2]; } // get url and parameters $url = $_SERVER["QUERY_STRING"]; parse_str($url, $params); if (empty($params)) { exit("event parameters missing"); } // create event parameters $event_params = array(); foreach ($params as $key => $value) { $event_params[$key] = is_numeric($value) ? (int) $value : $value; } if(isset($session_id)) { $event_params['session_id'] = (int) $session_id; $event_params['engagement_time_msec'] = (int) 1000; } if($debug == 1) { $event_params['debug_mode'] = (int) 1; } // create payload $data = array( "client_id" => $client_id, "non_personalized_ads" => false, "events" => array( array( "name" => "email_open", "params" => $event_params ) ) ); $json = json_encode($data); // define url with params $url = "https://www.google-analytics.com/mp/collect?api_secret=".$secret."&measurement_id=".$mid; // create HTTP header $headers = array( "Content-Type: application/json" ); // create HTTP request object $options = array( "http" => array( "method" => "POST", "header" => implode("\r\n", $headers), "content" => $json ) ); $context = stream_context_create($options); // send POST request $response = file_get_contents($url, false, $context); // debug output if($debug == 1) { $file = fopen("email.json", "w"); fwrite($file, $json); fclose($file); echo "$json"; } ?>

Dies erstellt in GA4 ein benutzerdefiniertes Ereignis namens email_open mit den Parametern, die im <img>-Element übergeben wurden.

Dran bleiben

Du hast es geschafft. Abonniere meine Benachrichtigungen, um weitere News und Anleitungen von mir zu erhalten.

Feed einbinden