Referral Tracking

API-Endpunkte

Serverseitige Endpunkte für Empfehlungsverfolgung

Empfehlungs-API-Endpunkte

Wenn Sie serverseitige Empfehlungsverfolgung bevorzugen (oder sie für Backend-Only-Integrationen benötigen), können Sie diese Endpunkte direkt aufrufen, anstatt das JavaScript-Tracking-Skript zu verwenden.

Alle Empfehlungsendpunkte unterstützen CORS und erfordern keine API-Schlüssel-Authentifizierung.

Empfehlungs- vs. Affiliate-Kampagnen: Empfehlungs-Kampagnen vergeben Punkte bei Anmeldungen und Käufen. Affiliate-Kampagnen vergeben Dollar-Provisionen bei empfohlenen Käufen mit einer exklusiven Auszahlungsstruktur – entweder einen Prozentsatz des Verkaufs oder eine Pauschale pro Verkauf (nicht beides). Die Anmeldeverfolgung zahlt bei Affiliate-Kampagnen keine Provision (nur bei Käufen). Kaufantworten enthalten pointsAwarded für den Empfehlungsmodus und commissionAwarded für den Affiliate-Modus.


Empfehlungs-Code validieren

GET/api/referral/validate-code
No authentication required

Prüfen Sie, ob ein Empfehlungs-Code gültig ist, und rufen Sie Informationen über den Empfehlenden ab.

Abfrageparameter

codestring required

Der zu validierende Empfehlungs-Code

contestIdstring required

Die Wettbewerbs-ID

Anfrage

bash
curl -X GET "https://blitzrocket.com/api/referral/validate-code?code=REF-XYZ789&contestId=clx1abc123"

Antwort

json
{
  "valid": true,
  "referrerEmail": "jane@example.com",
  "referrerName": "Jane Doe",
  "contestId": "clx1abc123"
}

Besuch verfolgen

POST/api/referral/track-visit
No authentication required

Erfassen Sie, dass jemand Ihre Seite über einen Empfehlungslink besucht hat.

Anfrageinhalt

referralCodestring required

Der Empfehlungs-Code aus der URL

contestIdstring required

Die Wettbewerbs-ID

urlstring

Die besuchte Seiten-URL (optional)

Anfrage

bash
curl -X POST https://blitzrocket.com/api/referral/track-visit \
  -H "Content-Type: application/json" \
  -d '{
    "referralCode": "REF-XYZ789",
    "contestId": "clx1abc123",
    "url": "https://yoursite.com/landing-page"
  }'

Antwort

json
{
  "success": true
}

Anmeldung verfolgen

POST/api/referral/track-signup
No authentication required

Erfassen Sie, dass ein empfohlener Besucher sich angemeldet hat.

Anfrageinhalt

emailstring required

E-Mail-Adresse des neuen Anmelders

contestIdstring required

Die Wettbewerbs-ID

referralCodestring

Der Empfehlungs-Code der Person, die ihn empfohlen hat (optional bei direkten Anmeldungen)

externalSiteUrlstring required

URL der Seite, auf der die Anmeldung erfolgte

namestring

Name des neuen Anmelders (optional)

Anfrage

bash
curl -X POST https://blitzrocket.com/api/referral/track-signup \
  -H "Content-Type: application/json" \
  -d '{
    "email": "newuser@example.com",
    "campaignId": "clx1abc123",
    "referralCode": "REF-XYZ789",
    "externalSiteUrl": "https://yoursite.com/signup"
  }'

Antwort

json
{
  "success": true,
  "data": {
    "entryId": "entry_new789",
    "isReferred": true,
    "pointsAwarded": {
      "advocate": 10,
      "friend": 5
    }
  }
}

Kauf verfolgen

POST/api/referral/track-purchase
No authentication required

Erfasst, dass ein geworbener Nutzer einen Kauf getätigt hat. Wird von RocketTracker.trackPurchase() in blitzrocket.js verwendet.

Anfragetext

campaignIdstring required

Die Wettbewerbskennung (gleich wie contestId)

referralCodestring required

Der Empfehlungs-Code des Befürworters

orderIdstring required

Eindeutige Bestellnummer

amountnumber required

Kaufbetrag

externalSiteUrlstring required

URL der Seite, auf der der Kauf stattfand

emailstring

E-Mail-Adresse des Käufers (optional)

phonestring

Telefonnummer des Käufers (optional)

currencystring

Währungscode (Standard: 'USD')

Anfrage

bash
curl -X POST https://blitzrocket.com/api/referral/track-purchase \
  -H "Content-Type: application/json" \
  -d '{
    "campaignId": "clx1abc123",
    "referralCode": "REF-XYZ789",
    "orderId": "order-12345",
    "amount": 99.99,
    "currency": "USD",
    "externalSiteUrl": "https://yoursite.com/checkout/success",
    "email": "buyer@example.com"
  }'

Antwort

Referral-Kampagne (Punkte):

json
{
  "success": true,
  "message": "Kauf erfolgreich erfasst",
  "referrerEntryId": "entry_abc123",
  "pointsAwarded": { "advocate": 50, "friend": 10 },
  "commissionAwarded": { "advocate": 0 }
}

Affiliate-Kampagne (Dollar-Provision):

json
{
  "success": true,
  "message": "Kauf erfolgreich erfasst",
  "referrerEntryId": "entry_abc123",
  "pointsAwarded": { "advocate": 0, "friend": 0 },
  "commissionAwarded": { "advocate": 24.99 }
}

Für die nur per E-Mail erfolgende Kaufverfolgung (ohne Empfehlungs-Code in der Anfrage) verwenden Sie stattdessen POST /api/contest/track-purchase.


Vollständiges Server-seitiges Beispiel

Hier ist ein vollständiges Beispiel zur Implementierung der Empfehlungsverfolgung auf Ihrem Server:

javascript
const express = require("express");
const app = express();

const BLITZROCKET_BASE = "https://blitzrocket.com/api/referral";
const CONTEST_ID = process.env.CONTEST_ID;

app.post("/api/signup", async (req, res) => {
  const { email, name, referralCode } = req.body;

  // 1. Erstelle Benutzer in deinem System
  const user = await createUser({ email, name });

  // 2. Verfolge die vermittelte Anmeldung in Blitz Rocket
  if (referralCode) {
    await fetch(`${BLITZROCKET_BASE}/track-signup`, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        email,
        name,
        contestId: CONTEST_ID,
        referralCode,
      }),
    });
  }

  res.json({ success: true, user });
});

app.post("/api/purchase", async (req, res) => {
  const { email, orderId, amount, currency } = req.body;

  // 1. Verarbeite den Kauf in deinem System
  const order = await processOrder({ email, orderId, amount });

  // 2. Verfolge den Kauf in Blitz Rocket
  await fetch(`${BLITZROCKET_BASE}/track-purchase`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      email,
      contestId: CONTEST_ID,
      orderId,
      amount,
      currency,
    }),
  });

  res.json({ success: true, order });
});