Webhooks Appcues
Aprenda a utilizar los webhooks Appcues para enviar datos de eventos Appcues en tiempo real a otra herramienta.
¿Qué son los webhooks?
Los webhooks son una forma sencilla de que dos aplicaciones se comuniquen entre sí mediante protocolos HTTP web estándar. Cuando ocurre un evento en la aplicación A, se envía un mensaje estándar a una URL administrada por la aplicación B. A diferencia de la aplicación B, que utiliza la API de la aplicación A para extraer periódicamente información por lotes sobre los eventos que ocurren en ella, con los webhooks, la aplicación A envía cada evento individual en tiempo real a la aplicación B en cuanto ocurre.
En el contexto de esta función, puede suscribirse a uno o más eventos principales Appcues y enviar información sobre dicho evento a una herramienta diferente de su elección en cuanto ocurra. La herramienta podría ser un servicio de terceros, su propia aplicación web o su propia base de datos, por ejemplo.
Casos de uso
Los webhooks permiten crear integraciones sencillas entre cualquier aplicación que pueda enviar mensajes de webhooks y cualquier aplicación que pueda recibirlos. Los webhooks son un patrón común en las aplicaciones web actuales, por lo que existen muchas posibilidades. Aquí tienes algunas:
- Supervisión del equipo de operaciones: cada vez que un usuario completa una lista de verificación de incorporación, agrega una fila a una hoja de Google que mi equipo de operaciones supervisa.
- Fuentes de actividad de CRM : cuando un usuario responde una encuesta NPS Appcues , envíe su puntuación y comentario a su fuente de actividad en su CRM, para automatizar el seguimiento.
- Incorpore eventos a sus herramientas de análisis : agregue eventos de flujo iniciado y completado a su plataforma de análisis de terceros, bases de datos internas o herramientas de panel, para realizar más análisis de embudo sobre los tipos de eventos que los usuarios realizan en su producto después de completar los flujos Appcues .
- Seguimiento por correo electrónico : activa un correo electrónico de seguimiento cuando un usuario omite un flujo de bienvenida, para brindarle el mismo contenido en un correo electrónico para que el usuario lo lea más tarde.
- Alerta de chat de equipo : cuando un usuario completa un flujo de comentarios para una nueva función, envía un texto de comentarios al canal de Microsoft Teams de tu equipo de producto.
Suscripciones a eventos compatibles
Los webhooks Appcues se pueden configurar para activar los siguientes eventos:
- Puntuación NPS
- Comentarios NPS
- Flujo web completado
- Flujo web iniciado
- Botón de flujo web hecho clic
- Formulario de flujo web enviado
- Flujo web omitido
- Elemento de la lista de verificación completado
- Lista de verificación completada
- Lista de verificación omitida
- Lista de verificación mostrada
- Se inició el flujo móvil
- Pin interactuado
Creando un webhook
Vaya a la página Integraciones y haga clic en la tarjeta Webhooks para ir a la página de administración:


(Nota: Los webhooks solo pueden ser creados y editados por usuarios con permisos de administrador ).
Los webhooks solo necesitan unos pocos datos para habilitar y comenzar a enviar información de eventos. Puede configurar un webhook para que se active cada vez que ocurran determinados eventos:

O puedes filtrar aún más el webhook para que se active solo cuando ocurran determinados eventos en ciertos flujos y otros experimentos:

Seguridad de webhooks
Cuando una configuración de webhook en Appcues incluye una clave secreta de cuenta , el mensaje de evento incluirá dos encabezados HTTP de seguridad: X-Apc-Signature y X-Apc-Timestamp . Por ejemplo:

Firma X-Apc: Puede usar este valor para verificar que el mensaje le fue enviado por Appcues y no por un tercero. Así es como se genera este valor:
- Se crea una cadena combinando la marca de tiempo del sistema en el momento de la operación y el cuerpo del mensaje del webhook: timestamp:body
- La cadena anterior está cifrada utilizando la clave secreta de la cuenta y el cifrado SHA256.
X-Apc-Timestamp: puede utilizar este valor para verificar un ataque de repetición , ya que la marca de tiempo correcta es parte de la generación de X-Apc-Signature.
Ejemplos de carga útil
Puntuación NPS
{
"account_id": "94742",
"attributes": {
"_prev_nps_score": null,
"_prev_nps_score_time": null,
"flowId": "c32fb928-7a1a-4feb-8993-696aa68fe5fb",
"flowName": "NPS Survey",
"flowType": "satisfaction-survey",
"flowVersion": 1664820161117,
"localeId": "default",
"localeName": "default",
"score": 10,
"sessionId": 1670422599749
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "7ed17098-dcb0-4602-a9d7-8e7605577f19",
"ingested_at": 1684439316408,
"name": "appcues:nps_score",
"source": null,
"timestamp": 1684439316293,
"user_id": "anon:a24a871a-74f2-450e-b079-95672ac6ba52"
}
Comentarios NPS
{
"account_id": "94742",
"attributes": {
"feedback": "great stuff",
"flowId": "c32fb928-7a1a-4feb-8993-696aa68fe5fb",
"flowName": "NPS Survey",
"flowType": "satisfaction-survey",
"flowVersion": 1664820161117,
"localeId": "default",
"localeName": "default",
"sessionId": 1670422599749
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "7ed17098-dcb0-4602-a9d7-8e7605577f19",
"ingested_at": 1684439316408,
"name": "appcues:nps_score",
"source": null,
"timestamp": 1684439316293,
"user_id": "anon:a24a871a-74f2-450e-b079-95672ac6ba52"
}
Flujo web completado
{
"account_id": "94742",
"attributes": {
"flowId": "daf26add-b4ec-466e-92a7-349defcd55fa",
"flowName": "Modal Test",
"flowType": "journey",
"flowVersion": 1684507357284,
"sessionId": 1684868248856
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "7e691fdc-842a-4b39-9288-3bfa76084b75",
"ingested_at": 1684868251991,
"name": "appcues:flow_completed",
"timestamp": 1684868251905,
"user_id": "anon:1c499266-100c-477a-93cb-025fe02a9589"
}
Flujo web iniciado
{
"account_id": "94742",
"attributes": {
"flowId": "daf26add-b4ec-466e-92a7-349defcd55fa",
"flowName": "Modal Test",
"flowType": "journey",
"flowVersion": 1684507357284,
"sessionId": 1684867470575
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "0deb801e-d48b-4610-9c8a-bf333b9a5cda",
"ingested_at": 1684867471407,
"name": "appcues:flow_started",
"timestamp": 1684867471283,
"user_id": "anon:7def0d8b-00e9-4a96-9399-67ce2b1252fd"
}
Botón de flujo web hecho clic
{
"account_id": "94742",
"attributes": {
"flowId": "daf26add-b4ec-466e-92a7-349defcd55fa",
"flowName": "Modal Test",
"flowType": "journey",
"flowVersion": 1684507357284,
"interaction": {
"category": "internal",
"destination": "end-flow",
"text": "Next"
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"interactionType": "click",
"sessionId": 1684868063974,
"stepChildId": "fe3e9b79-2e90-488b-a698-7440229820c9",
"stepChildNumber": 0,
"stepId": "69bf781b-a660-43ea-8f2f-7580dfc4eee3",
"stepNumber": 0,
"stepType": "modal"
},
"group_id": null,
"id": "0125feb0-2f14-4f83-a820-b971243c3ebf",
"ingested_at": 1684868069159,
"name": "appcues:step_interacted",
"timestamp": 1684868069070,
"user_id": "anon:1c499266-100c-477a-93cb-025fe02a9589"
}
Formulario de flujo web enviado
{
"account_id": "94742",
"attributes": {
"flowId": "daf26add-b4ec-466e-92a7-349defcd55fa",
"flowName": "Modal Test",
"flowType": "journey",
"flowVersion": 1684507357284,
"interaction": {
"category": "form",
"formId": null,
"response": [
{
"fieldId": "83038f4a-2505-47fb-9092-ec72ca3eb981",
"fieldRequired": false,
"fieldType": "null",
"label": "What's your role at the company?",
"value": "Product Manager"
}
]
},
"interactionType": "submit",
"sessionId": 1684868063974,
"stepChildId": "fe3e9b79-2e90-488b-a698-7440229820c9",
"stepChildNumber": 0,
"stepId": "69bf781b-a660-43ea-8f2f-7580dfc4eee3",
"stepNumber": 0,
"stepType": "modal"
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "0129c911-380b-4554-ab84-0e1cab7919eb",
"ingested_at": 1684868069159,
"name": "appcues:form_submitted",
"timestamp": 1684868069056,
"user_id": "anon:1c499266-100c-477a-93cb-025fe02a9589"
}
Flujo web omitido
{
"account_id": "94742",
"attributes": {
"flowId": "daf26add-b4ec-466e-92a7-349defcd55fa",
"flowName": "Modal Test",
"flowType": "journey",
"flowVersion": 1684507357284,
"sessionId": 1684868368272,
"stepId": "69bf781b-a660-43ea-8f2f-7580dfc4eee3",
"stepNumber": 0
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "e313efaa-a621-4db4-be99-012928c47722",
"ingested_at": 1684868370405,
"name": "appcues:flow_skipped",
"timestamp": 1684868370285,
"user_id": "anon:1c499266-100c-477a-93cb-025fe02a9589"
}
Elemento de la lista de verificación completado
{
"account_id": "94742",
"attributes": {
"checklistId": "cb4f19a2-43a7-42ea-a860-16c9be3cfe43",
"checklistName": "Journeys checklist",
"itemId": "05be3915-7e70-4b2d-ae4b-f3f56b91e061",
"itemIndex": 0,
"itemLabel": "Complete tutorial",
"sessionId": 1684868642856
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "76ccf047-c216-4324-add5-32bf6b780172",
"ingested_at": 1684868643253,
"name": "appcues:checklist_item_completed",
"timestamp": 1684868643142,
"user_id": "anon:1c499266-100c-477a-93cb-025fe02a9589"
}
Lista de verificación completada
{
"account_id": "94742",
"attributes": {
"checklistId": "cb4f19a2-43a7-42ea-a860-16c9be3cfe43",
"checklistName": "Journeys checklist",
"sessionId": 1684868642856
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "21430f65-65ac-48a2-a671-1c9e0ff31c8b",
"ingested_at": 1684868643252,
"name": "appcues:checklist_completed",
"timestamp": 1684868643141,
"user_id": "anon:1c499266-100c-477a-93cb-025fe02a9589"
}
Lista de verificación omitida
{
"account_id": "94742",
"attributes": {
"checklistId": "cb4f19a2-43a7-42ea-a860-16c9be3cfe43",
"checklistName": "Journeys checklist",
"sessionId": 1684441654617
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "6ece7bef-64ac-489d-8ac4-03323af01110",
"ingested_at": 1684441658142,
"name": "appcues:checklist_skipped",
"source": null,
"timestamp": 1684441658013,
"user_id": "anon:061e8c23-a2db-4dad-b538-6dd9932461f8"
}
Lista de verificación mostrada
{
"account_id": "94742",
"attributes": {
"checklistId": "cb4f19a2-43a7-42ea-a860-16c9be3cfe43",
"checklistName": "Journeys checklist",
"sessionId": 1684868642856
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "baef6f24-5e56-4ea6-b064-b65cbb5b00c4",
"ingested_at": 1684868644394,
"name": "appcues:checklist_shown",
"timestamp": 1684868644274,
"user_id": "anon:1c499266-100c-477a-93cb-025fe02a9589"
}
Se inició el flujo móvil
{
"account_id": "94742",
"attributes": {
"experienceId": "5e9e9ab6-4dca-4596-b52d-d59052f96892",
"experienceName": "Mobile Control",
"experienceType": "mobile",
"interactionType": "Button Tapped",
"stepId": "25e1c534-8c6b-47fc-a343-6fb22d179d74",
"stepType": "modal",
"version": 1684442952071
},
"group_id": null,
"id": "bf1baa7e-0c61-4d9d-a437-37bef45566b0",
"ingested_at": 1684869295614,
"name": "appcues:v2:step_interaction",
"timestamp": 1684869287097,
"user_id": "g1j77no"
}
Pin interactuado
{
"account_id": "94742",
"attributes": {
"experienceId": "df38c205-aef4-45e0-91e6-e848b117899c",
"experienceName": "Pin A Condition",
"experienceType": "persistent",
"interactionType": "Button Pin Clicked",
"stepId": "3b188f86-d230-4fbb-8e9f-1133b09f8023",
"stepName": "Pin 1",
"stepType": "button"
},
"context": {
"url": "https://appcues.github.io/flow-testbench/"
},
"group_id": null,
"id": "b0f11cb2-f3d7-4b5b-b70e-80a46ad58a2a",
"ingested_at": 1684869173769,
"name": "appcues:v2:step_interaction",
"timestamp": 1684869172760,
"user_id": "anon:1c499266-100c-477a-93cb-025fe02a9589"
}