Wie du den Klar-Tracking-Pixel einrichtest, indem du deine Domain validierst, das Tracking-Skript implementierst und die UTM-Parameter anpasst.
Möchtest du den Attributions-Report in Klar nutzen? Gute Wahl 🎉
Damit unsere voll integrierte Attributionslösung funktioniert, musst du in Klar die Klar-Pixel-Datenquelle konfigurieren und ein Tracking-Skript auf deiner Seite einbauen. Das dauert nur ein paar Minuten.
1. Die Klar-Pixel-Datenquelle hinzufügen
Wenn du mehrere Domains hast, solltest du für jeden dieser Stores eine eigene Pixel-Datenquelle erstellen.
Gehe in Klar zur Seite Store-Konfigurator und klicke auf Datenquelle verbinden
Wähle die Datenquelle Klar Pixel
Gib der Datenquelle einen Namen – z. B. Klar Tracking Script
Konfiguriere ein Basis-Tracking-Skript und klicke auf Konfigurieren.
Von hier nimmst du einfach die ID, die dir das Skript gibt
Diese musst du dann als dataSourceId in allen Events verwenden, die du sendest.
2. Das Klar-Skript in deiner serverseitigen Umgebung einbauen
Alle Events sollten per POST-Request an „https://september.durchsichtig.xyz/server-side-event/EVENT_NAME" gesendet werden. Die IP des Kunden muss über den Header „x-serverside-ip" übergeben werden.
Implementierungs-Anforderungen:
HTTP-Header
- Content-Type: application/json
- x-serverside-ip: Customer's IP address (required for server-side tracking)
Endpunkt
POST https://september.durchsichtig.xyz/server-side-event/{EVENT_NAME}
Wobei {EVENT_NAME} dem Feld „eventName" im Payload entspricht.
Fehlerbehandlung
Der Server gibt bei fehlerhaften Requests einen Statuscode 400 mit einem „X-Klar-Failure"-Header zurück:
- „read-headers": Fehlende oder ungültige Header
- „get-body": Falsches Format oder fehlender Request-Body
- „invalid-json": Ungültiges JSON-Format im Request-Body
Hinweise
1. septemberId: Muss eine 16-stellige nanoid sein, die für konsistentes User-Tracking über Sessions hinweg genutzt wird. (konstant für den Nutzer, idealerweise client-seitig in einem Cookie gespeichert; eine nanoid lässt sich z. B. mit Bibliotheken wie nanoid erzeugen.)
2. Timestamps: Alle `createdAt`-Felder müssen im ISO-8601-Format sein
3. Optionale Felder: Mit `?` markierte Felder sind optional, aber empfohlen, wenn verfügbar
Für die korrekte Implementierung musst du verschiedene Events konfigurieren:
Zu implementierende Events
VisitEvent
ProductViewedEvent
AddToCartEvent
RemoveFromCartEvent
UpdateCheckoutEvent
PaymentInfoEvent
ShippingInfoEvent
OrderEvent
UpdateABGroupEvent
CustomConversionEvent
Alle diese Events werden ausgelöst, indem ein CustomEvent auf dem document veröffentlicht wird. Sobald das Event erfolgreich veröffentlicht wurde, wird ein Fetch-Event mit dem Payload ausgelöst.
Basis-Event-Schema:
interface BaseEvent {
eventName: string; // Required - The specific event type
createdAt: string; // Required - ISO 8601 timestamp
pageUrl: string; // Required - Current page URL
septemberId: string; // Required - 16 character nanoid for user tracking
googleAnalyticsId: string; // Required - Value of the _ga cookie
facebookId: string; // Required - Value of the _fbp cookie
dataSourceId: string; // Required - DataSource ID from Klar pixel configuration
referrer: string; // Required - Previous page URL
hasGivenConsent: boolean; // Required - User consent status for tracking
customerId: string; // Required - Customer identifier
screen: string; // Required - Screen resolution (e.g., "1920x1080")
shopSystem: string; // Required - E-commerce platform (e.g., "shopify")
}
2.1 VisitEvent
Wird bei jedem Seitenbesuch auf der gesamten Website ausgelöst.
interface VisitEvent extends BaseEvent {
eventName: "VisitEvent";
pageTitle: string; // Required - Title of the current page
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/VisitEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "VisitEvent",
"pageTitle": "Best Product of the World",
"createdAt": "2024-04-11T11:11:15.783Z",
"pageUrl": "https://getklar.com/dogs",
"septemberId": "a1b2c3d4e5f6g7h8",
"googleAnalyticsId": "GA1.2.1234567890.1234567890",
"facebookId": "fb.1.1234567890.1234567890",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://google.de",
"hasGivenConsent": true,
"customerId": "cust_123456",
"screen": "1920x1200",
"shopSystem": "shopify"
}'
2.2 ProductViewEvent
Wird ausgelöst, wenn ein Kunde eine Produktseite ansieht.
interface ProductViewedEvent extends BaseEvent {
eventName: "ProductViewedEvent";
productId: string; // Required - Either productId OR productSku must be provided
productSku: string; // Required - Either productId OR productSku must be provided
productTitle?: string; // Optional - Product name/title
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/ProductViewedEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "ProductViewedEvent",
"productId": "46667923652922",
"productTitle": "Best Dog TransportBOX",
"productSku": "F0011",
"createdAt": "2024-04-11T11:22:43.984Z",
"pageUrl": "https://getklar.com/dogs/transport",
"septemberId": "a1b2c3d4e5f6g7h8",
"googleAnalyticsId": "GA1.2.1234567890.1234567890",
"facebookId": "fb.1.1234567890.1234567890",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://getklar.com/dogs",
"hasGivenConsent": true,
"customerId": "cust_123456",
"screen": "1920x1200",
"shopSystem": "shopify"
}'
2.3 AddToCartEvent
Wird ausgelöst, wenn ein Produkt in den Warenkorb gelegt wird.
interface AddToCartEvent extends BaseEvent {
eventName: "AddToCartEvent";
productId: string; // Required - Either productId OR productSku must be provided
productSku: string; // Required - Either productId OR productSku must be provided
productTitle?: string; // Optional - Product name
productQuantity: number; // Required - Quantity added
productPrice?: number; // Optional - Product price
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/AddToCartEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "AddToCartEvent",
"productId": "46667923652922",
"productSku": "F0011",
"productTitle": "Best Dog TransportBOX",
"createdAt": "2024-04-11T11:27:06.262Z",
"pageUrl": "https://getklar.com/dogs/transport",
"septemberId": "a1b2c3d4e5f6g7h8",
"googleAnalyticsId": "GA1.2.1234567890.1234567890",
"facebookId": "fb.1.1234567890.1234567890",
"shopSystem": "shopify",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://getklar.com/dogs",
"hasGivenConsent": true,
"customerId": "cust_987654321",
"screen": "3840x2160"
}'
2.4 RemoveFromCartEvent
Wird ausgelöst, wenn ein Produkt aus dem Warenkorb entfernt wird.
interface RemoveFromCartEvent extends BaseEvent {
eventName: "RemoveFromCartEvent";
productId: string; // Required - Either productId OR productSku must be provided
productSku: string; // Required - Either productId OR productSku must be provided
productTitle?: string; // Optional - Product name
productQuantity: number; // Required - Quantity removed
productPrice?: number; // Optional - Product price
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/RemoveFromCartEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "RemoveFromCartEvent",
"productId": "46667923652922",
"productSku": "F0011",
"productTitle": "Best Dog TransportBOX",
"productQuantity": 1,
"productPrice": 8.5,
"createdAt": "2024-04-11T11:35:45.000Z",
"pageUrl": "https://getklar.com/cart",
"septemberId": "m1n2b3v4c5x6z7l8",
"googleAnalyticsId": "GA1.2.3456789012.3456789012",
"facebookId": "fb.1.3456789012.3456789012",
"shopSystem": "shopify",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://getklar.com/product/f0011",
"hasGivenConsent": true,
"customerId": "cust_2468101214",
"screen": "2560x1440"
}'
2.5 UpdateCheckoutEvent
Wird ausgelöst, wenn ein Kunde den Checkout-Bereich deines Shops betritt.
interface UpdateCheckoutEvent extends BaseEvent {
eventName: "UpdateCheckoutEvent";
checkoutId: string; // Required - Associated checkout session
cartId?: string; // Optional - Shopping cart identifier
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/UpdateCheckoutEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "UpdateCheckoutEvent",
"checkoutId": "7297e4e6e7c95f2e8c3da4c66d60f7e7",
"createdAt": "2024-04-11T11:29:32.929Z",
"pageUrl": "https://getklar.com/checkouts/cn/Z2NwLWV1cm9wZS13ZkVKSz",
"septemberId": "a1b2c3d4e5f6g7h8",
"googleAnalyticsId": "GA1.2.1234567890.1234567890",
"facebookId": "fb.1.1234567890.1234567890",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://getklar.com/dogs/transport",
"hasGivenConsent": true,
"customerId": "cust_123456",
"screen": "3840x2160",
"shopSystem": "shopify"
}'
2.6 PaymentInfoEvent
Wird ausgelöst, wenn während des Checkouts Zahlungsinformationen eingegeben werden.
interface PaymentInfoEvent extends BaseEvent {
eventName: "PaymentInfoEvent";
checkoutId: string; // Required - Associated checkout session
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/PaymentInfoEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "PaymentInfoEvent",
"checkoutId": "chk_def456",
"createdAt": "2024-04-11T11:30:10.512Z",
"pageUrl": "https://getklar.com/checkout/payment",
"septemberId": "z9y8x7w6v5u4t3s2",
"googleAnalyticsId": "GA1.2.2345678901.2345678901",
"facebookId": "fb.1.2345678901.2345678901",
"shopSystem": "shopify",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://getklar.com/checkout/shipping",
"hasGivenConsent": true,
"customerId": "cust_123456789",
"screen": "1920x1080"
}'
2.7 ShippingInfoEvent
Wird ausgelöst, wenn während des Checkouts Versandinformationen eingegeben werden.
interface ShippingInfoEvent extends BaseEvent {
eventName: "ShippingInfoEvent";
checkoutId: string; // Required - Associated checkout session
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/ShippingInfoEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "ShippingInfoEvent",
"checkoutId": "chk_jkl012",
"createdAt": "2024-04-11T11:40:00.000Z",
"pageUrl": "https://getklar.com/checkout/shipping",
"septemberId": "o9p8q7r6s5t4u3v2",
"googleAnalyticsId": "GA1.2.4567890123.4567890123",
"facebookId": "fb.1.4567890123.4567890123",
"shopSystem": "shopify",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://getklar.com/checkout/cart",
"hasGivenConsent": true,
"customerId": "cust_135791113",
"screen": "1280x800"
}'
2.8 OrderEvent
Wird auf der „Checkout Finish"-Seite ausgelöst, wenn die Bestellung vom Kunden abgeschickt wurde.
interface CheckoutItem {
productId?: string; // Optional - Product identifier (either productId or productSku required if item present)
productSku?: string; // Optional - Product SKU (either productId or productSku required if item present)
productTitle?: string; // Optional - Product name
productQuantity?: number; // Optional - Quantity ordered
productPrice?: number; // Optional - Product price
}
interface OrderEvent extends BaseEvent {
eventName: "OrderEvent";
orderId: string; // Required - Unique order identifier
checkoutId: string; // Required - Associated checkout session
customerId?: string; // Optional - Customer identifier
cartId?: string; // Optional - Shopping cart identifier
checkoutItems?: CheckoutItem[]; // Optional - Array of purchased items
shippingTotal?: number; // Optional - Shipping cost
checkoutTax?: number; // Optional - Tax amount
checkoutTotal?: number; // Optional - Total order amount
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/OrderEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "OrderEvent",
"orderId": "5916248703148",
"checkoutId": "7282c2584c907ddcd9f17dd01f374137",
"customerId": "cust_123456",
"checkoutItems": [{
"productId": "42897447452844",
"productSku": "12345",
"productTitle": "Dog BOX",
"productQuantity": 1,
"productPrice": 0
}],
"shippingTotal": 0,
"checkoutTax": 0,
"checkoutTotal": 629.95,
"createdAt": "2024-04-11T11:35:18.474Z",
"pageUrl": "https://getklar.com/checkouts/cn/Z2NwLWV1cm9wZS13ZkVKSz",
"septemberId": "a1b2c3d4e5f6g7h8",
"googleAnalyticsId": "GA1.2.1234567890.1234567890",
"facebookId": "fb.1.1234567890.1234567890",
"shopSystem": "shopify",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://getklar.com/dogs/transport",
"hasGivenConsent": true,
"screen": "3840x2160"
}'
2.9 UpdateABGroupEvent
Wird ausgelöst, wenn ein Nutzer einer A/B-Testgruppe zugewiesen wird.
interface UpdateABGroupEvent extends BaseEvent {
eventName: "UpdateABGroupEvent";
projectName?: string; // Optional - A/B test project name
variantName: string; // Required - Assigned variant (e.g., "VariantA", "VariantB")
experimentName: string; // Required - Experiment identifier
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/UpdateABGroupEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "UpdateABGroupEvent",
"projectName": "HomepageRedesign",
"variantName": "VariantB",
"experimentName": "Spring2024Experiment",
"createdAt": "2024-04-11T11:50:00.000Z",
"pageUrl": "https://getklar.com/landing/ab-test",
"septemberId": "r5t6y7u8i9o0p1q2",
"googleAnalyticsId": "GA1.2.5678901234.5678901234",
"facebookId": "fb.1.5678901234.5678901234",
"shopSystem": "shopify",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://getklar.com/home",
"hasGivenConsent": true,
"customerId": "cust_1112131415",
"screen": "1920x1080"
}'
2.10 CustomConversionEvent
Custom-Conversion-Events in KLAR einrichten
Gehe zum Store-Konfigurator → Öffne die Store-Einstellungen.
Definiere deine Custom Conversions → Weise einer ID einen aussagekräftigen Namen zu (z. B.
1 = Add to Cart), damit sie im Frontend korrekt erscheinen.Die Event-ID ist die, die du als customConversionId in deinem Payload setzen musst.
Wird für das Custom-Conversion-Tracking mit spezifischen Werten ausgelöst.
interface CustomConversionEvent extends BaseEvent {
eventName: "CustomConversionEvent";
customConversionId: number; // Required - Custom conversion identifier
customConversionValue?: number; // Optional - Conversion value
}
Beispiel:
curl -X POST https://september.durchsichtig.xyz/server-side-event/CustomConversionEvent \
-H "Content-Type: application/json" \
-H "x-serverside-ip: 192.168.1.100" \
-d '{
"eventName": "CustomConversionEvent",
"customConversionId": 101,
"customConversionValue": 49.99,
"createdAt": "2024-04-11T12:00:00.000Z",
"pageUrl": "https://getklar.com/thank-you",
"septemberId": "g7h8j9k0l1m2n3b4",
"googleAnalyticsId": "GA1.2.6789012345.6789012345",
"facebookId": "fb.1.6789012345.6789012345",
"shopSystem": "shopify",
"dataSourceId": "klar-shopify-pixel-01",
"referrer": "https://getklar.com/checkout/complete",
"hasGivenConsent": true,
"customerId": "cust_1617181920",
"screen": "1440x900"
}'
Troubleshooting
Wenn ein Request fehlerhaft ist, gibt der Server einen Statuscode 400 zusammen mit einem „X-Klar-Failure"-Header zurück. Der Header-Wert gibt den konkreten Fehlertyp an:
„read-headers": Fehlende oder ungültige Header im Request
„get-body": Falsches Format oder fehlender Request-Body
„invalid-json": Body wurde übergeben, enthält aber ungültiges JSON-Format
Falls dir unbekannte Fehler oder Bugs begegnen, kontaktiere bitte Pascal von unserem Kundensupport.
3. Datenschutz-Snippets hinzufügen
Achte darauf, unser Datenschutz-Snippet in deine Datenschutzerklärung aufzunehmen, um deine Kunden über die Nutzung des Klar-Tracking-Pixels zu informieren. Ein deutsches und ein englisches Snippet findest du in der Klar-Pixel-Datenquelle unterhalb des Tracking-Skripts in einem eingeklappten Abschnitt namens „Data Protection Snippet".
4. Klar-URL-Parameter implementieren
Damit Conversions und Kosten so genau wie möglich zugeordnet werden können, musst du die vordefinierten Klar-Tracking-Codes in deinen Werbekonten einbauen.
Hier findest du Anleitungen dazu für jeden Marketing-Kanal:
Was passiert als Nächstes?
Ab jetzt können wir Besucher auf deiner Seite und ihre Kaufaktivität tracken, um unser Attributions-Reporting zu speisen.
Ab morgen siehst du Daten in deinen Reports – allerdings erst ab dem Zeitpunkt, zu dem du das Skript hinzugefügt hast.





