Skip to content

Olo

Olo es una plataforma SaaS abierta líder para restaurantes que habilita la hostelería en cada punto de intervención.

Al integrar Olo y Braze, puedes:

  • Actualizar los perfiles de usuario en Braze para mantenerlos coherentes con los perfiles de usuario de Olo
  • Enviar el siguiente mejor mensaje desde Braze basándote en eventos de Olo

Requisitos previos

Requisito Descripción
Cuenta Olo Se requiere una cuenta de Olo con acceso a webhooks para aprovechar esta asociación. Configura suscripciones a webhooks a través de la herramienta de webhooks de autoservicio dentro del dashboard de Olo.
Transformación de datos de Braze Se necesita una URL de Transformación de datos para recibir datos de Olo.

Un webhook es una forma en que Olo envía información basada en eventos a Braze sobre los usuarios y sus acciones, incluidos eventos como Order Placed, Guest Opt In, Order Picked Up y más. El webhook de Olo entrega el evento a Braze generalmente a los pocos segundos de realizarse la acción.

Descargo de responsabilidad

En Olo, estás limitado a un webhook por entorno para cada marca aprobada, todos enviados a la misma URL de destino. Las distintas marcas pueden tener URL diferentes, pero los eventos de una misma marca deben compartir una URL. En Braze, esto significa que solo puedes crear una transformación para usar con Olo.

Para manejar múltiples eventos de Olo dentro de esta única transformación, busca el encabezado X-Olo-Event-Type en cada webhook. Este encabezado te permite procesar condicionalmente diferentes eventos de Olo.

Integración

Paso 1: Configurar la Transformación de datos de Braze para aceptar el evento de prueba de Olo

En el panel de Braze, ve a Configuración de Datos > Transformación de Datos.

Selecciona Crear transformación para darle un nombre a tu transformación y, a continuación, elige tu experiencia de edición.

Detalles de transformación con la opción de elegir "Utilizar una plantilla" o "Empezar de cero" para tu experiencia de edición.

Selecciona Utilizar una plantilla para examinar una biblioteca de plantillas, incluidos los casos de uso de Transformación de datos. O bien, selecciona Empezar de cero para cargar una plantilla de código predeterminada.

Si empiezas de cero, elige un destino para tu transformación. Todavía puedes insertar una plantilla de código de la biblioteca de plantillas.

More on destinations
  • POST: Seguimiento de usuarios: Transforma los webhooks de una plataforma de origen en actualizaciones del perfil de usuario, como atributos, eventos o compras.
  • PUT: Actualiza varios elementos del catálogo: Transforma los webhooks de una plataforma de origen en actualizaciones de elementos del catálogo.
  • DELETE: Eliminar varios elementos del catálogo: Transforma los webhooks de una plataforma de origen en eliminaciones de elementos del catálogo.
  • PATCH: Edita varios elementos del catálogo: Transforma los webhooks de una plataforma de origen en ediciones de elementos del catálogo.
  • POST: Envía mensajes inmediatamente solo a través de la API: Transforma webhooks de una plataforma de origen para enviar mensajes inmediatos a usuarios designados.

Después de crear tu transformación, verás la vista detallada de la transformación. Aquí, puedes ver el webhook más reciente recibido para esta transformación en Detalles del webhook y un espacio para escribir tu código de transformación en Código de transformación.

Captura la URL de tu webhook para utilizarla en el siguiente paso.

Paso 2: Configurar los webhooks de Olo

Utiliza la herramienta de webhooks de autoservicio del dashboard de Olo para configurar webhooks y enviarlos a tu Transformación de datos.

  1. Elige qué eventos deben enviarse a Braze
  2. Configura la URL de destino. Esta será la URL de Transformación de datos creada en el paso 1.
  1. Verifica que el webhook está configurado correctamente enviando un evento de prueba a tu Transformación de datos. Solo los usuarios del dashboard de Olo con el permiso de herramientas para desarrolladores pueden enviar eventos de prueba.

Olo requiere una respuesta exitosa del webhook de evento de prueba antes de que puedas completar el proceso de configuración del webhook de Olo.

Paso 3: Escribir código de transformación para aceptar los eventos de Olo elegidos

En este paso, transformarás la carga útil del webhook que se enviará desde la plataforma de origen en un valor de retorno de objeto JavaScript.

  1. Envía una solicitud a tu URL de Transformación de datos con una carga útil de ejemplo de un evento de Olo que pretendas admitir. Consulta el formato del cuerpo de la solicitud para obtener ayuda sobre el formato de tu solicitud.
  2. Actualiza tu Transformación de datos y asegúrate de que puedes ver la carga útil del evento de ejemplo en los Detalles del webhook.
  3. Actualiza tu código de Transformación de datos para que sea compatible con los eventos de Olo elegidos.
  4. Haz clic en Validate para obtener una vista previa de la salida de tu código y comprobar si se trata de una solicitud /users/track aceptable.
  5. Guarda y activa tu Transformación de datos.

Formato del cuerpo de la solicitud

Este valor de retorno debe ajustarse al formato del cuerpo de la solicitud /users/track de Braze:

  • El código de transformación se acepta en el lenguaje de programación JavaScript. Se admite cualquier flujo de control estándar de JavaScript, como la lógica if/else.
  • El código de transformación accede al cuerpo de la solicitud del webhook a través de la variable payload. Esta variable es un objeto poblado por el análisis del cuerpo de la solicitud JSON.
  • Se admite cualquier característica de nuestro punto de conexión /users/track, incluidos:
    • Objetos de atributos de usuario, objetos de evento y objetos de compra
    • Atributos anidados y propiedades anidadas de eventos personalizados
    • Actualizaciones de grupos de suscripción
    • Dirección de correo electrónico como identificador

Ejemplo de Transformaciones de datos para webhooks de Olo

Esta sección contiene plantillas de ejemplo que pueden utilizarse como punto de partida. Siéntete libre de empezar desde cero o de eliminar componentes específicos como mejor te parezca.

En cada plantilla, el código define una variable, brazecall, para construir una solicitud /users/track.

Después de asignar la solicitud /users/track a brazecall, devolverás explícitamente brazecall para crear una salida.

Transformación de un solo evento

Si solo quieres admitir un único evento de Olo, no necesitarás utilizar el encabezado X-Olo-Event-Type para crear condicionalmente la carga útil de solicitud /users/track. Por ejemplo, registrar un evento de compra o un evento personalizado en el perfil del usuario cuando se envía un webhook de Olo Order Placed a Braze.

Registrar cada producto como una compra

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;

Registrar un evento personalizado

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;

Transformación multievento

Olo envía el tipo de evento dentro del encabezado X-Olo-Event-Type de cada webhook. Para admitir varios eventos de webhook de Olo en una única transformación, utiliza lógica condicional para transformar la carga útil del webhook en función del valor de este tipo de encabezado.

En el siguiente ejemplo de transformación, nuestro JavaScript crea una carga útil particular para los eventos de UserSignedUp y OrderPlaced. Además, una condición else gestiona una carga útil para cualquier evento de Olo enviado a Braze sin el encabezado X-Olo-Event-Type de UserSignedUp y OrderPlaced.

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;

Paso 4: Publica tu webhook de Olo

Después de haber activado tu Transformación de datos en Braze, utiliza la herramienta de webhooks de autoservicio en el dashboard de Olo para publicar tu webhook. Cuando el webhook se publique, la Transformación de datos comenzará a recibir mensajes de eventos de webhook de Olo.

Lo que debes saber

Reintentos

Olo reintentará las llamadas de webhook que resulten en un código de estado de respuesta HTTP 429 - Too Many Requests o en el rango 5xx (por ejemplo, debido a un tiempo de espera de la puerta de enlace o a un error del servidor), hasta 50 veces en un periodo de 24 horas antes de abandonar la solicitud.

Entrega de al menos una vez

Si una llamada de webhook resulta en un código de estado de respuesta HTTP 429 - Too Many Requests o en el rango 5xx (por ejemplo, debido a un tiempo de espera de la puerta de enlace o a un error del servidor), Olo reintentará el mensaje hasta 50 veces en un periodo de 24 horas antes de desistir.

Por lo tanto, un suscriptor puede recibir los webhooks varias veces. Depende del suscriptor ignorar los duplicados comprobando el encabezado X-Olo-Message-Id.

New Stuff!