Verbindung mit der Movable Ink Customer Data API herstellen
Die Integration der Customer Data API von Braze und Movable Ink ermöglicht es Marketern, in Braze gespeicherte Kunden-Event-Daten zu aktivieren, um personalisierte Inhalte in Movable Ink zu generieren.
Movable Ink kann Verhaltens-Events von Braze über die Customer Data API aufnehmen. Die Events werden in den Nutzerprofilen basierend auf der eindeutigen Nutzer-ID (UUID) gespeichert, die an Movable Ink übermittelt wird.
Weitere Informationen über Stories, die Movable Ink Customer Data API und darüber, wie Movable Ink Verhaltensdaten nutzt, finden Sie in den folgenden Support-Center-Artikeln:
- Inhalte mit Verhaltensdaten unterstützen
- Customer Data API – Einführung und Leitfaden
- FAQ: Customer Data API
Voraussetzungen
| Anforderung | Beschreibung |
|---|---|
| Movable Ink Konto | Ein Movable Ink Konto ist erforderlich, um diese Partnerschaft zu nutzen. |
| Movable Ink API-Zugangsdaten | Das Movable Ink Solutions-Team generiert API-Zugangsdaten für Sie. Die API-Zugangsdaten bestehen aus:
|
| Payloads für Verhaltens-Events | Sie müssen Ihre Event-Payloads mit Ihrem Movable Ink Client Experience Team teilen. Weitere Informationen finden Sie unter Event-Payloads mit Movable Ink teilen. |
| Kreative Assets und Geschäftslogik | Sie müssen Movable Ink kreative Assets zur Verfügung stellen, einschließlich Adobe Photoshop (PSD)-Dateien, die Movable Ink zeigen, wie der Block erstellt werden soll, sowie ein Fallback-Bild. Außerdem müssen Sie die Geschäftslogik bereitstellen, die festlegt, wie und wann der vom Partner aktivierte Content-Block angezeigt werden soll. |
Integration
Schritt 1: Erstellen Sie eine Webhook-Campaign in Braze
Schritt 1a: Erstellen Sie eine neue Campaign
- Erstellen Sie in Braze eine Webhook-Campaign.
- Geben Sie Ihrer Campaign einen Namen und eine optionale Beschreibung.
- Wählen Sie als Template Blank Template aus.
Schritt 1b: Fügen Sie Ihre Customer Data API-Zugangsdaten hinzu
- Geben Sie im Feld Webhook URL die Movable Ink Endpunkt-URL ein.

- Wählen Sie den Tab Einstellungen.
- Fügen Sie die folgenden Anfrage-Header als Schlüssel-Wert-Paare hinzu:
| Schlüssel | Wert |
|---|---|
| Content-Type | application/json |
| Authorization | Geben Sie die Basic-Authentifizierung ein, die Sie von Movable Ink erhalten haben. |

Schritt 1c: Konfigurieren Sie Ihren Payload
- Kehren Sie zum Tab Verfassen zurück.
- Erstellen Sie für Ihren Anfrage-Body entweder einen eigenen Anfrage-Body mit JSON-Schlüssel-Wert-Paaren oder geben Sie Ihren Event-Payload als Rohtext ein. Beispiele für Standard-E-Commerce-Events finden Sie in den Beispiel-Payloads.

Schritt 1d: Testen Sie Ihren Webhook
Sie müssen Ihrem Movable Ink Client Experience Team einen Beispiel-Payload zur Verfügung stellen. Sie können diesen Payload im Tab Test basierend auf dem von Ihnen erstellten Payload generieren.

Movable Ink empfiehlt, mit dem Testen Ihres Webhooks in Braze zu warten, bis Ihr Movable Ink Client Experience Team bestätigt hat, dass die Abbildung abgeschlossen ist und ein Test empfangen werden kann. Wenn diese Abbildung nicht vollständig ist, erhalten Sie beim Testen wahrscheinlich eine Fehlermeldung.
Um Ihren Webhook zu testen, gehen Sie wie folgt vor:
- Wählen Sie den Tab Test.
- Zeigen Sie eine Vorschau der Nachricht als Nutzer:in an, um einen Beispiel-Event-Payload für diese:n Nutzer:in zu sehen. Sie können zwischen einer Vorschau als zufällige:r Nutzer:in, bestimmte:r Nutzer:in oder angepasste:r Nutzer:in wählen.
- Wenn alles gut aussieht, klicken Sie auf Send test, um eine Testanfrage zu senden.

Schritt 2: Schließen Sie die Einrichtung Ihrer Campaign ab
Schritt 2a: Planen Sie Ihre Campaign
Wenn Sie den Webhook fertiggestellt und getestet haben, planen Sie Ihre Campaign.
Braze unterstützt geplante, aktionsbasierte und API-getriggerte Zustellungen. Die aktionsbasierte Zustellung ist in der Regel die beste Lösung für die meisten Anwendungsfälle mit Verhaltens-Events. Bei Fragen dazu, was für Ihren Anwendungsfall sinnvoll ist, wenden Sie sich an Ihre CSM von Braze und Movable Ink.
Für aktionsbasierte Zustellung:
- Geben Sie die Trigger-Aktion an. Dies ist das Event, das den Webhook an Movable Ink triggert.
- Stellen Sie sicher, dass Schedule Delay auf Immediately eingestellt ist. Event-Daten sollten sofort nach dem Eintreten des Events ohne Verzögerung an Movable Ink gesendet werden.
- Legen Sie die Dauer der Campaign fest, indem Sie eine Startzeit angeben. Eine Endzeit ist wahrscheinlich nicht erforderlich, kann aber bei Bedarf für den Anwendungsfall festgelegt werden.

Um sicherzustellen, dass die Daten in Echtzeit an Movable Ink gestreamt werden, wählen Sie nicht die Option Send campaign to users in their local time zone.
Schritt 2b: Bestimmen Sie Ihre Zielgruppe
Bestimmen Sie als Nächstes, welche Nutzer:innen Sie für diese Campaign ansprechen möchten. Einzelheiten finden Sie unter Nutzer:innen ansprechen.
Stellen Sie sicher, dass Sie keine A/B-Tests in Ihrer Campaign verwenden, indem Sie das Kontrollkästchen Control Group deaktivieren. Wenn eine Kontrollgruppe enthalten ist, werden bei einem bestimmten Prozentsatz der Nutzer:innen keine Daten an Movable Ink gesendet. Ihre gesamte Zielgruppe sollte der Variante zugeordnet werden, nicht der Kontrollgruppe.

Schritt 2c: Wählen Sie Konversions-Events (optional)
Falls gewünscht, können Sie dieser Campaign innerhalb von Braze Konversions-Events zuweisen.
Da der Webhook jedoch nur zum Streamen von Daten gedacht ist, ist die Attribution auf dieser Ebene wahrscheinlich weniger nützlich als die Betrachtung der Attribution auf Campaign-Ebene, nachdem die Verhaltensdaten von Braze zur Personalisierung von Inhalten verwendet wurden.
Schritt 3: Campaign starten
Überprüfen Sie Ihre Webhook-Einrichtung und starten Sie Ihre Campaign.
Überlegungen
Abstimmung auf einen eindeutigen Nutzer-Bezeichner
Stellen Sie sicher, dass der eindeutige Nutzer-Bezeichner (UUID), den Sie als mi_u verwenden, in Braze verfügbar ist und in die an Movable Ink gesendeten Event-Payloads aufgenommen werden kann.
Dadurch wird sichergestellt, dass die Verhaltens-Events, auf die Movable Ink bei der Erstellung eines Bildes referenziert, mit derselben Kund:in verknüpft sind, für die die Verhaltens-Events empfangen wurden. Wenn der UUID-Wert nicht mit der Braze external_id übereinstimmt, muss die UUID erfasst und als Attribut oder in den Event-Eigenschaften eines Braze-Events an Braze übergeben werden, um diesen Bezeichner zu nutzen.
Braze trackt das Nutzerverhalten über mehrere Plattformen hinweg (z. B. Internet und mobile App), sodass eine einzelne Nutzer:in mehrere verschiedene anonyme IDs haben kann. Diese IDs können in das einzige bekannte Stories-Kundenprofil zusammengeführt werden, wenn ein identify-Event an Movable Ink gesendet wird, solange das identify-Event sowohl einen anonymen Bezeichner als auch den einzigen bekannten Bezeichner enthält.
Sobald Movable Ink eine user_id für eine einzelne Nutzer:in erhält, müssen alle zukünftigen Events für diese Nutzer:in dieselbe user_id enthalten.
Event-Payloads mit Movable Ink teilen
Bevor Sie den Konnektor zur Customer Data API von Movable Ink einrichten, stellen Sie sicher, dass Sie Ihre Event-Payloads mit Ihrem Movable Ink Client Experience Team teilen. Dies ermöglicht Movable Ink die Abbildung Ihrer Events auf das Event-Schema und verhindert, dass API-Aufrufe abgelehnt werden oder fehlschlagen.
Sie können in Braze einen Event-Payload mit beliebigen Event-Eigenschaften erzeugen. Generieren Sie einen Beispiel-Payload für eine:n zufällige:n Nutzer:in oder durch die Suche nach einer bestimmten Nutzer-ID. Siehe Schritt 1d für Details.
Teilen Sie diesen Beispiel-Payload mit Ihrem Movable Ink Client Experience Team. Vergewissern Sie sich, dass keine sensiblen personenbezogenen Daten im Beispiel-Payload enthalten sind (wie z. B. E-Mail-Adresse, Telefonnummer oder vollständige Geburtsdaten).
Wenn Sie mehr über angepasste Event-Eigenschaften und das erwartete Format der in den Eigenschaften enthaltenen Daten erfahren möchten, lesen Sie Angepasste Event-Eigenschaften.
Bekannte versus anonyme Nutzer:innen
In Braze können Events unter einem anonymen Kundenprofil aufgezeichnet werden. Welche Bezeichner bei der Event-Protokollierung mit dem Kundenprofil verknüpft werden, hängt davon ab, wie die Nutzer:in erstellt wurde (über das Braze SDK oder die APIs) und in welcher Phase des Nutzerlebenszyklus sich die Nutzer:in befindet.
Nur Braze-Events für bekannte Nutzer:innen weiterleiten
Verwenden Sie in Ihrer Webhook-Campaign den Filter External User ID, um nur Nutzer:innen anzusprechen, die eine external_id haben, mit dem Filter External User ID is not blank.
Braze-Events für anonyme und bekannte Nutzer:innen weiterleiten
Wenn Sie Braze-Events von anonymen Nutzer:innen (Nutzer:innen, deren Profil noch keine external_id zugewiesen wurde) weiterleiten möchten, müssen Sie entscheiden, welchen Bezeichner Sie als anonymous_id für Movable Ink verwenden möchten, bis eine external_id verfügbar ist. Wählen Sie eine anonymous_id, die in Ihrem Braze-Kundenprofil konstant bleibt. Sie können die Liquid-Logik im Webhook-Body verwenden, um zu entscheiden, ob eine anonymous_id oder eine user_id übergeben werden soll.
Weitere Informationen finden Sie in den Beispiel-Webhooks unter Beispiel-Payloads.
Beispiel-Payloads
Produktansichts-Event
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"events": [
{
"email": "[email protected]",
"name": "Product Viewed",
"time": "2023-12-06T19:20:45+01:00",
"properties": {
"categories": [
{
"id": "Bathroom",
"url": "https://example.com/cat/bathroom"
}
],
"meta": {
"color": "green"
},
"title": "All-Purpose Cleaning Wipes",
"price": 1.99,
"id": "56544",
"url": "https://www.example.com/variants_id/5f08cb918dcc595aa74b0fbc"
}
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
curl --location --request POST 'https://collector.movableink-dmz.com/behavioral/{{key}}' \
--header 'Authorization: Basic {{authorization}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"anonymous_id": "123-abc-678",
"event": "product_viewed",
"properties": {
"categories": [
{
"id": "Bathroom",
"url": "https://example.com/cat/bathroom"
}
],
"meta": {
"color": "green"
},
"title": "All-Purpose Cleaning Wipes",
"price": 1.99,
"id": "56544",
"url": "https://www.example.com/variants_id/5f08cb918dcc595aa74b0fbc"
},
"timestamp": 1257894000000,
"timezone": "America/New_York",
"type": "track",
"user_id": "5c3aa83113dd490100d3d8d7"
}'
In diesem Beispiel wird eine gehashte E-Mail-Adresse als anonymous_id für Nutzer:innen verwendet, die keine external_id haben.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Converts the timestamp of "now" to seconds since 1970 and assigns it to a local variable "timestamp"
{% assign timestamp = "now" | date: "%s" %}
// Example of md5 hashing the email address to use as the anonymous_id
{% assign anon_id = {{${email_address}}} | md5 %}
// Condition logic to determine which identifier to use. If an external_id is available use that, otherwise use the anonymous_id
{% if {{${user_id}}} %}
{% capture user_identifier %}"user_id": "{{${user_id}}}"{% endcapture %}
{% else %}
{% capture user_identifier %}"anonymous_id": "{{anon_id}}"{% endcapture %}
{% endif %}
{
{{user_identifier}}
"event": "product_viewed",
"properties": {
"categories": [
{
"id": "{{event_properties.${categories}[0].id}}",
"url": "{{event_properties.${categories}[0].url}}"
}
],
"meta": {
"color": "{{event_properties.${meta}.color}}"
},
"title": "{{event_properties.${title}}}",
"price": "{{event_properties.${price}}}",
"id": "{{event_properties.${id}}}",
"url": "{{event_properties.${url}}}"
},
"timestamp": "{{timestamp}}",
"timezone": "{{${time_zone}}}",
"type": "track",
}
Kategorieansichts-Event
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"events": [
{
"external_id": "123456789",
"name": "Category Viewed",
"time": "2023-12-06T19:20:45+01:00",
"properties": {
"id": "bathroom-1",
"title": "Bathroom Stuff",
"url": "https://www.example.com/categories/bathroom"
}
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
curl --location --request POST 'https://collector.movableink-dmz.com/behavioral/{{key}}' \
--header 'Authorization: Basic {{authorization}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"anonymous_id": "123-abc-678",
"event": "category_viewed",
"properties": {
"id": "bathroom-1",
"title": "Bathroom Stuff",
"url": "https://www.example.com/categories/bathroom"
},
"timestamp": 1257894000000,
"timezone": "America/New_York",
"type": "track",
"user_id": "5c3aa83113dd490100d3d8d7"
}'
Dieses Beispiel zeigt einen Webhook, der nur Events für bekannte Nutzer:innen trackt (Nutzer:innen mit einer external_id).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Converts the timestamp of "now" to seconds since 1970 and assigns it to a local variable "timestamp"
{% assign timestamp = "now" | date: "%s" %}
{
"event": "category_viewed",
"properties": {
"id": "{{event_properties.${id}}}",
"title": "{{event_properties.${title}}}",
"url": "{{event_properties.${url}}}"
},
"timestamp": "{{timestamp}}",
"timezone": "{{${time_zone}}}",
"type": "track",
"user_id": "{{${user_id}}}"
}
Identify-Event
1
2
3
4
5
6
7
8
9
{
"events": [
{
"external_id": "123456789",
"name": "Account Created",
"time": "2023-12-06T19:20:45+01:00"
}
]
}
1
2
3
4
5
6
7
8
9
10
curl --location --request POST 'https://collector.movableink-dmz.com/behavioral/{{key}}' \
--header 'Authorization: Basic {{authorization}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"anonymous_id": "jg0iq5gd30dqpwn8zmx05p06mzjmjir4r8",
"timestamp": 1257894000000,
"timezone": "America/New_York",
"type": "identify",
"user_id": "mycustomerid123"
}'
In diesem Beispiel wird eine gehashte E-Mail-Adresse als anonymous_id für Nutzer:innen verwendet, die keine external_id haben.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Converts the timestamp of "now" to seconds since 1970 and assigns it to a local variable "timestamp"
{% assign timestamp = "now" | date: "%s" %}
// Example of md5 hashing the email address to use as the anonymous_id
{% assign anon_id = {{${email_address}}} | md5 %}
{
"anonymous_id": "{{anon_id}}",
"timestamp": "{{timestamp}}",
"timezone": "{{${time_zone}}}",
"type": "identify",
"user_id": "{{${user_id}}}"
}