-
-
Save imranshuvo/f14817aa293d80ea559e25d72f1de39f to your computer and use it in GitHub Desktop.
Cloudflare Zaraz Google Ads conversion tracking with "enhanced conversions"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <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> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?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




