Skip to content

Instantly share code, notes, and snippets.

@imranshuvo
Forked from it-can/checkout-succes.blade.php
Created September 29, 2025 06:58
Show Gist options
  • Select an option

  • Save imranshuvo/f14817aa293d80ea559e25d72f1de39f to your computer and use it in GitHub Desktop.

Select an option

Save imranshuvo/f14817aa293d80ea559e25d72f1de39f to your computer and use it in GitHub Desktop.
Cloudflare Zaraz Google Ads conversion tracking with "enhanced conversions"
<script>
var user_data_info = {
sha256_email_address: '{{ normalizeAndHashEmailAddress($invoice->email) }}',
sha256_phone_number: '{{ normalizeAndHash(formatPhoneE164($invoice->billing_telephone)) }}',
address: {
sha256_first_name: '{{ normalizeAndHash($firstname ?? '') }}',
sha256_last_name: '{{ normalizeAndHash($lastname ?? '') }}',
sha256_street: '{{ normalizeAndHash($invoice->billing_address . ' ' . $invoice->billing_address_nr) }}',
postal_code: '{{ $invoice->billing_zipcode }}',
city: '{{ $invoice->billing_city }}',
country: '{{ $invoice->billing_country }}',
new_customer: {{ $new_customer ? 'true' : 'false' }}
}
};
// Google Ads conversion tracking
zaraz.track("conversion", {
transaction_id: "ORDER ID",
value: AMOUNT
currency: 'EUR',
user_data: JSON.stringify(user_data_info)
});
</script>
<?php
if (! function_exists('formatPhoneE164')) {
/**
* Format phonenumber to E164 (i use this library https://github.com/Propaganistas/Laravel-Phone)
*
*
* @return mixed|string
*/
function formatPhoneE164($value)
{
$value = Str::lower(trim($value));
try {
return (new PhoneNumber($value, 'NL'))
->formatE164();
} catch (Exception $e) {
}
return $value;
}
}
if (! function_exists('normalizeAndHash')) {
function normalizeAndHash(string $value, bool $trimIntermediateSpaces = false): string
{
// Normalizes by first converting all characters to lowercase, then trimming spaces.
$normalized = strtolower($value);
if ($trimIntermediateSpaces) {
// Removes leading, trailing, and intermediate spaces.
$normalized = str_replace(' ', '', $normalized);
} else {
// Removes only leading and trailing spaces.
$normalized = trim($normalized);
}
return hash('sha256', strtolower(trim($normalized)));
}
}
if (! function_exists('normalizeAndHashEmailAddress')) {
function normalizeAndHashEmailAddress(string $emailAddress): string
{
$normalizedEmail = strtolower($emailAddress);
$emailParts = explode('@', $normalizedEmail);
if (count($emailParts) > 1 && preg_match('/^(gmail|googlemail)\.com\s*/', $emailParts[1])) {
// Removes any '.' characters from the portion of the email address before the domain
// if the domain is gmail.com or googlemail.com.
$emailParts[0] = str_replace('.', '', $emailParts[0]);
$normalizedEmail = sprintf('%s@%s', $emailParts[0], $emailParts[1]);
}
return normalizeAndHash($normalizedEmail, true);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment