Google Ads Connector
Verbinde Google Ads über Tajo mit Brevo, um Werbe-Audiences zu synchronisieren, Conversion-Daten zu importieren und einheitliche Kundenprofile zu erstellen, die bezahlte Akquise und Lifecycle-Marketing miteinander verbinden.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Google Ads |
| Kategorie | Marketing |
| Einrichtungsaufwand | Fortgeschritten |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Kampagnen, Audiences, Conversions, Kund:innen |
| Verfügbare Skills | 7 |
Funktionen
- Customer-Match-Sync - Lade Brevo-Kontaktlisten als Customer-Match-Audiences zu Google Ads hoch
- Conversion-Tracking - Importiere Offline-Conversions aus Brevo-Events in Google Ads
- Audience-Sync - Bidirektionale Synchronisation zwischen Brevo-Listen und Google-Ads-Audiences
- Kampagnen-Reporting - Hole dir Kampagnen-Performance-Daten in deine Tajo-Dashboards
- GCLID-Tracking - Erfasse Google Click IDs für die Attribution von Offline-Conversions
- Smart-Bidding-Daten - Sende Conversion-Werte zurück an Google für die Gebotsoptimierung
- Lead-Form-Sync - Importiere Einsendungen aus Google-Ads-Lead-Formularen als Brevo-Kontakte
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein Google-Ads-Konto mit aktiviertem API-Zugriff
- Ein Google-Cloud-Projekt mit aktivierter Google Ads API
- OAuth-2.0-Anmeldedaten (Client ID und Client Secret)
- Einen Google-Ads-Developer-Token (Antrag im Google Ads API Center)
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto mit API-Anmeldedaten
Authentifizierung
OAuth 2.0
Die Google Ads API verwendet OAuth 2.0 zur Authentifizierung. Du benötigst ein Refresh-Token, das du über den OAuth-Consent-Flow erhältst.
# Required OAuth scopeshttps://www.googleapis.com/auth/adwordsDeveloper Token
Für alle Anfragen an die Google Ads API ist ein Developer Token erforderlich, der von Google freigegeben werden muss.
# Set up authentication headerscurl -X POST https://googleads.googleapis.com/v18/customers/1234567890/googleAds:search \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "developer-token: DEVELOPER_TOKEN" \ -H "login-customer-id: MANAGER_ACCOUNT_ID"Konfiguration
Grundeinrichtung
connectors: google_ads: enabled: true developer_token: "your-developer-token" oauth: client_id: "your-client-id" client_secret: "your-client-secret" refresh_token: "your-refresh-token" customer_id: "123-456-7890" login_customer_id: "111-222-3333" # Manager account (optional)
# Data sync options sync: customer_match: true conversions: true campaigns: true lead_forms: true
# Conversion tracking conversions: action_id: "123456789" default_currency: "USD"Customer-Match-Konfiguration
Lade Brevo-Kontakte als Google-Ads-Audiences hoch:
customer_match: enabled: true lists: - brevo_list_id: 5 audience_name: "All Customers" match_type: "CONTACT_INFO" - brevo_list_id: 7 audience_name: "High Value Customers" match_type: "CONTACT_INFO"
# Data fields to match match_fields: - email - phone - first_name - last_name - country_code - zip_code
# Sync schedule schedule: "daily" sync_mode: "mirror" # mirror, append, or removeImport von Offline-Conversions
conversion_import: enabled: true conversion_action: "purchase" gclid_attribute: "GCLID" # Brevo attribute storing GCLID conversion_events: - brevo_event: "order_completed" conversion_name: "Purchase" value_field: "revenue" - brevo_event: "subscription_created" conversion_name: "Subscription" value_field: "plan_value"API-Endpoints
| Methode | Endpoint | Beschreibung |
|---|---|---|
POST | /v18/customers/{id}/googleAds:search | Kampagnen und Ressourcen durchsuchen (GAQL) |
POST | /v18/customers/{id}/googleAds:searchStream | Suchergebnisse streamen |
POST | /v18/customers/{id}/offlineUserDataJobs:create | Customer-Match-Upload-Job anlegen |
POST | /v18/customers/{id}/conversionUploads:uploadClickConversions | Offline-Conversions hochladen |
POST | /v18/customers/{id}/conversionUploads:uploadCallConversions | Call-Conversions hochladen |
GET | /v18/customers/{id}/campaignBudgets | Kampagnen-Budgets abrufen |
POST | /v18/customers/{id}/customerLists:mutate | Customer-Listen verwalten |
Code-Beispiele
Google-Ads-Connector initialisieren
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Google Ads accountawait tajo.connectors.connect('google-ads', { developerToken: process.env.GOOGLE_ADS_DEV_TOKEN, clientId: process.env.GOOGLE_OAUTH_CLIENT_ID, clientSecret: process.env.GOOGLE_OAUTH_CLIENT_SECRET, refreshToken: process.env.GOOGLE_OAUTH_REFRESH_TOKEN, customerId: '123-456-7890'});Customer-Match-Audience hochladen
// Sync a Brevo list to Google Ads Customer Matchawait tajo.connectors.syncAudience('google-ads', { brevoListId: 5, audienceName: 'High Value Customers', matchType: 'CONTACT_INFO', syncMode: 'mirror'});Offline-Conversions importieren
// Upload offline conversions from Brevo order eventsawait tajo.connectors.uploadConversions('google-ads', { conversionAction: 'customers/123456/conversionActions/789', conversions: [ { gclid: 'CjwKCAiA...', conversionDateTime: '2024-01-15 10:30:00-05:00', conversionValue: 89.99, currencyCode: 'USD' } ]});Kampagnen-Performance abfragen (GAQL)
// Query campaign metrics using Google Ads Query Languageconst query = ` SELECT campaign.name, campaign.status, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions FROM campaign WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.impressions DESC LIMIT 20`;
const results = await tajo.connectors.query('google-ads', { gaql: query });Rate Limits
| Ressource | Limit | Details |
|---|---|---|
| API-Anfragen | 15.000/Tag | Pro Developer Token |
| Mutate-Operationen | 10.000/Tag | Pro Kundenkonto |
| GAQL-Abfragen | 1.500/Tag | Pro Kundenkonto |
| Customer-Match-Uploads | 10 Jobs/Tag | Pro Customer-Liste |
| Conversion-Uploads | 2.000/Anfrage | Pro Upload-Batch |
| Page Size | 10.000 Zeilen | Max pro Search-Response |
Freigabe des Developer Tokens
Für die Google Ads API ist ein freigegebener Developer Token erforderlich. Beantrage ihn im Google Ads API Center deines Manager-Kontos. Test-Konten haben reduzierte Rate Limits.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
DEVELOPER_TOKEN_NOT_APPROVED | Token in Prüfung | Auf die Freigabe durch Google warten oder ein Test-Konto nutzen |
CUSTOMER_NOT_FOUND | Falsche Customer ID | Bindestriche aus der Customer ID entfernen oder Manager-Konto prüfen |
| Niedrige Customer-Match-Trefferquote | Unzureichende Daten | Mehrere Identifier (E-Mail, Telefon, Name, PLZ) einbeziehen |
| Conversions erscheinen nicht | Attributionsfenster | Conversions können bis zu 24 Stunden bis zur Verarbeitung benötigen |
OAUTH_TOKEN_EXPIRED | Refresh-Token ungültig | Erneut authentifizieren und ein neues Refresh-Token anfordern |
PERMISSION_DENIED | Unzureichende Zugriffsrechte | API-Zugriffsebene und Kontoverknüpfung prüfen |
Best Practices
- Manager-Konto nutzen - Verwalte mehrere Ads-Konten über ein einzelnes Manager- (MCC-)Konto
- Customer-Match-Daten hashen - Hashe personenbezogene Daten vor dem Upload zu Customer Match immer mit SHA-256
- GCLIDs erfassen - Speichere Google Click IDs in Brevo-Attributen für das Offline-Conversion-Tracking
- Conversion-Uploads bündeln - Fasse Conversions zu Tages-Batches zusammen, statt sie in Echtzeit zu übertragen
- GAQL für Reporting nutzen - Setze die Google Ads Query Language für flexibles Kampagnen-Reporting ein
- Match-Raten überwachen - Beobachte die Trefferquoten deiner Customer-Match-Audiences und verbessere die Datenqualität
- Enhanced Conversions einrichten - Nutze Enhanced Conversions für eine genauere Conversion-Messung
Sicherheit
- OAuth 2.0 - Sichere token-basierte Authentifizierung mit Refresh-Tokens
- SHA-256-Hashing - Customer-Match-Daten werden vor dem Upload gehasht
- Datensparsamkeit - Nur die erforderlichen Felder werden an Google übertragen
- Google-Cloud-Compliance - SOC 2, ISO 27001 und DSGVO-konform
- Gescopter Zugriff - API-Berechtigungen werden auf bestimmte Kundenkonten beschränkt
- Audit-Logging - Alle API-Anfragen werden im Google-Ads-Änderungsverlauf protokolliert