PassKit
PassKit te habilita para ampliar tu alcance móvil integrando pases de Apple Wallet y Google Pay en la experiencia de tus clientes. Cree, gestione, distribuya y analice fácilmente el rendimiento de cupones digitales, tarjetas de fidelización, carnés de socio, entradas y mucho más; sin que sus clientes necesiten otra aplicación.
Esta integración está mantenida por Passkit.
Sobre la integración
La integración de Braze y PassKit le permite aumentar y medir el compromiso de sus campañas en línea mediante la entrega instantánea de pases personalizados de Apple Wallet y Google Pay. A continuación, puede analizar el uso y realizar ajustes en tiempo real para aumentar el tráfico en la tienda activando mensajes basados en la ubicación y actualizaciones personalizadas y dinámicas en el monedero móvil del cliente.
Requisitos previos
Requisito | Descripción |
---|---|
Cuenta PassKit | Necesitarás tener una cuenta PassKit y un administrador de cuentas PassKit. |
userDefinedID |
Para actualizar adecuadamente los eventos personalizados y los atributos personalizados de sus usuarios entre PassKit y Braze, deberá establecer el ID externo de Braze como userDefinedID . Este userDefinedID se utilizará cuando se hagan llamadas API a los puntos finales de PassKit. |
Clave REST API de Braze | Una clave de API REST de Braze con permisos users.track . Puede crearse en el panel Braze desde Configuración > Claves API. |
Punto final REST Braze | La URL de su punto final REST. Tu punto final dependerá de la URL Braze de tu instancia. |
Integración
Para enriquecer aún más la experiencia de tus clientes con el monedero móvil, desde tu panel PassKit puedes optar por pasar datos a Braze a través del punto final Braze /users/track
.
Ejemplos de datos para compartir de PassKit incluyen:
- Pase creado: cuando un cliente hace clic en un enlace de pase y se le muestra por primera vez un pase.
- Instalación del pase: cuando el cliente añade y guarda el pase en su aplicación monedero.
- Actualizaciones de pases: cuando se actualiza un pase.
- Eliminación del pase: cuando un cliente elimina el pase de su aplicación monedero.
Una vez introducidos los datos en Braze, puede crear audiencias, personalizar el contenido mediante Liquid y activar campañas o Canvases después de que se hayan realizado estas acciones.
Conectar Passkit a Braze
Para pasar datos desde PassKit, asegúrese de que ha configurado su ID externo Braze como externalId
de PassKit.
- Dentro de Ajustes, en Integraciones en su proyecto o programa PassKit pass haga clic en Conectar en la pestaña Braze.
- Introduce tu clave de API Braze, la URL del punto final y un nombre para tu conector.
- Active Activar integración y los eventos que desee en Braze para activar o personalizar sus mensajes.
Crear pase utilizando un enlace SmartPass
Dentro de Braze, puedes configurar un enlace SmartPass para generar una URL única para que tus clientes instalen su pase en Android o iOS. Para ello, debe definir una carga útil de datos SmartPass cifrada que se pueda llamar desde un bloque de contenido Braze. Este bloque de contenido puede reutilizarse para futuros pases y cupones. Durante su integración se utilizará lo siguiente:
- URL PassKit: Tu URL PassKit es una URL única para tu programa PassKit.
Cada programa tiene una URL única, y puede encontrarla en la pestaña Distribución de su programa o proyecto PassKit. (por ejemplo, https://pub1.pskt.io/c/ww0jir) - Secreto PassKit: Junto con la URL, necesitarás tener a mano la Clave PassKit de este programa.
Se encuentra en la misma página que la URL de tu PassKit. - ID del programa (o proyecto): Tu ID del Programa PassKit será necesario para crear la URL del SmartPass.
Puede encontrarlo en la pestaña Configuración de su proyecto o programa.
Para más información sobre la creación de enlaces SmartPass encriptados, consulta este artículo de PassKit.
Paso 1: Define la carga útil de los datos de tu pase
En primer lugar, debe definir la carga útil del cupón o del miembro.
Hay muchos componentes diferentes que puede incluir en su carga útil, pero aquí como dos importantes a tener en cuenta:
Componente | Obligatoria | Tipo | Descripción |
---|---|---|---|
person.externalId |
Obligatoria | Cadena | Establecido como el ID externo de Braze, es crucial para que funcionen las devoluciones de llamada de PassKit a Braze, permitiendo a los usuarios de Braze tener cupones para múltiples ofertas en una campaña. No se aplica como único. |
members.member.externalId |
Opcional | Cadena | Establecido como ID externo de Braze, puedes utilizar tu ID externo para actualizar el pase de socio. La configuración de este campo hace que el usuario sea único dentro del programa de afiliación. |
Para obtener una lista completa de los campos disponibles, sus tipos y descripciones útiles, echa un vistazo a la documentación de PassKit en GitHub.
Ejemplo de carga útil
1
2
3
4
5
6
7
8
{
"members.member.externalId": "{{${user_id}}}",
"members.member.points": "100",
"members.tier.name": "current_customer",
"person.displayName": "{{${first_name}}} {{${last_name}}}",
"person.externalId": "{{${user_id}}}",
"universal.expiryDate": "{{ "now" | date: "%s" | plus: 31622400 | date: "%FT%TZ" }}"
}
Paso 2: Crear y codificar una variable de carga útil indefinida
Para crear y nombrar un nuevo bloque de contenido, vaya a Plantillas > Bloques de contenido en el panel de control de Braze.
Seleccione Crear bloque de contenido para empezar.
A continuación, debe definir su Etiqueta líquida de bloque de contenido. Después de guardar este bloque de contenido, se puede hacer referencia a esta etiqueta Liquid al redactar mensajes. En este ejemplo, hemos asignado la etiqueta de Liquid como {{content_blocks.${passKit_SmartPass_url}}}
.
Dentro de este bloque de contenido, no incluiremos directamente la carga útil, sino que la referenciaremos en una variable {{passData}}
. El primer fragmento de código que debe añadir a su bloque de contenido captura una codificación Base64 de la variable {{passData}}
.
1
{% capture base64JsonPayload %}{{passDatapassData|base64_encode}}{% endcapture %}
Paso 3: Crea tu firma de encriptación utilizando un hash SHA1 HMAC
A continuación, crearás tu firma de encriptación utilizando un hash SHA1 HMAC de la URL del proyecto y de la carga útil.
El segundo fragmento de código que debe añadir a su bloque de contenido captura la URL que se utilizará para el hash.
1
{% capture url %}{{projectUrl}}?data={{base64JsonPayload}}{% endcapture %}
A continuación, debes generar una firma utilizando este hash y tu Project Secret
. Esto puede hacerse incluyendo un tercer fragmento de código:
1
{% capture sig %}{{url | hmac_sha1: "Project_Secret"}}{% endcapture %}
Por último, añada la firma a la URL completa utilizando el quinto fragmento de código:
1
{% capture longURL %}{{projectUrl}}?data={{base64JsonPayload}}&sig={{sig}}{% endcapture %}
Paso 4: Imprime tu URL
Por último, asegúrate de llamar a tu URL final para que imprima la URL de tu SmartPass dentro de tu mensaje.
1
{{longURL}}
Llegados a este punto, habrá creado un Bloque de Contenido con el siguiente aspecto:
1
2
3
4
5
6
7
8
9
{% capture base64JsonPayload %}{{passData|base64_encode}}{% endcapture %}
{% capture url %}{{projectUrl}}?data={{base64JsonPayload}}{% endcapture %}
{% capture sig %}{{url | hmac_sha1: "Project_Secret"}}{% endcapture %}
{% capture longURL %}{{projectUrl}}?data={{base64JsonPayload}}&sig={{sig}}&utm_source=braze&utm_campaign={{campaign.${name}}}{% endcapture %}{% capture longURL %}{{longURL | url_encode}}{% endcapture %}
{{longURL}}
En este ejemplo, se han añadido parámetros UTM para rastrear el origen de estas instalaciones hasta Braze y esta campaña.
Recuerde guardar su Bloque de Contenido antes de salir de la página.
Paso 5: Ponerlo todo junto
Una vez realizado este Bloque de contenido, se puede reutilizar de nuevo en el futuro.
Puede observar que hay dos variables sin definir en el bloque de contenido de ejemplo.
{{passData}}
- Su carga útil de datos de paso JSON definida en el paso 1
{{projectUrl}}
- La URL de tu proyecto o programa que encontrarás en la pestaña de distribución de tu proyecto Passkit.
Esta decisión es intencionada y favorece la reutilización del Bloque de Contenidos. Dado que estas variables sólo se referencian, no se crean dentro del bloque de contenido, estas variables pueden cambiar sin tener que rehacer el bloque de contenido.
Por ejemplo, quizá quieras cambiar la oferta introductoria para incluir más puntos iniciales en tu programa de fidelización, o quizá quieras crear una tarjeta de socio secundaria o un cupón. Estos escenarios requerirían diferentes Passkit projectURLs
o diferentes cargas útiles de paso, que definirías por campaña en Braze.
Componer el cuerpo del mensaje
Querrá capturar ambas variables en el cuerpo del mensaje y luego llamar a su Bloque de Contenido. Captura la carga útil JSON minificada del paso 1:
Asignar la URL del proyecto
1
{% assign projectUrl = "https://pub1.pskt.io/c/ww0jir" %}
Captura el JSON
1
{% capture passData %}{"members.member.externalId": "{{${user_id}}}","members.member.points": "100","members.tier.name": "current_customer","person.displayName": "{{${first_name}}} {{${last_name}}}","person.externalId": "{{${user_id}}}","universal.expiryDate": "{{ "now" | date: "%s" | plus: 31622400 | date: "%FT%TZ" }}"}{% endcapture %}
Haga referencia al bloque de contenido que acaba de crear
1
{{content_block.${passkit_SmartPass_url}}}
El cuerpo del mensaje debe ser similar al siguiente
La URL de salida de la muestra es:
La URL de salida será larga. La razón es que contiene todos los datos de paso e incorpora la mejor seguridad de su clase para garantizar la integridad de los datos y que no se alteren mediante la modificación de la URL. Si utilizas SMS para distribuir esta URL, tal vez quieras pasarla por un proceso de acortamiento de enlaces como bit.ly. Esto puede hacerse mediante una llamada de Contenido conectado a un punto final de bit.ly.
Actualiza el pase utilizando el webhook PassKit
Dentro de Braze, puede configurar una campaña de webhook o un webhook dentro de un Canvas para actualizar un pase existente basado en el comportamiento de su usuario. Consulta los siguientes enlaces para obtener información sobre puntos finales PassKit útiles.
Parámetros de la carga útil
Antes de empezar, aquí están los parámetros de carga útil JSON comunes que puede incluir dentro de sus webhooks de creación y actualización a PassKit.
Datos | Tipo | Descripción |
---|---|---|
externalId |
Cadena | Permite añadir un Id único al registro de pases para proporcionar compatibilidad con un sistema existente que utilice identificadores de cliente únicos (por ejemplo, números de socio). Puedes recuperar los datos del pase utilizando este punto final a través de userDefinedId y campaignName en lugar del ID del pase. Este valor debe ser único dentro de una campaña y, una vez establecido, no puede modificarse.Para la integración con Braze, te recomendamos que utilices el ID externo de Braze: {{${user_id}}} |
campaignId (cupón) programId (afiliación) |
Cadena | El ID de la plantilla de campaña o programa que creó en PassKit. Para ello, dirígete a la pestaña Configuración de tu proyecto PassKit pass. |
expiryDate |
IO8601 fecha y hora | La fecha de caducidad del pase. Después de la fecha de caducidad, el pase se anula automáticamente (consulta isVoided ). Este valor anulará el valor de la plantilla y de la fecha de finalización de la campaña. |
status |
Cadena | El estado actual de un cupón, como REDEEMED o UNREDEEMED . |
Paso 1: Cree su plantilla de webhook Braze
Para crear una plantilla de webhook PassKit y utilizarla en futuras campañas o lienzos, vaya a la sección Plantillas y medios del panel de control de Braze. Si desea crear una campaña única de webhook PassKit o utilizar una plantilla existente, seleccione Webhook en Braze al crear una nueva campaña.
Una vez que haya seleccionado la plantilla de webhook PassKit, debería ver lo siguiente:
- URL del webhook:
https://api-pub1.passkit.io/coupon/singleUse/coupon
- Cuerpo de la solicitud: Texto sin procesar
Encabezados de solicitud y método
PassKit requiere un HTTP Header
para la autorización que incluya tu clave de API de PassKit codificada en base 64. Lo siguiente ya estará incluido dentro de la plantilla como un par clave-valor, pero en la pestaña Configuración, debe sustituir el <PASSKIT_LONG_LIVED_TOKEN>
por su token PassKit. Para recuperar tu token, navega a tu proyecto/programa PassKit, ve a Configuración > Integraciones > Token de larga duración.
- Método HTTP: PUT
- Encabezado de solicitud:
- Autorización: Portador
<PASSKIT_LONG_LIVED_TOKEN>
- Content-Type: application/json
- Autorización: Portador
Cuerpo de la solicitud
Para configurar el webhook, rellene los detalles del nuevo evento en el cuerpo de la solicitud, incluidos los parámetros de carga útil necesarios para su caso de uso:
1
2
3
4
5
{
"externalId": "{{${user_id}}}",
"campaignId": " 2xa1lRy8dBz4eEElBfmIz8",
"expiryDate": "2020-05-10T00:00:00Z"
}
Paso 2: Vista previa de su solicitud
El texto en bruto se resaltará automáticamente si se trata de una etiqueta Braze aplicable.
Previsualiza tu solicitud en el panel de Previsualización o navega a la pestaña de Prueba, donde puedes seleccionar un usuario al azar, un usuario existente, o personalizar el tuyo propio para probar tu webhook.
Recuerda guardar tu plantilla antes de salir de la página.
Las plantillas webhook actualizadas pueden encontrarse en la lista Plantillas webhook guardadas al crear una nueva campaña webhook.
Recuperar detalles del pase a través de Contenido conectado
Además de crear y actualizar pases, también puedes recuperar los metadatos de los pases de tus usuarios mediante el contenido conectado de Braze para incorporar detalles personalizados de los pases en tus campañas de mensajería.
Llamada al contenido conectado de PassKit
1
2
3
{% connected_content https://api-pub1.passkit.io/coupon/singleUse/coupon/externalId/{{${user_id}}} :headers {"Authorization": "Bearer <PASSKIT_LONG_LIVED_TOKEN>","Content-Type": "application/json"} :save passes %}
{{passes.status}}
Ejemplo de respuestas de Liquid
1
2
3
4
5
6
7
8
9
10
11
{
"redemptionDate": null,
"redemptionCode": "",
"lat": 0,
"lon": 0,
"alt": 0,
"redemptionSource": "",
"redemptionReference": "",
"transactionReference": "",
"transactionAmount": 0
}
1
UNREDEEMED