cli.gs
Sign in

Testen und Diagnose

Testmodus, der Diagnosebereich und alle Fehlercodes.

Bevor echte Kunden kommen, spiel deine Integration einmal vom Klick bis zur Meldung durch. Auf dieser Seite lernst du, wie der Testmodus funktioniert, wie du von Anfang bis Ende testest, wo die Diagnose auf der Integrationsseite steht und was jeder Fehlercode bedeutet. Mit dem Testmodus geht das alles, ohne Geld zu bewegen.

Kurz gesagt:

  • Ergänze eine Conversion-Meldung um "test": true. Sie durchläuft jede Prüfung, bewegt aber nie Geld.
  • Ein Test braucht einen echten ref-Code. Das Programm muss also live sein, und du brauchst einen Publisher-Link.
  • Letzte Ablehnungen auf der Integrationsseite listet abgelehnte Meldungen mit Code und Lösung.
  • Eine abgelehnte Meldung antwortet mit einem Code in error: 403 bei REF_PROGRAM_MISMATCH, 422 bei den anderen.

Testmodus

Ergänze eine Conversion-Meldung um "test": true. Die Meldung durchläuft jede Prüfung einer echten: API-Schlüssel, Signatur, ref-Code, Cookie-Fenster, Betrag und Provisionsregeln. Dann:

  • wird sie als Test-Conversion erfasst, die nie Geld bewegt. Es wird kein Guthaben reserviert, und der Publisher verdient nichts;
  • zeigt die Antwort die Provision, die eine echte Meldung eingebracht hätte, mit "test": true und dem Status REJECTED;
  • erscheint sie unter Test-Conversions auf der Integrationsseite, nicht in deiner Conversion-Liste oder den Statistiken;
  • erhält dein Endpunkt conversion.recorded mit "test": true, wenn du eine Status-Rückmeldung eingerichtet hast.

Test-Conversions haben einen eigenen Nummernraum. Ein Test blockiert also nie die echte Conversion mit derselben Bestellnummer. Wiederholst du einen Test mit derselben orderId, kommt das erste Ergebnis mit "duplicate": true zurück. Nimm für jeden Durchlauf eine neue Bestellnummer.

Von Anfang bis Ende testen

Ein Test braucht einen echten ref-Code, und den gibt es erst nach einem echten Klick. Das Programm muss also live sein, also freigeschaltet. Außerdem brauchst du einen Publisher-Link dafür, etwa von einem Publisher, den du angenommen hast.

  1. Öffne den Publisher-Link im Browser. Du landest in deinem Shop mit ?ref=... in der Adresszeile.
  2. Prüfe, dass dein Shop den Code gespeichert hat. Siehe ref-Code erfassen.
  3. Gib eine Bestellung auf, oder löse deinen Meldecode mit test: true aus.
  4. Prüfe die Antwort und die Liste Test-Conversions auf der Integrationsseite.

Die API von Hand ausprobieren

Kopiere den ref-Code aus der Adresszeile und sende ihn mit cURL:

bash
curl -i -X POST https://cli.gs/api/v1/track/conversion \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "ref": "PASTE_REF_CODE_HERE",
    "orderId": "TEST-0001",
    "amount": "149.99",
    "currency": "EUR",
    "customerType": "NEW",
    "test": true
  }'

Eine funktionierende Einrichtung antwortet mit 201 Created:

json
{ "ok": true, "conversionId": "cmg3x1q2w0001abcd9876efgh", "status": "REJECTED", "commission": 12, "duplicate": false, "confirmed": false, "test": true }

Signierst du Anfragen, teste mit der signierten Variante aus Signierte Anfragen, bevor du Unsignierte Anfragen ablehnen einschaltest.

Der Diagnosebereich

Unten auf der Integrationsseite findest du vier Blöcke:

  • Integrationsstatus zeigt zwei Prüfungen. Die Link-Prüfung öffnet einmal täglich deine Ziel-URL wie ein Besucher. Sie prüft, ob der ref-Parameter deine Weiterleitungen übersteht. Shop-Meldungen vergleicht stündlich die Conversions deines Shops mit den protokollierten Fehlern und den gesendeten Klicks.
  • Letzte Ablehnungen listet Meldungen deines Shops, die wir nicht annehmen konnten, die neuesten zuerst. Jeder Eintrag zeigt Code, Zeit, ref-Code und was zu tun ist.
  • Test-Conversions listet deine letzten Testmeldungen mit Betrag und Provision.
  • An deinen Shop gesendete Postbacks listet Zustellungen an deine Status-Rückmeldung mit Status, Versuchen und letztem HTTP-Code.
Integrationsstatus und letzte Ablehnungen
Integrationsstatus und Letzte Ablehnungen auf der Integrationsseite

Ablehnungen, die sich deinem Programm nicht zuordnen lassen, stehen dort nicht, etwa ein ref-Code, den es gar nicht gibt. Die API-Antwort enthält den Code aber immer. Protokolliere also die Antworten, die dein Shop erhält.

Fehlercodes

Eine abgelehnte Conversion-Meldung wird mit dem Code in error beantwortet: HTTP 403 für REF_PROGRAM_MISMATCH, HTTP 422 für die anderen. Dieselben Codes erscheinen unter Letzte Ablehnungen.

CodeBedeutungWas tun
BAD_SIGNATUREDer ref-Code hat seine eingebaute Prüfung nicht bestanden: Er wurde verändert, abgeschnitten oder erfunden. Es geht um den Code, nicht um deine HMAC-SignaturCode genau so speichern und senden, wie er in ?ref= ankam
REF_UNKNOWNDer ref-Code hat die richtige Form, aber es gibt keinen Klick mit diesem CodePrüfen, dass du den gespeicherten Code sendest, keinen Platzhalter oder alten Testwert
REF_PROGRAM_MISMATCHDer Code gehört zu einem Klick auf ein anderes ProgrammDen API-Schlüssel des Programms verwenden, zu dem der Link gehört. Jedes Programm braucht seinen eigenen Schlüssel
INVALID_OCCURRED_AToccurredAt liegt in der Zukunft oder vor dem KlickEchten Bestellzeitpunkt mit Zeitzone senden; Serveruhr synchron halten
REF_EXPIREDDer Klick ist älter als das Cookie-Fenster des Programms; es ist keine Provision fälligNichts zu tun, wenn der Verkauf wirklich spät kam. Meldest du spät, sende occurredAt
PROGRAM_INACTIVEDas Programm war beim Eingang der Meldung nicht aktivMeldungen werden angenommen, solange das Programm freigeschaltet oder pausiert ist
INVALID_BASKETDer Betrag war nicht lesbar, negativ oder unplausibel hochMit Punkt als Dezimaltrennzeichen senden, z. B. 49.90
DUPLICATEDieselbe Meldung ohne Bestellnummer kam zweimal innerhalb einer Minute; die zweite wurde ignoriertImmer orderId senden. Mit Bestellnummer werden Wiederholungen stattdessen mit 200 und duplicate: true beantwortet
INVALID_EVENTUnbekannter eventType beim Tracking-PixelSALE, LEAD oder SIGNUP verwenden. Bei der API ist das ein 400 invalid payload
INTERNALEin Fehler bei unsDu musst nichts tun; wir sind informiert. Meldung später wiederholen

Weitere Antworten

Diese Antworten erscheinen nicht unter Letzte Ablehnungen:

HTTPerrorWas tun
400invalid payload (mit issues) oder invalid json bodyAnfrage korrigieren; issues nennt das Feld
401missing bearer token, invalid api keyAuthorization: Bearer <Schlüssel> mit einem gültigen Schlüssel senden
401programme not activeDer Schlüssel gehört zu einem Entwurf oder einem abgelehnten oder archivierten Programm
401signature required, invalid signature, stale or missing timestamp, invalid nonce, nonce already usedSiehe Signierte Anfragen
404CONVERSION_UNKNOWNStorno für eine Bestellung, zu der wir keine Conversion haben
409CONVERSION_FINALStorno für eine Provision, die schon für eine Auszahlung festgeschrieben ist
429rate limit exceededMehr als 600 Anfragen pro Minute pro Schlüssel; langsamer senden und wiederholen

Checkliste vor dem Livegang

  • Der ref-Code wird auf jeder Landingpage erfasst, übersteht Weiterleitungen und wird an der Bestellung gespeichert.
  • Dein Server meldet jede bezahlte Bestellung mit orderId, Nettobetrag und currency. Bei 5xx oder Timeout wiederholt er.
  • Eine Test-Conversion zeigt unter Test-Conversions die Provision, die du erwartest.
  • Rückgaben und Stornierungen lösen einen Storno aus.
  • Anfragen sind signiert, und Unsignierte Anfragen ablehnen ist eingeschaltet.
  • Dein Shop sendet bei echten Bestellungen kein "test": true mehr.

Weiter

Sobald echte Conversions eintreffen, prüfst du sie unter Conversions: siehe Conversions prüfen.