MARKETING-SUCCESS-BLOG
Proof of Concept unter Druck – ein kreativer Workaround für Datenimporte in der Marketing Cloud
Wie du ohne SFTP oder Marketing Cloud API Daten in die Marketing Cloud automatisiert Daten in die Marketing Cloud bekommst
In manchen Fällen hat man ein klares Ziel vor Augen, einen konkreten Plan im Kopf – und ist mehr als bereit, sich die Hände schmutzig zu machen, um etwas Cooles zu bauen.
Ich bin sicher, viele von euch kennen dieses Gefühl – gerade unter Marketing Cloud Consultants und Developern ist es wohlbekannt.
Das Szenario
Stell dir Folgendes vor:
Du hast ein System, das für ein bestimmtes Kundensegment täglich einen Propensity Score (also eine Kaufwahrscheinlichkeitsbewertung) berechnet – inklusive optimalem Versandzeitpunkt und einer Reihung deines Sortiments nach Relevanz.
Das System läuft beispielsweise auf Microsoft Azure oder der Google Cloud Platform (GCP).
Nach wochenlangem Tüfteln hast du den Prozess perfektioniert, die Fehlerquote ist minimal – und du bist stolz auf das Ergebnis.
Das Management ist begeistert und bittet dich, innerhalb von zwei Wochen einen Proof of Concept (PoC) durchzuführen.
Wenn dieser erfolgreich ist, erhältst du Budget und Ressourcen für den vollständigen Rollout.
Der Budget-Pitch ist in drei Wochen – also nichts wie los, oder?
Doch dann beginnen die Probleme…
Das Problem
Du weißt: Die Daten müssen täglich aktualisiert werden.
Dein erster Gedanke – „Ich ziehe mir die Daten einfach über einen SFTP-Transfer rein“ – verpufft schnell.
Das zuständige Team teilt dir mit, dass die Einrichtung mindestens drei Wochen dauert und der Service intern verrechnet wird.
Ein täglicher CSV-Export/-Import in die Marketing Cloud wäre theoretisch möglich – aber der Use Case soll auch am Wochenende laufen. Und du hast ein verlängertes Wellness-Wochenende mit der Familie geplant – dein Interesse, CSVs manuell hochzuladen, hält sich in Grenzen.
Ein direkter API-Import in eine Data Extension wäre denkbar, aber dir fehlen die Berechtigungen – und deine letzten beiden Anträge auf den Zugriff sind nach wie vor auf „Status: Pending“.
Nun sitzt du da und denkst:
„Ich will doch nur mein Konzept verproben – ich tu doch niemandem weh damit…“
Die Idee
Not macht erfinderisch.
Nach einem ähnlichen Fall kam mir eine Idee, die ich nie produktiv umgesetzt, aber in meiner Sandbox erfolgreich getestet habe.
Die Problemstellung:
Ich brauche für einen PoC einen täglich aktualisierten Datensatz in einer Data Extension, um ihn in einer Journey zu nutzen.
Die Daten entstehen in einem Python Notebook als fertiges DataFrame.
SFTP? Nicht verfügbar.
API? Keine Rechte.
CSV-Upload? Zu aufwendig.
Also: Pull a gun!
Der Workaround
Wie üblich ist dieser Ansatz nicht 1:1 für den Produktivbetrieb gedacht – Sicherheitsvorkehrungen müssen natürlich geprüft werden.
Aber für einen schnellen, flexiblen Proof of Concept kann er potentiell Gold wert sein.
Mein Vorgehen:
Erstelle eine CloudPage.
Lese die Query-Parameter der URL aus – sie enthalten die Daten, die in die Data Extension übernommen werden sollen.
Nutze ein Skript auf der CloudPage, um diese Daten in die gewünschte Data Extension zu schreiben.
Baue im Python Notebook eine Schleife, die für jeden Datensatz eine URL mit den Query-Parametern generiert und über einen POST Request an die CloudPage sendet.
Verwende die Data Extension weiter, z. B. in einer Automation oder direkt in einer Journey.
Fazit
Natürlich ist das nicht der eleganteste oder sicherste Ansatz – aber er ist schnell, flexibel und effizient, wenn es darum geht, unter Zeitdruck etwas zu testen. Zusätzlich können Security Gates eingerichtet werden, beispielsweise kann ausschließlich die IP Adresse des liefernden Systems mittels SSJS geprüft werden und die Verarbeitung im Anschluss über einen gespeicherten Code Block stattfinden.
Manchmal verhindern interne Prozesse oder Bürokratie spannende Innovationen.
Mit dieser Methode kannst du sie zumindest kurzzeitig umgehen, um Chancen nicht zu verpassen.
Für einen PoC ist das ein gangbarer Weg – und wenn er funktioniert, kann später immer noch eine saubere, skalierbare Lösung folgen.
Wie würdet ihr einen solchen Use Case lösen?
Ich freue mich auf eure Inputs und Erfahrungen.
Code Referenzen
Python / Fremdsystem, das die Daten enthält, die Up To Date in der Marketing Cloud benötigt werden:
#Define Endpoint
url = 'https://yourcloudpagelink.com/endpoint_test?'
k1 = 'param1='
k2 = '¶m2='
#Define lists with the parameters to push into SFMC (e.g. extracted from a Pandas Dataframe)
v1 = ['max', 'ben', 'karl', 'rolf', 'paul']
v2 = ['111', '222', '333', '444', '555']
#Create List with all links and individual query parameters
i = 0
links = []
while i < len(v1):
links.append(url + k1 + v1[i] + k2 + v2[i])
i += 1
#Import requests lib and post the links
import requests
for l in links:
requests.post(l)
#Hint: Only tried with minimal amounts of data - for more records, I would include a delay of a few seconds, e.g. sleep(3) after each Post-Request
AmpScript für die Marketing Cloud (Ohne empfohlenes Security Gate):
%%[
VAR @param1, @param2
SET @param1 = RequestParameter("param1")
SET @param2 = RequestParameter("param2")
IF NOT EMPTY(@param1) AND NOT EMPTY(@param2) THEN
/* Insert or Update the data into the DE */
SET @insertStatus = InsertDE("Endpoint_DE", "Param1", @param1, "Param2", @param2, "Timestamp", NOW())
ENDIF
]%%
Ergebnis Data Extension
Kontakt
E-Mail:
info@marketing-success-lab.com
Linkedin:
https://www.linkedin.com/in/oliveraichinger/