Todas las guías
Webhooks

Guía de Webhooks

Automatiza tu flujo de trabajo conectando Fast Memo a servicios externos. Recibe notificaciones en tiempo real cuando las notas, categorias o datos cambien.

  • Publicada el
  • 5 min de lectura

¿Que son los Webhooks?

Los webhooks en Fast Memo son notificaciones HTTP POST salientes enviadas a las URLs que configures. Cuando ocurre un evento especifico en la app, Fast Memo envia un payload JSON a tu endpoint con los detalles de lo que sucedio.

  • Solicitudes HTTP POST

    Cada webhook envia un payload JSON via HTTP POST a la URL que proporciones. No se requieren cabeceras de autenticacion.

  • 14 Triggers Disponibles

    Elige entre 14 eventos diferentes: creacion, actualizacion y eliminacion de notas, cambios de categorias, importacion/exportacion de datos y mas.

  • IoT y Automatizacion

    Conecta Fast Memo a servicios como IFTTT, Zapier, n8n, Home Assistant o tu propio servidor para crear automatizaciones personalizadas.

Como Configurar

  1. Abrir Ajustes

    Ve a Ajustes en Fast Memo y encuentra la opcion Webhooks en la seccion Avanzado.

  2. Elegir un trigger

    Veras una lista de los 14 triggers disponibles. Cada uno se puede configurar independientemente con su propia URL.

  3. Introducir una URL y activarlo

    Escribe la URL de tu endpoint en el campo de texto. Luego activa el trigger tocando la casilla. La etiqueta POST confirma el metodo HTTP.

  4. Listo — se activa automaticamente

    Cada vez que el evento correspondiente ocurra en la app, Fast Memo enviara una solicitud POST a tu URL con un body JSON que describe el evento.

Triggers Disponibles

Cada trigger tiene su propia URL y un toggle de activar/desactivar. Puedes configurar tantos como necesites.

TriggerCategoriaAccion
Agregar Nota de TextoNotasnote/addTextNote
Agregar Nota TodoNotasnote/addTodoNote
Agregar Nota KanbanNotasnote/addKanbanNote
Agregar Nota de CodigoNotasnote/addCodeNote
Actualizar NotaNotasnote/updateNote
Eliminacion TemporalNotasnote/temporaryDeleteNote
Eliminar NotaNotasnote/deleteNote
Restaurar NotaNotasnote/restoreNote
Crear CategoriaCategoriascategory/createCategory
Actualizar CategoriaCategoriascategory/updateCategory
Eliminar CategoriaCategoriascategory/deleteCategory
Exportar DatosDatosgeneric/export
Importar DatosDatosgeneric/import
Borrar DatosDatosgeneric/wipeData

Referencia de Payloads

Cada webhook envia un body JSON via HTTP POST. A continuacion el formato exacto del payload para cada trigger. Todos incluyen un campo "success" en true y una cadena "action".

Creacion de Notas

POST — Agregar Nota de Texto
{
  "success": true,
  "action": "note/addTextNote",
  "id": "abc123",
  "type": "text",
  "title": "My Note",
  "text": "<p>Hello world</p>",
  "createdAt": 1713700000,
  "updatedAt": 1713700000,
  "important": false,
  "readOnly": false,
  "hidden": false,
  "locked": false,
  "category": { "iconId": "book", "name": "Personal" }
}
POST — Agregar Nota Todo
{
  "success": true,
  "action": "note/addTodoNote",
  "id": "abc123",
  "type": "todo",
  "title": "Shopping List",
  "list": [
    { "id": "item1", "text": "Buy milk", "checked": false },
    { "id": "item2", "text": "Buy eggs", "checked": true }
  ],
  "createdAt": 1713700000,
  "updatedAt": 1713700000,
  "important": false,
  "readOnly": false,
  "hidden": false,
  "locked": false,
  "category": { "iconId": "cart", "name": "Shopping" }
}
POST — Agregar Nota Kanban
{
  "success": true,
  "action": "note/addKanbanNote",
  "id": "abc123",
  "type": "kanban",
  "title": "Sprint Board",
  "columns": [
    {
      "id": "col1",
      "title": "To Do",
      "cards": [
        { "id": "card1", "text": "Design UI" }
      ]
    },
    {
      "id": "col2",
      "title": "Done",
      "cards": []
    }
  ],
  "createdAt": 1713700000,
  "updatedAt": 1713700000,
  "important": false,
  "readOnly": false,
  "hidden": false,
  "locked": false,
  "category": { "iconId": "briefcase", "name": "Work" }
}
POST — Agregar Nota de Codigo
{
  "success": true,
  "action": "note/addCodeNote",
  "id": "abc123",
  "type": "code",
  "title": "API Handler",
  "tabs": [
    {
      "id": "tab1",
      "title": "index.ts",
      "code": "console.log('hello')",
      "language": "typescript"
    }
  ],
  "activeTabId": "tab1",
  "createdAt": 1713700000,
  "updatedAt": 1713700000,
  "important": false,
  "readOnly": false,
  "hidden": false,
  "locked": false,
  "category": { "iconId": "code", "name": "Dev" }
}

Ciclo de Vida de Notas

POST — Actualizar Nota (individual)
{
  "success": true,
  "action": "note/updateNote",
  "id": "abc123",
  "type": "text",
  "title": "Updated Note",
  "text": "<p>New content</p>",
  "createdAt": 1713700000,
  "updatedAt": 1713800000,
  "important": true,
  "readOnly": false,
  "hidden": false,
  "locked": false,
  "category": { "iconId": "book", "name": "Personal" }
}
POST — Actualizar Nota (masiva)
{
  "success": true,
  "action": "note/updateNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"],
  "property": "important"
}
POST — Eliminacion Temporal (individual)
{
  "success": true,
  "action": "note/temporaryDeleteNote",
  "id": "abc123"
}
POST — Eliminacion Temporal (masiva)
{
  "success": true,
  "action": "note/temporaryDeleteNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"]
}
POST — Eliminar Nota (individual)
{
  "success": true,
  "action": "note/deleteNote",
  "id": "abc123"
}
POST — Eliminar Nota (masiva)
{
  "success": true,
  "action": "note/deleteNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"]
}
POST — Eliminar Nota (todas)
{
  "success": true,
  "action": "note/deleteNote",
  "extra": "all"
}
POST — Restaurar Nota (individual)
{
  "success": true,
  "action": "note/restore",
  "id": "abc123"
}
POST — Restaurar Nota (masiva)
{
  "success": true,
  "action": "note/restoreNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"]
}
POST — Restaurar Nota (todas)
{
  "success": true,
  "action": "note/restoreNote",
  "extra": "all"
}

Operaciones de Categorias

POST — Crear Categoria
{
  "success": true,
  "action": "category/createCategory",
  "iconId": "book",
  "name": "Personal"
}
POST — Actualizar Categoria
{
  "success": true,
  "action": "category/updateCategory",
  "prevCategory": { "iconId": "book", "name": "Personal" },
  "nextCategory": { "iconId": "star", "name": "Favorites" }
}
POST — Eliminar Categoria
{
  "success": true,
  "action": "category/deleteCategory",
  "iconId": "book"
}

Operaciones de Datos

POST — Exportar Datos
{
  "success": true,
  "action": "generic/export"
}
POST — Importar Datos
{
  "success": true,
  "action": "generic/import"
}
POST — Borrar Datos
{
  "success": true,
  "action": "generic/wipeData",
  "cloud": false
}

Limitaciones y Notas

  • El metodo HTTP siempre es POST — no se puede cambiar a GET, PUT u otros metodos.
  • Hay un timeout de 5 segundos por solicitud. Si tu endpoint no responde en 5 segundos, la solicitud se descarta.
  • Sin reintentos — si una solicitud falla, se descarta silenciosamente.
  • Una URL por trigger — no puedes configurar multiples endpoints para el mismo evento.
  • Sin cabeceras personalizadas ni tokens de autenticacion — solo se envian los headers estandar de JSON content-type.
  • La funcionalidad esta en BETA. Los payloads y el comportamiento pueden cambiar en futuras versiones.