Support icon
Exzellenter Support auf Deutsch
inkl. Zoom-Live-Trainings Mo. - Fr.

KlickTipp API – Developer Guide & Best Practices

Dieser Developer Guide richtet sich an Dich – Tech-affinen Marketingprofi, der KlickTipp smart in bestehende Systeme integrieren möchte. Du findest hier klare, umsetzbare Informationen zur Authentifizierung, den wichtigsten Endpunkten und zusätzlich noch Best Practices aus Tools wie Make, n8n und Zapier.

Dokumentation für Entwickler

Basis URL

Die Basis URL für die KlickTipp API ist:

https://api.klicktipp.com
Kopieren

Authentifizierung: So integrierst Du KlickTipp sicher

Für die Authentifizierung bei KlickTipp benötigst u eine der folgenden Authentifizierungsverfahren. Du bekommst hierbei jeweils einen Key, der bei jedem Request mitgegeben werden muss.

Developer Key + Customer Key (Empfohlen für produktive Integrationen)

  • Sicher & stabil: Keine Session-Limits
  • Developer Key bleibt bei dir als Anbieter
  • Customer Key wird vom Endnutzer generiert und gespeichert
  • Login-Endpunkt: /account/login
  • Vorteil: Gültig auch nach Kontowiederherstellung
  • Session-basiert → läuft bei Logout/Timeout ab
  • Nicht produktiv einsetzen!
  • Gut für manuelle Workflows oder erste Tests
ActionDescriptionURLMethodInput parameter in body
Login to APILogs into the API and retrieves session details for further interactionsaccount/loginPOSTusername, password
Logout from APILogs out of the API and ends the sessionaccount/logoutPOST

API-Token (Nur für Listbuilding)

  • Ideal für einfache Newsletter-Anmeldungen
  • Zugriff auf 3 schlanke Endpunkte: signin, signout, signoff
  • Kein Zugriff auf alle API-Funktionen
ActionDescriptionURLMethodInput parameter in body
Add Contact via API KeyCreates or updates a contact and associates the tag linked to the API key/subscriber/signinPOSTapikey, email,
fields, smsnumber
Remove Contact via API KeyRemoves the tag of a contact associated with the API key/subscriber/signoutPOSTapikey, email
Unsubscribe Contact via API KeyUnsubscribes a contact via the API key and prevents further communication/subscriber/signoffPOSTapikey, email

Eintragung von Kontakten

Die Funktion → Add or Update Contact  ist eine der Kernfunktionen von KlickTipp. Diese geht davon aus, dass ein neuer Kontakt über ein Formular eingetragen wird. Sollte der Kontakt bereits vorhanden sein, wird diese aktualisiert.

In folgendem wird erläutert, wie diese zu implementieren ist.

Relevante Endpunkte

Die Endpunkte → /list, /tag und /field  sind relevant, um Daten für Add or Update Contact zu erhalten.

ActionDescriptionURLMethodInput parameter in body
Add or Update ContactAdds a new contact. If a contact with the same email already exists, it will be updated./subscriberPOSTemail, smsnumber, listid, tagid, fields
List Opt-in ProcessesLists the IDs and names of all opt-in processes/listGET
List TagsLists the IDs and names of all tags/tagGET
List Data FieldsLists the IDs and names of all data fields/fieldGET

Add or Update Contact

Request body

  • email string (empfohlen)
    • Für die Eingabe sind E-Mail-Adressen mit @-Zeichen erforderlich.
    • email oder smsnumber muss vorhanden sein
    • email und smsnumber dürfen nur einem Kontakt zugewiesen sein
  • smsnumber string (empfohlen)→ email oder smsnumber muss vorhanden sein
    • Für die Eingabe sind Telefonnummer in dem Format 004912345678 oder +4912345678 erlaubt.
    • email und smsnumber dürfen nur einem Kontakt zugewiesen sein
  • listid string (empfohlen)
    • Für die Eingabe muss eine gültige Opt-In Prozess ID verwendet werden.
    • Verknüpft mit dem Opt-In Prozess. Wenn keine Listen-ID angegeben wird, wird ein Vordefinierter Double-Opt-In-Prozess verwendet, der eine E-Mail an den Kontakt auslöst
    • Nutze /list-Endpunkt zur Abfrage verfügbarer Opt-In Prozesse
  • tagid string (optional)
    • Für die Eingabe muss eine gültige Tag ID verwendet werden.
    • Verwende Tags für Segmentierung & Trigger
    • Nutze /tag-Endpunkt zur Abfrage verfügbarer Tags
  • fields (optional)
    • Für die Eingabe gelten die jeweiligen Formate für den Datentyp, welche in den kommenden Abschnitten aufgelistet werden.
    • Nutze global fields (z. B. fieldFirstName) oder custom fields (z. B. field213729)
    • Lade Felder über /field zur dynamischen Anzeige

Beispiel JSON Body

{
  "email": "rene.ludwigs@klick-tipp.team",
  "smsnumber": "00491631737743",
  "listid": "353443",
  "tagid": "12042204",
  "fields": {
    "fieldFirstName": "René",
    "fieldLastName": "Ludwigs",
    "fieldCompanyName": "KlickTipp Limited", 
    "fieldStreet1": "Bag End, 1",
    "fieldStreet2": "",
    "fieldCity": "Shire",
    "fieldState": "Shire",
    "fieldZip": "12345",
    "fieldCountry": "Hobbiton",
    "fieldPrivatePhone": "00491631737741",
    "fieldMobilePhone": "00491631737742",
    "fieldPhone": "00491631737744",
    "fieldFax": "0049163173775",
    "fieldWebsite": "https://awesome-website.com",
    "fieldBirthday": "495986091",
    "fieldLeadValue": "1234"
    "field213729": "lorem ipsum",
    "field213736": "lorem ipsum",
  }
Kopieren

Beispiel JSON Response

{
    "id": "162721328",
    "listid": "364353",
    "optin": "2025-04-22T08:26:37.000Z",
    "optin_ip": "0.0.0.0 - By API Request",
    "email": "rene.ludwigs@klick-tipp.team",
    "status": "Opt-In Pending",
    "bounce": "Not Bounced",
    "date": "",
    "ip": "0.0.0.0 - By API Request",
    "unsubscription": "",
    "unsubscription_ip": "0.0.0.0",
    "referrer": "",
    "sms_phone": "00491631737743",
    "sms_status": "Subscribed",
    "sms_bounce": "Not Bounced",
    "sms_date": "2025-04-22T08:25:55.000Z",
    "sms_unsubscription": "",
    "sms_referrer": "",
    "fieldFirstName": "René",
    "fieldLastName": "Ludwigs",
    "fieldCompanyName": "KlickTipp Limited", 
    "fieldStreet1": "Bag End, 1",
    "fieldStreet2": "",
    "fieldCity": "Shire",
    "fieldState": "Shire",
    "fieldZip": "12345",
    "fieldCountry": "Hobbiton",
    "fieldPrivatePhone": "00491631737741",
    "fieldMobilePhone": "00491631737742",
    "fieldPhone": "00491631737744",
    "fieldFax": "0049163173775",
    "fieldWebsite": "https://awesome-website.com",
    "fieldBirthday": "495986091",
    "fieldLeadValue": "1234"
    "field213729": "lorem ipsum",
    "field213736": "lorem ipsum",
    "tags": [
        "12688017"
     ],
    "manual_tags": {
         "12688017": "1745303197"
     }
 }
Kopieren

Weitere Datenfelder und Formate

FeldtypInhalt
ZeileText in einer Zeile
AbsatzText mit Absätzen
E-MailNur E-Mail-Adressen, @-Zeichen erforderlich
ZahlGanze Zahlen ohne Komma, Vorzeichen oder sonstigen Inhalt
DezimalzahlZahlen mit Nachkommastellen
URLWebadresse muss mit http:// bzw. https:// beginnen
UhrzeitAnzeige im Format HH:MM

Über die KlickTipp API nur im Format Unix-Timestamp möglich.
Für die Uhrzeit erwartet die API einen Unix-Zeitstempel in Sekunden seit Mitternacht (00:00 Uhr) des 01.01.1970.

Beispiel:
0 = 00:00 Uhr
52.200 = 14:30 Uhr
86.399 = 23:59:59 Uhr

Die Uhrzeit muss also vor dem Senden in Sekunden umgerechnet werden und in dem Wertebereich von 0 bis 86.399 Sekunden liegen (entspricht 00:00 bis 23:59:59 Uhr).
DatumAnzeige im Format TT.MM.JJJJ

Über die KlickTipp API nur im Format Unix-Timestamp möglich.
Datum & UhrzeitAnzeige im Format TT.MM.JJJJ HH:MM:SS

Über die KlickTipp API nur im Format Unix-Timestamp möglich.
HTMLBeliebiger HTML-Code

Fehlerbehandlung

Hier die wichtigsten Fehlercodes für Add or Update Contact – ideal für Logging & User-Feedback:

HTTP Status codeError
4064The email address is unsubscribed. You cannot re-subscribe an email address if the contact has unsubscribed.
4065Invalid email address.
4066There was an error sending the confirmation email.
4067Email address not found.
4068Invalid value in custom field. The provided value is not valid for the field type.
4069The SMS number is already assigned to another contact. If you subscribe an email address and add a phone number, it must be unique.
40610Update of contact failed.
40611Invalid phone number.
40612Internal error.
40630The email address is blocked and cannot be used for subscription.
40631SmartTags are only assigned by the system.
40632You must specify either an email address or a SMS number.
406401Contact not found.
406402Opt-in process not found.
406403Tag not found.
406507You tried to add an email address to a contact that is already assigned to another contact.
406defaultSomething went wrong. Please try again later. Error: ${error}.

Tipp: Fange Fehler strukturiert ab, zeige klare User-Meldungen in deinem Frontend.

List Opt-in Processes

Der Endpunkt /list ist relevant, um die ID für den Opt-In Prozess für Add or Update Contact zu erhalten. Zudem kann er genutzt werden, um eine dynamische Auswahlliste mithilfe des label und dem value zu erzeugen.

Beispiel JSON Response

{
        "value": "366979",
        "label": "Single Opt-In"
    },
    {
        "value": "364353",
        "label": "Newsletter Opt-In"
    },
    {
        "value": "358895",
        "label": "Predefined double opt-in process"
    }
Kopieren

List Tags

Der Endpunkt /tag ist relevant, um die ID für den Tag für Add or Update Contact zu erhalten. Zudem kann er genutzt werden, um eine dynamische Auswahlliste mithilfe des label und dem value zu erzeugen.

{
        "value": "12693542",
        "label": "Newsletter"
    },
    {
        "value": "12709995",
        "label": "Follow-Up E-Mail"
    },
    {
        "value": "12932287",
        "label": "Neuer Tag"
    }
Kopieren

List Data Fields

Der Endpunkt /field ist relevant, um die Felder für Add or Update Contact zu erhalten. Zudem kann er genutzt werden, um eine dynamische Liste der Felder mithilfe des label und dem value zu erzeugen.

Beispiel JSON Response

{
        "value": "fieldBirthday",
        "label": "Birthday"
    },
    {
        "value": "fieldCity",
        "label": "City"
    },
    {
        "value": "fieldCompanyName",
        "label": "Company"
    },
    {
        "value": "fieldCountry",
        "label": "Country"
    },
    {
        "value": "fieldFax",
        "label": "Fax"
    },
    {
        "value": "fieldFirstName",
        "label": "First name"
    },
    {
        "value": "fieldLastName",
        "label": "Last name"
    },
    {
        "value": "fieldLeadValue",
        "label": "Lead value"
    },
    {
        "value": "fieldPhone",
        "label": "Phone"
    },
    {
        "value": "fieldMobilePhone",
        "label": "Phone (mobile)"
    },
    {
        "value": "fieldPrivatePhone",
        "label": "Phone (private)"
    },
    {
        "value": "fieldState",
        "label": "State"
    },
    {
        "value": "fieldStreet1",
        "label": "Street 1"
    },
    {
        "value": "fieldStreet2",
        "label": "Street 2"
    },
    {
        "value": "fieldWebsite",
        "label": "Website"
    },
    {
        "value": "fieldZip",
        "label": "Zip"
    },
    {
        "value": "field213729",
        "label": "lorem ipsum"
    },
    {
        "value": "field213736",
        "label": "lorem ipsum"
    }
Kopieren

Tag Erstellung für Automationen

Damit Deine Anwender nicht manuell einen Tag in KlickTipp erstellen müssen, kannst Du dies für Deine Integration auch über die API.

  • Statisch: integration_partnername
  • Dynamisch: webinar_juni2025

Empfehlung: Dropdown-Befüllung & Create-Tag Button im UI

ActionBeschreibungURLMethodeBody-Parameter
Create TagCreates a new manual tag/tagPOSTname

Create Tag

Request body

  • name string (erforderlich)
    • name ist der Name des neuen Tags

Beispiel JSON Body

{
   "name": "New Tag"
}
Kopieren

Beispiel JSON Response

{
   "id": 12985883,
}
Kopieren

Segmentierung von Kontakt für E-Mail Kampagnen

Um Kontakte mit einer E-Mail Kampagne anzusprechen, welche bereits einen Opt-In Prozess durchlaufen haben, können die Kontakte ohne einen erneuten Opt-In anzugeben mit mehreren Tags verknüpft werden. Die Zuweisung der Tags ist in KlickTipp der Auslöser, um E-Mail Kampagnen zu starten. Diese Tags kannst Du in deiner Integration zum Beispiel über eine neues Auswahlfeld zur Verfügung stellen, sodass die Anwender über die Integration ihr E-Mail Kampagnen steuern können.

AktionBeschreibungURLMethodeBody-Parameter
Tag ContactAdds one or more tags to a contact/subscriber/tagPOSTemail, tagid

Tag Contact

Request body

  • email string (empfohlen)
    • Für die Eingabe sind E-Mail-Adressen mit @-Zeichen erforderlich.
    • email oder smsnumber muss vorhanden sein
    • email und smsnumber dürfen nur einem Kontakt zugewiesen sein
  • tagid array (optional)
    • Für die Eingabe muss eine gültige Tag ID verwendet werden.
    • Verwende Tags für Segmentierung & Trigger
    • Nutze /tag-Endpunkt zur Abfrage verfügbarer Tags

Beispiel JSON Body

{
  "email": "rene.ludwigs@klick-tipp.team",
  "tagids": [
    12042204,
    12042205,
    12042206,
    12042207,
    12042208
  ]
}
Kopieren
{
  "success": true
}
Kopieren

Wesentliche API-Funktionen

Hier findest Du die essenziellen Calls, die Du für robuste Automationen wie in Make, n8n, Zapier brauchst. Die Endpunkte /list, /tag und /field sind relevant, um Daten für Add or Update Contact zu erhalten.

ActionBeschreibungURLMethodeBody-Parameter
Add or Update ContactAdds a new contact. If a contact with the same email already exists, it will be updated./subscriberPOSTemail, smsnumber, listid, tagid, fields
List Opt-in ProcessesLists the IDs and names of all opt-in processes/listGET
List TagsLists the IDs and names of all tags/tagGET
List Data FieldsLists the IDs and names of all data fields/fieldGET
Unsubscribe ContactUnsubscribes a contact, preventing further communication/subscriber/unsubscribePOSTemail
Get Contact IDReturns the contact ID for an email address/subscriber/searchPOSTemail
Tag ContactAdds one or more tags to a contact/subscriber/tagPOSTemail, tagid
Untag ContactRemoves a tag from a contact/subscriber/untagPOSTemail, tagid

Best Practices

Gute Integrationen sind nicht nur funktional, sondern auch nutzerfreundlich. Beachte daher folgende Best Practices für die User Experience innerhalb deines Tools:

  • Nutze Developer + Customer Key: Keys laufen nicht ab – selbst nach Kontowiederherstellung bleiben sie aktiv. Der Developer Key bleibt bei dir und der Customer Key wird einmalig vom Endnutzer erzeugt – kein erneutes Login oder Token Refresh notwendig.
  • Dynamische Drop-downs mit Fallback: Lade Daten (z. B. Tags, Felder, Listen) dynamisch aus KlickTipp via /tag, /field oder /list. Sollte der Abruf fehlschlagen, zeige eine manuelle Eingabeoption oder einen Hinweis zur Verbindung.
  • Fehlermeldungen aufschlüsseln: Zeige bei 406-Fehlern sprechende Fehlermeldungen direkt im IPaaS-Interface, z. B. „Diese E-Mail-Adresse wurde abgemeldet – kein erneutes Eintragen möglich“ (Error 4).
  • Optional: "Create Tag"-Funktion: Ermögliche die Erstellung von Tags direkt aus dem Interface heraus (wenn von der API unterstützt) – ideal für schnell einsatzbereite Segmentierungen.

Weitere Dokumente & Referenzen

PHP Wrapper

Neben der einfachen API Dokumentation existiert auch eine beispielhafte Schnittstellen-Klassen für PHP.

NodeJS / Node-RED

Es existiert auch eine Open Source Referenz zu unserem Node-RED Konnektor, welche als Grundlage für eine NodeJS Implementieurng genutzt werden kann.

OpenAPI

Wir arbeiten zudem gerade an einer OpenAPI Spezifikation.

API Dokumentation

Mehr zu unserer API und auch einen Link zu mit allen aktuellen Requests und Responsen findest Du hier.

Hat Dir dieser Beitrag weitergeholfen?