Website und Eigenbau
Für eine Marketing-Website oder einen selbstgebauten Shop gibt es dasselbe Snippet und zusätzlich zwei serverseitige Endpunkte: einen für Anfragen, einen für Bestellungen.
Snippet
Abschnitt betitelt „Snippet“<script async src="https://ingest.evoar-relay.app/v1/relay.js?shop=IHRE-DOMAIN"></script>Steht eine eigene Messadresse, zeigt der Code im Cockpit bereits dorthin.
Formulare auszeichnen
Abschnitt betitelt „Formulare auszeichnen“Ohne Auszeichnung erfasst eine Website Seitenaufrufe und sonst nichts. Jedes Formular, das als Anfrage zählen soll, bekommt ein Attribut:
<form data-relay-lead="contact">Möglich sind contact, termin, anruf, download, newsletter, sms, registrierung — oder
direkt der kanonische Name, etwa contact_request oder schedule. Der Typ taucht in der
Wertliste im Cockpit wieder auf; dort legen Sie fest, was eine Anfrage dieser Art wert ist.
Zwei Felder darf das Formular zusätzlich markieren. Sie werden beim Empfang gehasht:
<input type="email" data-relay-email><input type="tel" data-relay-phone>Ein Feld mit type="email" oder type="tel" wird auch ohne Markierung erkannt.
Anfragen vom Server melden
Abschnitt betitelt „Anfragen vom Server melden“Das Snippet allein verliert Anfragen: an Blockern, an fehlender Einwilligung und an jedem Formular, das in einem fremden Rahmen steckt. Wer beides einsetzt, hat die Anzahl so hart wie eine Bestellung.
Das Snippet legt dafür zwei versteckte Felder in jedes ausgezeichnete Formular:
<input type="hidden" name="relay_event_id" value="…"><input type="hidden" name="relay_visitor_id" value="…">Schicken Sie beide unverändert an /v1/lead weiter.
relay_event_id verhindert die Doppelzählung: Browser und Server melden unter derselben Kennung,
daraus wird eine Anfrage statt zweier. Kommt nur eine der beiden Meldungen an, ist die Anfrage
trotzdem gezählt.
relay_visitor_id knüpft die Anfrage an die Besuchskette. Ohne sie ist sie gezählt, aber keinem
Kanal zuzuordnen — der Server kennt keine Cookies.
TS=$(date +%s)BODY='{"event_id":"'"$RELAY_EVENT_ID"'", "name":"contact_request", "page_url":"https://ihre-domain.de/kontakt", "form_id":"kontakt-unten", "visitor_id":"'"$RELAY_VISITOR_ID"'", "identity":{"email":"interessent@example.de","phone":"+4917012345"}, "consent":{"ad_storage":true,"analytics_storage":true, "ad_user_data":true,"ad_personalization":true}}'
SIG=$(printf '%s.%s' "$TS" "$BODY" | openssl dgst -sha256 -hmac "$SHOP_SECRET" -hex | cut -d' ' -f2)
curl -X POST https://ingest.evoar-relay.app/v1/lead \ -H 'content-type: application/json' \ -H "X-Relay-Shop: ihre-domain.de" \ -H "X-Relay-Timestamp: $TS" \ -H "X-Relay-Signature: $SIG" \ -d "$BODY"Die Antwort nennt created. Steht dort false, lag dieselbe event_id schon vor: Ein
Wiederholungsversuch nach einer Zeitüberschreitung zählt nicht doppelt.
Erlaubt sind generate_lead, contact_request, call_click, schedule, file_download,
email_sign_up, sms_sign_up, account_sign_up und start_trial.
Formulare in einem fremden Rahmen
Abschnitt betitelt „Formulare in einem fremden Rahmen“Typeform, Calendly, HubSpot und ähnliche Werkzeuge stellen ihr Formular in ein eigenes Fenster. Dort sieht das Snippet das Absenden nicht. Die Bestätigungsseite danach sieht es:
<meta name="relay-lead" content="termin">Zählt einmal je Besuch und Seite. Ein Neuladen der Bestätigungsseite erzeugt keine zweite Anfrage.
Bestellungen serverseitig melden
Abschnitt betitelt „Bestellungen serverseitig melden“Für Systeme ohne eigene Webhook-Anbindung gibt es /v1/o, signiert wie oben.
TS=$(date +%s)BODY='{"event_id":"order-4711","name":"purchase","order_id":"4711", "currency":"EUR","total_gross_cents":11900, "identity":{"email":"kundin@example.de","external_id":"c-99"}, "consent":{"ad_storage":true,"analytics_storage":true, "ad_user_data":true,"ad_personalization":true}}'
SIG=$(printf '%s.%s' "$TS" "$BODY" | openssl dgst -sha256 -hmac "$SHOP_SECRET" -hex | cut -d' ' -f2)
curl -X POST https://ingest.evoar-relay.app/v1/o \ -H 'content-type: application/json' \ -H "X-Relay-Shop: ihre-domain.de" \ -H "X-Relay-Timestamp: $TS" \ -H "X-Relay-Signature: $SIG" \ -d "$BODY"Geben Sie visitor_id mit, wenn Ihr Frontend sie kennt — nur dann hängt der Kauf an der Reise,
die ihn erzeugt hat.