Google Ads Enhanced Conversions Integration
Overview
Enhanced Conversions is a Google Ads feature that improves the accuracy of conversion measurement by sending hashed first-party customer data (email, phone, name, address) along with conversion events. This integration automatically enriches Google Ads conversion data with CDP customer information to enable better attribution and reporting.
Key Benefits
- Improved Attribution Accuracy: Match more conversions to ad interactions (typically 5-15% lift)
- Better Campaign Optimization: More accurate data enables better automated bidding
- Privacy-Compliant: All PII data is hashed using SHA-256 before transmission
- Seamless Integration: Automatic enrichment from CDP customer data
- Multi-Tenant Support: Configure separately for each tenant/brand
How It Works
graph LR
A[Order Placed] --> B[VTEX captures gclid]
B --> C[Conversion queued in DB]
C --> D[Worker enriches with CDP data]
D --> E[Hash PII SHA-256]
E --> F[Upload to Google Ads API]
F --> G[Google matches conversion]
G --> H[Improved attribution]
Privacy and Compliance
Data Protection Standards
The Enhanced Conversions system is designed with privacy-first principles:
- SHA-256 Hashing: All PII is hashed before transmission
- GDPR/LGPD Compliance: No raw personal data leaves your infrastructure
- Secure Transmission: HTTPS/TLS for all API communication
- Data Minimization: Only necessary fields are transmitted
- Right to Erasure: Conversion data can be removed on request
What Data Is Sent
| Data Type | Required | Hashed | Format |
|---|---|---|---|
| Yes | Yes | SHA-256 (64 chars) | |
| Phone | No | Yes | SHA-256 with E.164 normalization |
| First Name | No | Yes | SHA-256 lowercase |
| Last Name | No | Yes | SHA-256 lowercase |
| Street Address | No | Yes | SHA-256 lowercase |
| City | No | Yes | SHA-256 lowercase |
| State | No | Yes | SHA-256 lowercase |
| Postal Code | No | Yes | SHA-256 (no spaces/dashes) |
| Country Code | No | No | ISO 2-letter (e.g., AR, US) |
Example of Hashed Data
# Original data (never transmitted)
email = "miguel@example.com"
phone = "+5491112345678"
# Hashed data (what Google receives)
hashed_email = "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3"
hashed_phone = "b7f3c5e4d8a9b2f1e3d6c8a7b9e2f4d1c8b5a7e9f3d2b4c6a8e1f7d9b3c5a8e4"