Zum Inhalt springen

Server-seitige Conversions

Manche Conversions entstehen nicht im Browser. Eine Anfrage wird erst Tage später zum bezahlten Auftrag, ein Abo wird nach der Testphase aktiv, eine Bestellung erst nach der Bonitätsprüfung freigegeben.

Mit der Server-API meldest du solche Ereignisse aus deinem eigenen Backend an usertrax. usertrax findet den ursprünglichen Besuch wieder und überträgt dessen Werbe-Attribution — gclid, fbclid, UTM-Parameter — auf das neue Ereignis. So landet der Umsatz in Google Ads und Meta bei der Kampagne, die ihn ausgelöst hat.

  1. Referenz beim Formular-Versand speichern

    Der Tracker gibt dir die IDs des laufenden Besuchs:

    const ids = window.usertrax.getTrackingIds();
    // { session_id: "…", visitor_id: "…" }

    Schreibe session_id in ein verstecktes Formularfeld und speichere den Wert zusammen mit der Anfrage in deiner Datenbank:

    <form method="post" action="/anfrage">
    <input type="hidden" name="usertrax_session" id="usertrax_session" />
    <!-- weitere Felder -->
    </form>
    <script>
    document.getElementById("usertrax_session").value =
    window.usertrax.getTrackingIds().session_id || "";
    </script>
  2. Server-Key holen

    Im Dashboard unter Domains → Einstellungen findest du den Server-Key (utx_sk_…).

    Der Server-Key ist geheim. Er gehört ausschließlich in dein Backend — niemals in JavaScript, HTML oder ein öffentliches Repository. Er ist nicht derselbe Wert wie der Auth-Key aus dem Tracking-Script.

  3. Conversion melden

    Sobald aus der Anfrage ein Auftrag wird, schickt dein Backend:

    Terminal-Fenster
    curl -X POST https://api.usertrax.io/api/v1/server/conversions \
    -H "X-Server-Key: utx_sk_..." \
    -H "Content-Type: application/json" \
    -d '{
    "event": "purchase",
    "event_id": "auftrag-8123",
    "value": 2500.00,
    "currency": "EUR",
    "reference": { "session_id": "die-gespeicherte-session-id" },
    "user_data": { "email": "kunde@example.com" }
    }'

    Antwort:

    {
    "status": "success",
    "conversion_id": 91823,
    "event_id": "auftrag-8123",
    "attribution_source": "session"
    }

    attribution_source zeigt, worüber die Verknüpfung gefunden wurde. Steht dort none, konnte usertrax den ursprünglichen Besuch nicht zuordnen — die Conversion wird trotzdem gespeichert, aber ohne Werbe-Attribution.

usertrax probiert mehrere Wege durch und nimmt den ersten Treffer:

FeldBeschreibung
reference.session_idDie zuverlässigste Variante — siehe oben
reference.event_idDie event_id der ursprünglichen Conversion, z. B. deines lead-Events
reference.visitor_idDer wiedererkennbare Besucher über mehrere Sitzungen hinweg
user_data.emailWird einem bestehenden Profil zugeordnet

Du kannst gclid, fbclid und utm auch direkt mitschicken, wenn du sie selbst gespeichert hast. Direkt übergebene Werte haben immer Vorrang vor geerbten.

Für nächtliche Abgleiche gibt es einen Batch-Endpunkt mit bis zu 100 Ereignissen pro Anfrage:

Terminal-Fenster
curl -X POST https://api.usertrax.io/api/v1/server/conversions/batch \
-H "X-Server-Key: utx_sk_..." \
-H "Content-Type: application/json" \
-d '{
"conversions": [
{ "event": "purchase", "event_id": "auftrag-1", "value": 1200 },
{ "event": "purchase", "event_id": "auftrag-2", "value": 890 }
]
}'

Die Antwort meldet jedes Element einzeln zurück. Ein fehlerhafter Datensatz blockiert die übrigen nicht.

FeldTypBeschreibung
eventstring, PflichtName des Ereignisses, z. B. purchase (max. 100 Zeichen)
event_idstringDeine eigene ID, z. B. die Auftragsnummer. Dient der Dublettenerkennung
valuenumberWert der Conversion
currencystringISO-Code, z. B. EUR. Ohne Angabe gilt die Währung der Domain
event_timestampstringZeitpunkt im ISO-8601-Format. Ohne Angabe: jetzt. Max. 90 Tage rückwirkend
labelstringFreies Label zur Einordnung im Dashboard
reference.session_idstringSession-ID aus getTrackingIds()
reference.event_idstringevent_id der ursprünglichen Conversion
reference.visitor_idstringVisitor-ID aus getTrackingIds()
user_dataobjectemail, customer_id, phone — für Profil-Zuordnung und Enhanced Conversions
meta_dataobjectBeliebige Zusatzdaten, die am Ereignis gespeichert werden
gclid, fbclid, fbc, fbp, msclkid, ttclid, adcell, awc, li_fat_idstringKlick-IDs, falls du sie selbst gespeichert hast
utmobjectutm_source, utm_medium, utm_campaign, utm_term, utm_content
landing_pagestringEinstiegsseite des ursprünglichen Besuchs
first_touchpoint, last_touchpointstringKanal des ersten bzw. letzten Kontakts
ip_address, user_agentstringIP und User-Agent des ursprünglichen Besuchs, nicht deines Servers. Verbessert das Matching bei Meta

Alle Felder außer event sind optional. Was du nicht mitschickst, ergänzt usertrax aus dem verknüpften Besuch.

  • Doppelte Meldungen werden über event_id abgefangen. Schick ruhig denselben Auftrag zweimal — die Antwort lautet dann duplicate, und es entsteht keine zweite Conversion.
  • Rückdatierung ist bis 90 Tage möglich (event_timestamp im ISO-8601-Format). Ältere Ereignisse lehnt usertrax ab, weil Google Ads und Meta sie ohnehin verwerfen.
  • Bestehende Ereignisse bleiben unverändert. Aus der Anfrage wird kein Auftrag „umgeschrieben“ — es entsteht ein zusätzliches Ereignis. Dein Funnel bleibt sichtbar.
  • Die Endpunkte findest du auch in der API-Referenz unter „Server-Side Tracking“.