{"id":10129,"date":"2026-09-20T13:14:00","date_gmt":"2026-09-20T11:14:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10129"},"modified":"2026-10-26T13:33:51","modified_gmt":"2026-10-26T12:33:51","slug":"tutorial-die-tiktok-events-api-fur-onlineshops-implementieren","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/","title":{"rendered":"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren"},"content":{"rendered":"<p>Ein Browser-Pixel kann K\u00e4ufe verpassen, etwa durch Blocker oder eine vorzeitig geschlossene Best\u00e4tigungsseite. Die TikTok Events API erg\u00e4nzt einen zweiten Meldeweg aus dem Shop-Backend. Das kann die technische Abdeckung verbessern, garantiert aber weder vollst\u00e4ndige Erfassung noch die Zuordnung jedes Kaufs zu einer Anzeige.<\/p>\n<p>Ein Pixel ist Messcode im Browser. Das Backend ist die auf dem Shop-Server laufende Software. Eine API ist eine Schnittstelle zum Datenaustausch zwischen Programmen; ein Access Token ist der daf\u00fcr verwendete Zugangsnachweis. Deduplizierung erkennt wiederholte Meldungen desselben Ereignisses. Attribution ordnet einen Kauf nach festgelegten Regeln einer Anzeige zu.<\/p>\n<p>Die folgende Anleitung verbindet beide Wege \u00fcber dieselbe Ereigniskennung. Voraussetzung sind ein TikTok-Pixel, ein nur serverseitig gespeichertes Access Token, eine angebundene Einwilligungsverwaltung und ein verl\u00e4ssliches Kaufereignis im Backend. Die Beispiele zeigen die Daten\u00fcbergabe; Shop-Anbindung, Versandwarteschlange und Fehlerbehandlung bleiben eigene Implementierungsschritte.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/quality-10129-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Ein best\u00e4tigter Kauf wird \u00fcber Pixel und Events API mit derselben Kennung, demselben Eventnamen und Pixel-Code gemeldet. Die Deduplizierung gilt innerhalb von 48 Stunden.\"><figcaption>Zwei Meldewege ben\u00f6tigen \u00fcbereinstimmende Kaufdaten und aktuelle Einwilligung; Zustellung belegt noch keine Zuordnung zu einer Anzeige.<\/figcaption><\/figure>\n<h2>Schritt 1: Einen best\u00e4tigten Kauf eindeutig kennzeichnen<\/h2>\n<p>Die <code>event_id<\/code> entsteht einmal im Backend und bleibt f\u00fcr Browsermeldung, Servermeldung und Wiederholungsversuche gleich. Beispielsweise bezeichnet <code>purchase-10432<\/code> genau einen best\u00e4tigten Kauf. Eine Bestellnummer darf daf\u00fcr keine personenbezogenen Angaben enthalten und muss innerhalb der Datenquelle eindeutig sein. F\u00fcr wiederkehrende Zahlungen ist eine eigene Kennung je Zahlung erforderlich.<\/p>\n<p>TikTok dedupliziert anhand von Pixel-Code, Ereignisname und <code>event_id<\/code> innerhalb eines Zeitfensters von 48 Stunden. Ein Neuladen nach Ablauf dieses Fensters ist damit nicht dauerhaft abgesichert. Der Shop muss wiederholte Kaufmeldungen zus\u00e4tzlich begrenzen, etwa \u00fcber einen Versandstatus je Ereignis. Der urspr\u00fcngliche Kaufzeitpunkt bleibt auch bei einer erneuten Zustellung erhalten.<\/p>\n<h2>Schritt 2: Dasselbe Kaufobjekt an das Pixel \u00fcbergeben<\/h2>\n<p>Das Backend stellt der Best\u00e4tigungsseite ausgew\u00e4hlte Felder des best\u00e4tigten Kaufs in einem Format, das sich sicher in die Seite einbetten l\u00e4sst, bereit: <code>event_id<\/code>, <code>contents<\/code>, <code>value<\/code> und <code>currency<\/code>. Preis, W\u00e4hrung und Warenkorb stammen aus diesem Datensatz, nicht aus frei ver\u00e4nderbaren URL-Parametern. Das folgende Beispiel setzt ein bereits initialisiertes, durch die Einwilligungsverwaltung gesteuertes Pixel voraus:<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"javascript\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">JavaScript<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-javascript\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">function<\/span> <span class=\"cbb-function\">sendTikTokPurchase<\/span>(purchase, advertisingConsent) {\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">if<\/span> (advertisingConsent !== <span class=\"cbb-constant\">true<\/span>) <span class=\"cbb-keyword\">return<\/span> <span class=\"cbb-constant\">false<\/span>;\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">if<\/span> (!purchase.event_id || !window.ttq) <span class=\"cbb-keyword\">return<\/span> <span class=\"cbb-constant\">false<\/span>;\n<\/span><span class=\"cbb-line\">  window.ttq.<span class=\"cbb-function\">track<\/span>(<span class=\"cbb-string\">'Purchase'<\/span>, {\n<\/span><span class=\"cbb-line\">    content_type: <span class=\"cbb-string\">'product'<\/span>,\n<\/span><span class=\"cbb-line\">    contents: purchase.contents,\n<\/span><span class=\"cbb-line\">    value: purchase.value,\n<\/span><span class=\"cbb-line\">    currency: purchase.currency\n<\/span><span class=\"cbb-line\">  }, { event_id: purchase.event_id });\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">return<\/span> <span class=\"cbb-constant\">true<\/span>;\n<\/span><span class=\"cbb-line\">}<\/span><\/code><\/pre><\/figure>\n<p>Der Aufruf erfolgt erst nach best\u00e4tigtem Kauf und aktuell erteilter Werbe-Einwilligung. <code>true<\/code> als R\u00fcckgabewert bedeutet lediglich, dass <code>ttq.track<\/code> aufgerufen wurde; eine Zustellbest\u00e4tigung ist damit nicht verbunden. Die Initialisierung des Pixels und andere automatische Events ben\u00f6tigen dieselbe Einwilligungssteuerung.<\/p>\n<p>Neue Implementierungen verwenden auf beiden Wegen <code>Purchase<\/code>. Seit Mai 2025 ordnet TikTok den fr\u00fcheren Namen <code>CompletePayment<\/code> automatisch <code>Purchase<\/code> zu. Der alte Name bleibt unterst\u00fctzt. Unterschiedliche Schreibweisen ohne dokumentierte Zuordnung sind weiterhin eine Fehlerquelle.<\/p>\n<h2>Schritt 3: Klick-ID und Browser-Kontext mit Einwilligung sichern<\/h2>\n<p><code>ttclid<\/code> kann in der URL einer Anzeigen-Landingpage stehen; <code>_ttp<\/code> ist ein Cookie des Pixels. Diese Werte sind nicht ausschlie\u00dflich im Browser sichtbar: Der Shop-Server kann URL-Parameter und mitgesendete Cookies ebenfalls lesen. Ein Cookie kann beim ersten Seitenaufruf allerdings noch fehlen. Nicht vorhandene Kennungen bleiben ausgelassen; erfundene Ersatzwerte verschlechtern die Datenqualit\u00e4t.<\/p>\n<p>Eine einfache clientseitige Variante speichert eine vorhandene Klick-ID erst nach Freigabe. Die Funktion wird von der Einwilligungsverwaltung sowohl bei der ersten Entscheidung als auch bei sp\u00e4teren \u00c4nderungen aufgerufen:<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"javascript\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">JavaScript<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-javascript\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">function<\/span> <span class=\"cbb-function\">updateTikTokClickCookie<\/span>(advertisingConsent) {\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">const<\/span> attributes = <span class=\"cbb-string\">';path=\/;Secure;SameSite=Lax'<\/span>;\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">if<\/span> (advertisingConsent !== <span class=\"cbb-constant\">true<\/span>) {\n<\/span><span class=\"cbb-line\">    document.cookie = <span class=\"cbb-string\">'shop_ttclid=;max-age=0'<\/span> + attributes;\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">return<\/span>;\n<\/span><span class=\"cbb-line\">  }\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">const<\/span> clickId = <span class=\"cbb-keyword\">new<\/span> <span class=\"cbb-function\">URLSearchParams<\/span>(location.search).<span class=\"cbb-keyword\">get<\/span>(<span class=\"cbb-string\">'ttclid'<\/span>);\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-comment\">\/\/ Local size limit, not a TikTok identifier-format specification.<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">if<\/span> (!clickId || clickId.length &gt; <span class=\"cbb-number\">1024<\/span>) <span class=\"cbb-keyword\">return<\/span>;\n<\/span><span class=\"cbb-line\">  document.cookie = <span class=\"cbb-string\">'shop_ttclid='<\/span> + <span class=\"cbb-function\">encodeURIComponent<\/span>(clickId) +\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">';max-age=2592000'<\/span> + attributes;\n<\/span><span class=\"cbb-line\">}<\/span><\/code><\/pre><\/figure>\n<p>Die 30 Tage sind eine beispielhafte lokale Aufbewahrungsentscheidung, keine TikTok-Vorgabe und keine Zusicherung der Browserlaufzeit. Ein sp\u00e4terer Seitenaufruf ohne <code>ttclid<\/code> verl\u00e4ngert das Cookie nicht. Bei Ablehnung oder Widerruf wird das hier erzeugte Cookie gel\u00f6scht. Bereits serverseitig gespeicherte Kennungen und geplante Events ben\u00f6tigen eine entsprechende Widerrufsbehandlung; andere Cookie-Pfade oder Domains werden von dieser L\u00f6schung nicht erfasst.<\/p>\n<p>Beim Abschluss der Bestellung kann der Shop vorhandene Kennungen dem Kauf zuordnen. F\u00fcr <code>ttp<\/code> wird der Wert von <code>_ttp<\/code> verwendet. IP-Adresse und User Agent (die vom Browser gemeldete Softwarebeschreibung) m\u00fcssen aus dem urspr\u00fcnglichen Besuch stammen, nicht aus dem sp\u00e4teren API-Aufruf. Ein Reverse Proxy nimmt Anfragen vor dem Shop-Server entgegen und leitet diese weiter. Der Shop darf weitergereichte IP-Adressen nur von korrekt eingerichteten, vertrauensw\u00fcrdigen Zwischenservern \u00fcbernehmen.<\/p>\n<h2>Schritt 4: Daten f\u00fcr den Serverversand vorbereiten<\/h2>\n<p>Das Ziel ist <code>POST https:\/\/business-api.tiktok.com\/open_api\/v1.3\/event\/track\/<\/code> mit den Headern <code>Access-Token<\/code> und <code>Content-Type: application\/json<\/code>. <code>event_source_id<\/code> enth\u00e4lt denselben Pixel-Code wie die Browserintegration. Der folgende Python-Baustein erzeugt nur die Nutzlast und f\u00fchrt keinen Netzwerkaufruf aus:<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"python\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Python<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-python\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> hashlib\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> re\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">def<\/span> <span class=\"cbb-function\">sha256<\/span>(value):\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">return<\/span> hashlib.<span class=\"cbb-function\">sha256<\/span>(value.<span class=\"cbb-function\">encode<\/span>(<span class=\"cbb-string\">'utf-8'<\/span>)).<span class=\"cbb-function\">hexdigest<\/span>()\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">def<\/span> <span class=\"cbb-function\">build_payload<\/span>(pixel_code, order, advertising_consent,\n<\/span><span class=\"cbb-line\">                  email, phone_e164=<span class=\"cbb-constant\">None<\/span>):\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> advertising_consent <span class=\"cbb-keyword\">is<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-constant\">True<\/span>:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">return<\/span> <span class=\"cbb-constant\">None<\/span>\n<\/span><span class=\"cbb-line\">    email = email.<span class=\"cbb-function\">strip<\/span>().<span class=\"cbb-function\">lower<\/span>()\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> email:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">'Missing email for this example'<\/span>)\n<\/span><span class=\"cbb-line\">    user = {<span class=\"cbb-string\">'email'<\/span>: <span class=\"cbb-function\">sha256<\/span>(email)}\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> phone_e164 <span class=\"cbb-keyword\">is<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-constant\">None<\/span>:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-comment\"># Input already parsed and validated for its country.<\/span>\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> re.<span class=\"cbb-function\">fullmatch<\/span>(<span class=\"cbb-string\">r'\\+&#91;1-9&#93;&#91;0-9&#93;{1,14}'<\/span>, phone_e164):\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">'Expected international phone number with +'<\/span>)\n<\/span><span class=\"cbb-line\">        user&#91;<span class=\"cbb-string\">'phone'<\/span>&#93; = <span class=\"cbb-function\">sha256<\/span>(phone_e164)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">return<\/span> {\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-string\">'event_source'<\/span>: <span class=\"cbb-string\">'web'<\/span>,\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-string\">'event_source_id'<\/span>: pixel_code,\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-string\">'data'<\/span>: &#91;{\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-string\">'event'<\/span>: <span class=\"cbb-string\">'Purchase'<\/span>,\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-string\">'event_time'<\/span>: order&#91;<span class=\"cbb-string\">'confirmed_at_unix'<\/span>&#93;,\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-string\">'event_id'<\/span>: order&#91;<span class=\"cbb-string\">'event_id'<\/span>&#93;,\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-string\">'user'<\/span>: user,\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-string\">'properties'<\/span>: {\n<\/span><span class=\"cbb-line\">                <span class=\"cbb-string\">'content_type'<\/span>: <span class=\"cbb-string\">'product'<\/span>,\n<\/span><span class=\"cbb-line\">                <span class=\"cbb-string\">'contents'<\/span>: order&#91;<span class=\"cbb-string\">'contents'<\/span>&#93;,\n<\/span><span class=\"cbb-line\">                <span class=\"cbb-string\">'currency'<\/span>: order&#91;<span class=\"cbb-string\">'currency'<\/span>&#93;,\n<\/span><span class=\"cbb-line\">                <span class=\"cbb-string\">'value'<\/span>: order&#91;<span class=\"cbb-string\">'value'<\/span>&#93;\n<\/span><span class=\"cbb-line\">            },\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-string\">'page'<\/span>: {<span class=\"cbb-string\">'url'<\/span>: order&#91;<span class=\"cbb-string\">'confirmation_url'<\/span>&#93;}\n<\/span><span class=\"cbb-line\">        }&#93;\n<\/span><span class=\"cbb-line\">    }<\/span><\/code><\/pre><\/figure>\n<p><code>order<\/code> bezeichnet einen bereits validierten Backend-Datensatz: best\u00e4tigter Kauf, stabil gespeicherte Ereigniskennung, Kaufzeitpunkt als ganze Sekunden seit dem 1. Januar 1970 UTC (Unix-Zeit), passender W\u00e4hrungscode wie EUR, numerischer Wert und Produktliste. Die Best\u00e4tigungs-URL muss zur Shop-Domain geh\u00f6ren und darf keine E-Mail-Adresse, Zugangstoken oder andere vertrauliche Parameter enthalten. Die Freigabe stammt aus dem vertrauensw\u00fcrdigen Consent-Datensatz einschlie\u00dflich bekannter Widerrufe; ein Browserfeld allein gen\u00fcgt daf\u00fcr nicht.<\/p>\n<p>Das Beispiel entfernt Leerraum am Anfang und Ende der E-Mail-Adresse und schreibt Buchstaben klein. SHA-256 berechnet anschlie\u00dfend aus diesem Text einen Hashwert fester L\u00e4nge. Eine optionale Telefonnummer muss bereits fachgerecht normalisiert vorliegen, beispielsweise <code>+12133734253<\/code>; das Pluszeichen bleibt beim Hashen erhalten. Die Formatregel (regul\u00e4rer Ausdruck, kurz Regex) pr\u00fcft lediglich die Grundform, nicht die tats\u00e4chliche G\u00fcltigkeit einer Telefonnummer. Vor diesem Baustein muss die Nummer anhand der Regeln des zugeh\u00f6rigen Landes eingelesen und gepr\u00fcft werden. Fehlende Telefonnummern werden ausgelassen. E-Mail ist nur f\u00fcr dieses vereinfachte Beispiel Pflicht, nicht die einzige von TikTok unterst\u00fctzte Matching-M\u00f6glichkeit.<\/p>\n<p>Hashing macht Daten nicht anonym. Zus\u00e4tzliche unterst\u00fctzte Felder ben\u00f6tigen eigene Regeln: <code>external_id<\/code> wird gehasht, w\u00e4hrend <code>ttclid<\/code>, <code>ttp<\/code>, IP-Adresse und User Agent ungehasht \u00fcbertragen werden. Rohdaten und Hashes geh\u00f6ren nicht in allgemeine Debug-Logs. F\u00fcr die Auftragsabwicklung erforderliche Kontaktdaten unterliegen unabh\u00e4ngig davon dem jeweiligen Aufbewahrungskonzept.<\/p>\n<p>Der Versand erfolgt m\u00f6glichst zeitnah nach dem best\u00e4tigten Kauf. Eine Warteschlange h\u00e4lt urspr\u00fcngliche ID und Ereigniszeit unver\u00e4ndert, pr\u00fcft Einwilligung vor der Zustellung erneut und begrenzt Wiederholungen. Der HTTP-Status bezeichnet den Antwortstatus der Webanfrage. JSON enth\u00e4lt die strukturierten Ergebnisdaten. Beide Angaben m\u00fcssen gemeinsam ausgewertet werden: <code>code: 0<\/code> best\u00e4tigt API-Erfolg, aber weder Personen-Matching noch Anzeigenattribution. Ein Timeout bedeutet, dass innerhalb der Wartefrist keine Antwort eintraf. Das kann auch nach erfolgreicher Annahme auftreten und braucht den Status \u201eErgebnis unbekannt\u201c statt einer neuen Ereigniskennung.<\/p>\n<h2>Schritt 5: Zustellung, doppelte Meldungen und Anzeigenzuordnung getrennt pr\u00fcfen<\/h2>\n<p>Test Events und der dort bereitgestellte <code>test_event_code<\/code> dienen zur Pr\u00fcfung der gew\u00e4hlten Integration. Testdaten werden vom Produktionsbetrieb getrennt; vor dem echten Versand muss die Testkonfiguration entfernt sein. Sichtbare Hash-Felder belegen keine erfolgreiche Zuordnung zu einer Person. Eine kontrollierte Testbestellung pr\u00fcft beide Kan\u00e4le, denselben Pixel-Code, dieselbe Ereigniskennung und die \u00fcbereinstimmenden Kaufwerte.<\/p>\n<p>F\u00fcr die laufende Kontrolle sind die Deduplizierungsdetails und Diagnosen im Events Manager entscheidend. Browser-, Server- und gemeinsame Events d\u00fcrfen nicht ohne Pr\u00fcfung der jeweiligen Metrikdefinition addiert werden. Gleich gro\u00dfe Summen allein beweisen keinen Fehler: Ohne \u00dcberschneidung gibt es auch keine doppelten Meldungen. Au\u00dferdem k\u00f6nnen Anzeigeverz\u00f6gerungen, Zeitzonen und Filter den Vergleich ver\u00e4ndern.<\/p>\n<p>Ein Abgleich mit dem Shop betrachtet dieselben Kaufdefinitionen und Zeitr\u00e4ume sowie die zur \u00dcbermittlung freigegebenen K\u00e4ufe. \u201eTotal Events\u201c umfasst Ereignisse mit und ohne Anzeigenzuordnung. Die im Ads Manager gez\u00e4hlten Anzeigenk\u00e4ufe h\u00e4ngen zus\u00e4tzlich vom Personenabgleich und vom Attributionsfenster ab: dem zul\u00e4ssigen Zeitraum zwischen Anzeigenkontakt und Kauf. Ein angenommenes Event ist daher kein garantierter Anzeigenkauf.<\/p>\n<div class=\"lw-faq\"><h2>Fragen und Antworten<\/h2>\n<h3>Warum bleibt trotz Events API eine Differenz zu den Bestellungen?<\/h3>\n<p>Einwilligung, fehlende Zuordnung, Meldeverz\u00f6gerungen und unterschiedliche Z\u00e4hlweisen k\u00f6nnen Differenzen erkl\u00e4ren. Hinzu kommen technische Fehler. Ein eigenes Zustellprotokoll unterscheidet mindestens: nicht freigegeben, freigegeben und ausstehend, abgewiesen, angenommen sowie Ergebnis unbekannt. Geeignet sind interne Ereigniskennung, Versuchszahl, Fehlercode und Request-ID; vollst\u00e4ndige Nutzlasten mit Kundendaten sind daf\u00fcr normalerweise nicht erforderlich.<\/p>\n<h3>H\u00e4lt shop_ttclid in jedem Browser 30 Tage?<\/h3>\n<p>Nein. Safari kann skriptbeschreibbaren Speicher nach sieben Tagen Safari-Nutzung ohne Interaktion mit der Website l\u00f6schen; f\u00fcr bestimmte F\u00e4lle mit Tracking-Kennungen in Links gelten k\u00fcrzere Grenzen. Auch serverseitig gesetzte Cookies sind keine allgemeine Umgehung: WebKit begrenzt Cookies, wenn ein erkannter Fremddienst \u00fcber einen DNS-Alias (CNAME) oder eine scheinbar zur Website geh\u00f6rende IP-Adresse verborgen wird. Eine l\u00e4ngere technische Speicherung ersetzt weder Einwilligung noch ein passendes Attributionsfenster.<\/p>\n<h3>M\u00fcssen Wert und Warenkorb in beiden Meldungen \u00fcbereinstimmen?<\/h3>\n<p>Ja. Beide Meldungen beschreiben denselben Kauf. Einheitliche Regeln f\u00fcr Steuern, Versand, W\u00e4hrung und Produkte verhindern widerspr\u00fcchliche Ums\u00e4tze. TikTok kann fehlende Angaben fr\u00fcher eintreffender Meldungen erg\u00e4nzen; widerspr\u00fcchliche Werte d\u00fcrfen deshalb nicht auf eine vermeintliche Priorit\u00e4t des Servers vertrauen.<\/p><\/div>\n<div class=\"lw-quellen\"><h2>Quellen<\/h2><ul><li><a href=\"https:\/\/business-api.tiktok.com\/gateway\/docs\/index?doc_id=1771100865818625&amp;identify_key=c0138ffadd90a955c1f0670a56fe348d1d40680b3c89461e09f78ed26785164b&amp;language=ENGLISH\" target=\"_blank\" rel=\"noopener noreferrer\">TikTok Events API 2.0: Web-Ereignisse<\/a><\/li><li><a href=\"https:\/\/business-api.tiktok.com\/gateway\/docs\/index?doc_id=1771100779668482&amp;identify_key=c0138ffadd90a955c1f0670a56fe348d1d40680b3c89461e09f78ed26785164b&amp;language=ENGLISH\" target=\"_blank\" rel=\"noopener noreferrer\">TikTok Events API 2.0<\/a><\/li><li><a href=\"https:\/\/ads.tiktok.com\/resources\/help\/article\/how-to-adopt-tiktoks-updated-standard-events?lang=en\" target=\"_blank\" rel=\"noopener noreferrer\">TikTok: Aktualisierte Standardereignisse<\/a><\/li><li><a href=\"https:\/\/ads.tiktok.com\/resources\/help\/article\/event-deduplication?lang=en\" target=\"_blank\" rel=\"noopener noreferrer\">TikTok: Erkennung doppelter Ereignisse<\/a><\/li><li><a href=\"https:\/\/ads.tiktok.com\/resources\/help\/article\/tiktok-adobe-eapi-implementation-guide?lang=en\" target=\"_blank\" rel=\"noopener noreferrer\">TikTok: Adobe-Anleitung zur Einbindung<\/a><\/li><li><a href=\"https:\/\/ads.tiktok.com\/resources\/help\/article\/tiktok-tealium-eapi-implementation-guide?lang=en\" target=\"_blank\" rel=\"noopener noreferrer\">TikTok: Tealium-Testereignisse<\/a><\/li><li><a href=\"https:\/\/ads.tiktok.com\/resources\/help\/article\/tiktok-events-manager-monitor-and-diagnose?lang=en\" target=\"_blank\" rel=\"noopener noreferrer\">TikTok: Kontrolle im Events Manager<\/a><\/li><li><a href=\"https:\/\/webkit.org\/tracking-prevention\/\" target=\"_blank\" rel=\"noopener noreferrer\">WebKit: Tracking-Schutz<\/a><\/li><\/ul><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Pixel und Events API k\u00f6nnen denselben Kauf melden. Die Erkennung doppelter Meldungen ben\u00f6tigt gleichen Pixel-Code, Ereignisnamen und Ereignis-ID innerhalb von 48 Stunden. Einwilligung und Anzeigenzuordnung werden getrennt gepr\u00fcft.<\/p>\n","protected":false},"author":1,"featured_media":13834,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129],"tags":[92023,92026,92029,92032,92235],"class_list":["post-10129","post","type-post","status-publish","format-standard","hentry","category-tutorials-de-digital-marketing-de","tag-conversion-tracking-de","tag-marketing-cyfrowy-pl-de","tag-first-party-data-de","tag-tracking-de","tag-tutorial-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Zweikanaliges TikTok-Tracking: Browser-Pixel und Events API senden denselben Kauf, \u00fcber eine gemeinsame event_id verbunden, damit er einmal z\u00e4hlt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Zweikanaliges TikTok-Tracking: Browser-Pixel und Events API senden denselben Kauf, \u00fcber eine gemeinsame event_id verbunden, damit er einmal z\u00e4hlt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-20T11:14:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T12:33:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren\",\"datePublished\":\"2026-09-20T11:14:00+00:00\",\"dateModified\":\"2026-10-26T12:33:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/\"},\"wordCount\":1354,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png\",\"keywords\":[\"Conversion Tracking\",\"Digital Marketing\",\"First-Party Data\",\"Tracking\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/\",\"name\":\"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png\",\"datePublished\":\"2026-09-20T11:14:00+00:00\",\"dateModified\":\"2026-10-26T12:33:51+00:00\",\"description\":\"Zweikanaliges TikTok-Tracking: Browser-Pixel und Events API senden denselben Kauf, \u00fcber eine gemeinsame event_id verbunden, damit er einmal z\u00e4hlt.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-marketing-de\\\/tutorials-de-digital-marketing-de\\\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren | Lukas Wojcik","description":"Zweikanaliges TikTok-Tracking: Browser-Pixel und Events API senden denselben Kauf, \u00fcber eine gemeinsame event_id verbunden, damit er einmal z\u00e4hlt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren | Lukas Wojcik","og_description":"Zweikanaliges TikTok-Tracking: Browser-Pixel und Events API senden denselben Kauf, \u00fcber eine gemeinsame event_id verbunden, damit er einmal z\u00e4hlt.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-20T11:14:00+00:00","article_modified_time":"2026-10-26T12:33:51+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren","datePublished":"2026-09-20T11:14:00+00:00","dateModified":"2026-10-26T12:33:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/"},"wordCount":1354,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png","keywords":["Conversion Tracking","Digital Marketing","First-Party Data","Tracking","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/","name":"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png","datePublished":"2026-09-20T11:14:00+00:00","dateModified":"2026-10-26T12:33:51+00:00","description":"Zweikanaliges TikTok-Tracking: Browser-Pixel und Events API senden denselben Kauf, \u00fcber eine gemeinsame event_id verbunden, damit er einmal z\u00e4hlt.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10129-tutorial-die-tiktok-events-api-fur-o-g.png","width":1200,"height":630,"caption":"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-marketing-de\/tutorials-de-digital-marketing-de\/tutorial-die-tiktok-events-api-fur-onlineshops-implementieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Die TikTok Events API f\u00fcr Onlineshops implementieren"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10129"}],"version-history":[{"count":8,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10129\/revisions"}],"predecessor-version":[{"id":27428,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10129\/revisions\/27428"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13834"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}