Skip to content

Olo

Olo ist eine führende offene SaaS-Plattform für Restaurants, die Gastfreundschaft an jedem Touchpoint ermöglicht.

Durch die Integration von Olo und Braze können Sie:

  • Nutzerprofile in Braze aktualisieren, damit sie mit den Olo-Nutzerprofilen übereinstimmen
  • Die richtigen nächstbesten Nachrichten von Braze basierend auf Olo-Events senden

Voraussetzungen

Anforderung Beschreibung
Olo-Konto Ein Olo-Konto mit Zugriff auf Webhooks ist erforderlich, um diese Partnerschaft nutzen zu können. Richten Sie Webhook-Abos über das Self-Service-Webhooks-Tool im Olo-Dashboard ein.
Braze-Datentransformation Eine Datentransformations-URL ist erforderlich, um Daten von Olo zu empfangen.

Ein Webhook ist eine Möglichkeit für Olo, ereignisgesteuerte Informationen über Nutzer:innen und deren Aktionen an Braze zu senden, darunter Events wie „Bestellung aufgegeben“, „Gast-Opt-in“, „Bestellung abgeholt“ und mehr. Der Olo-Webhook übermittelt das Event in der Regel innerhalb von Sekunden nach der ausgeführten Aktion an Braze.

Haftungsausschluss

In Olo sind Sie auf einen Webhook pro Umgebung für jede genehmigte Marke beschränkt, wobei alle an dieselbe Ziel-URL gesendet werden. Verschiedene Marken können unterschiedliche URLs haben, aber Events derselben Marke müssen sich eine URL teilen. In Braze bedeutet das, dass Sie nur eine Datentransformation für die Verwendung mit Olo erstellen können.

Um mehrere Olo-Events innerhalb dieser einzelnen Transformation zu verarbeiten, suchen Sie nach dem X-Olo-Event-Type-Header in jedem Webhook. Dieser Header ermöglicht es Ihnen, verschiedene Olo-Events bedingt zu verarbeiten.

Integration

Schritt 1: Braze-Datentransformation einrichten, um das Test-Event von Olo zu akzeptieren

Gehen Sie im Braze-Dashboard zu Dateneinstellungen > Datentransformation.

Wählen Sie Transformation erstellen, um Ihre Transformation zu benennen, und wählen Sie dann Ihre Bearbeitungserfahrung.

Details zur Transformation mit der Option „Template verwenden“ oder „Von Grund auf neu beginnen“ für Ihre Bearbeitungserfahrung.

Wählen Sie Template verwenden, um eine Template-Bibliothek zu durchsuchen, die auch Anwendungsfälle der Datentransformation enthält. Oder wählen Sie Von Grund auf neu, um ein Standard-Code-Template zu laden.

Wenn Sie bei Null anfangen, wählen Sie ein Ziel für Ihre Transformation. Sie können trotzdem ein Code-Template aus der Template-Bibliothek einfügen.

Mehr zu Zielen
  • POST: Nutzer:innen tracken: Wandelt Webhooks von einer Quellplattform in Kundenprofil-Updates um, z. B. Attribute, Ereignisse oder Käufe.
  • PUT: Mehrere Katalogartikel aktualisieren: Wandelt Webhooks von einer Quellplattform in Aktualisierungen von Katalogartikeln um.
  • DELETE: Mehrere Katalogartikel löschen: Wandelt Webhooks von einer Quellplattform in Löschungen von Katalogartikeln um.
  • PATCH: Mehrere Katalogartikel bearbeiten: Wandelt Webhooks von einer Quellplattform in Bearbeitungen von Katalogartikeln um.
  • POST: Nachrichten sofort über API Only senden: Wandelt Webhooks von einer Quellplattform um, um Sofortnachrichten an bestimmte Nutzer:innen zu senden.

Nachdem Sie Ihre Transformation erstellt haben, sehen Sie die Detailansicht der Transformation. Hier können Sie unter Webhook-Details den zuletzt empfangenen Webhook für diese Transformation einsehen und unter Transformationscode Ihren Transformationscode schreiben.

Kopieren Sie Ihre Webhook-URL zur Verwendung im nächsten Schritt.

Schritt 2: Olo-Webhooks einrichten

Verwenden Sie das Self-Service-Webhooks-Tool im Olo-Dashboard, um Webhooks einzurichten, die an Ihre Datentransformation gesendet werden.

  1. Wählen Sie, welche Events an Braze gesendet werden sollen.
  2. Konfigurieren Sie die Ziel-URL. Dies ist die in Schritt 1 erstellte URL für die Datentransformation.
  1. Überprüfen Sie, ob der Webhook richtig konfiguriert ist, indem Sie ein Test-Event an Ihre Datentransformation senden. Nur Nutzer:innen des Olo-Dashboards mit der Berechtigung für Entwickler:innen-Tools können Test-Events senden.

Olo benötigt eine erfolgreiche Antwort vom Test-Event-Webhook, bevor Sie die Konfiguration des Olo-Webhooks abschließen können.

Schritt 3: Transformationscode schreiben, um die von Ihnen gewählten Olo-Events zu akzeptieren

In diesem Schritt transformieren Sie die Webhook-Nutzlast, die von der Quellplattform gesendet wird, in einen Rückgabewert als JavaScript-Objekt.

  1. Senden Sie eine Anfrage an Ihre URL für die Datentransformation mit einer Beispiel-Event-Nutzlast eines Olo-Events, das Sie unterstützen möchten. Siehe Format des Anfragekörpers für Hilfe bei der Formatierung Ihrer Anfrage.
  2. Aktualisieren Sie Ihre Datentransformation und vergewissern Sie sich, dass Sie die Beispiel-Event-Nutzlast in den Webhook-Details sehen können.
  3. Aktualisieren Sie Ihren Datentransformationscode, um die von Ihnen gewählten Olo-Events zu unterstützen.
  4. Klicken Sie auf Validate, um eine Vorschau der Ausgabe Ihres Codes zu erhalten und zu prüfen, ob es sich um eine akzeptable /users/track-Anfrage handelt.
  5. Speichern und aktivieren Sie Ihre Datentransformation.

Format des Anfragekörpers

Dieser Rückgabewert muss dem Format des /users/track-Anfragekörpers von Braze entsprechen:

  • Transformations-Code wird in der Programmiersprache JavaScript akzeptiert. Jede standardmäßige JavaScript-Kontrollflussstruktur, wie z. B. if/else-Logik, wird unterstützt.
  • Transformations-Code greift über die Variable payload auf den Body der Webhook-Anfrage zu. Diese Variable ist ein Objekt, das durch das Parsen des JSON-Anfrage-Bodys befüllt wird.
  • Jedes Feature, das in unserem /users/track-Endpunkt unterstützt wird, wird ebenfalls unterstützt, einschließlich:
    • Nutzer:innen-Attribut-Objekte, Event-Objekte und Kauf-Objekte
    • Verschachtelte Attribute und verschachtelte angepasste Event-Eigenschaften
    • Abo-Gruppen-Aktualisierungen
    • E-Mail-Adresse als Bezeichner

Beispiel-Datentransformationen für Olo-Webhooks

Dieser Abschnitt enthält Beispiel-Templates, die als Ausgangspunkt verwendet werden können. Sie können auch ganz von vorne beginnen oder einzelne Komponenten nach Bedarf löschen.

In jedem Template definiert der Code eine Variable brazecall, um eine /users/track-Anfrage zu erstellen.

Nachdem die /users/track-Anfrage brazecall zugewiesen wurde, geben Sie brazecall explizit zurück, um eine Ausgabe zu erzeugen.

Einzelne Event-Transformation

Wenn Sie nur ein einzelnes Olo-Event unterstützen möchten, müssen Sie den X-Olo-Event-Type-Header nicht verwenden, um den /users/track-Anfrage-Payload bedingt zu erstellen. Zum Beispiel das Protokollieren eines Kauf-Events oder eines angepassten Events im Kundenprofil, wenn ein Olo-Order-Placed-Webhook an Braze gesendet wird.

Jedes Produkt als Kauf protokollieren

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// iterate through the items included within the order

const purchases = payload.items.map((item) => {
 return {
   external_id: payload.customer.customerId.toString(),
   product_id: item.productId.toString(),
   currency: 'USD',
   price: item.sellingPrice,
   time: new Date().toISOString(),
   quantity: item.quantity,
   properties: {
     customValues: item.customValues
   }
 };
});

// log a purchase per item in the order

let brazecall = {
 "purchases": purchases
};

return brazecall;

Ein angepasstes Event protokollieren

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// log an event “Order Placed” to the profile that includes all items in the order as event properties.

let brazecall = {
"events": [
   {
     "external_id": payload.customer.customerId.toString(),
     "_update_existing_only": false,
     "name": "Order Placed",
     "time": new Date().toISOString(),
     "properties": {
       "Delivery Method": payload.deliveryMethod,
       "Items": payload.items,
       "Total": payload.totals.total,
       "Location": payload.location.name
     }
   }
 ]
};

return brazecall;

Multi-Event-Datentransformation

Olo sendet den Event-Typ im X-Olo-Event-Type-Header jedes Webhooks. Um mehrere Olo-Webhook-Events innerhalb einer einzigen Datentransformation zu unterstützen, verwenden Sie bedingte Logik, um die Webhook-Payload basierend auf dem Wert dieses Header-Typs zu transformieren.

Im folgenden Transformationsbeispiel erstellt unser JavaScript eine bestimmte Payload für die Events UserSignedUp und OrderPlaced. Zusätzlich verarbeitet eine else-Bedingung eine Payload für alle Olo-Events, die ohne den X-Olo-Event-Type-Header UserSignedUp und OrderPlaced an Braze gesendet werden.

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// captures the value within the X-Olo-Event-Type header for use in the conditional logic

let event_type = headers["X-Olo-Event-Type"];

// defines a variable 'brazecall' that will hold the request payload for the /users/track request

let brazecall;

// if the X-Olo-Event-Type header is 'UserSignedUp', define a variable for the different subscription statuses that could be included within the Olo event payload

if (event_type == "UserSignedUp") {
	let emailSubscribe;
	let emailSubscriptionGroup;
	let smsSubscriptionGroup;


// determine if the user has opted into marketing emails


	if (payload.allowEmail) {
		emailSubscribe = "opted_in";
		emailSubscriptionGroup = "subscribed";
	} else {
		emailSubscribe = "unsubscribed";
		emailSubscriptionGroup = "unsubscribed";
	}


	// determine if the user has opted into SMS


	if (payload.allowMarketingSms) {
		smsSubscriptionGroup = "subscribed";
	} else {
		smsSubscriptionGroup = "unsubscribed";
	}

	// build the /users/track request and pass in the appropriate subscription statuses


	brazecall = {
		"attributes": [{
			"external_id": payload.id.toString(),
			"_update_existing_only": false,
			"email": payload.emailAddress,
			"first_name": payload.firstName,
			"last_name": payload.lastName,
			"email_subscribe": emailSubscribe,
			"phone": payload.contactNumber,
			"subscription_groups": [{
					"subscription_group_id": "57e5307f-9084-490d-9d6d-8244dc919a48",
					"subscription_state": emailSubscriptionGroup
				},
				{
					"subscription_group_id": "6440ba26-86ea-47db-a935-6647941dc78b",
					"subscription_state": smsSubscriptionGroup
				}
			]
		}]
	}; // if the X-Olo-Event-Type header is 'OrderPlaced', build the /users/track request to log an event to the user profile
} else if (event_type == "OrderPlaced") {
	brazecall = {
		"events": [{
			"external_id": payload.customer.customerId.toString(),
			"_update_existing_only": false,
			"name": "Order Placed",
			"time": new Date().toISOString(),
			"properties": {
				"Delivery Method": payload.deliveryMethod,
				"Items": payload.items,
				"Total": payload.totals.total,
				"Location": payload.location.name
			}
		}]
	};
} else { // if the X-Olo-Event-Type header is anything else, build the /users/track request to log an event to the user profile
	brazecall = {
		"events": [{
			"external_id": payload.customer.customerId.toString(),
			"_update_existing_only": true,
			"name": "Another Event",
			"time": new Date().toISOString()
		}]

	};
}

// return `brazecall` to create an output.

return brazecall;

Schritt 4: Ihren Olo-Webhook veröffentlichen

Nachdem Sie Ihre Datentransformation in Braze aktiviert haben, verwenden Sie das Self-Service-Webhooks-Tool im Olo-Dashboard, um Ihren Webhook zu veröffentlichen. Sobald der Webhook veröffentlicht ist, beginnt die Datentransformation, Olo-Webhook-Event-Nachrichten zu empfangen.

Wissenswertes

Wiederholungsversuche

Olo wiederholt Webhook-Aufrufe, die einen HTTP-Antwortstatuscode 429 - Too Many Requests oder im Bereich 5xx zurückgeben (z. B. aufgrund eines Gateway-Timeouts oder Serverfehlers), bis zu 50 Mal innerhalb von 24 Stunden, bevor die Anfrage verworfen wird.

Mindestens einmalige Zustellung

Wenn ein Webhook-Aufruf einen HTTP-Antwortstatuscode 429 - Too Many Requests oder im Bereich 5xx zurückgibt (z. B. aufgrund eines Gateway-Timeouts oder Serverfehlers), wiederholt Olo die Nachricht bis zu 50 Mal innerhalb von 24 Stunden, bevor der Versuch aufgegeben wird.

Webhooks können daher von Abonnent:innen mehrfach empfangen werden. Es liegt in der Verantwortung der Abonnent:innen, Duplikate zu ignorieren, indem sie den Header X-Olo-Message-Id überprüfen.

New Stuff!