Tutte le guide
Webhook

Guida Webhooks

Automatizza il tuo flusso di lavoro collegando Fast Memo a servizi esterni. Ricevi notifiche in tempo reale quando note, categorie o dati cambiano.

  • Pubblicata il
  • 5 min di lettura

Cosa Sono i Webhooks?

I webhooks in Fast Memo sono notifiche HTTP POST in uscita inviate agli URL che configuri. Quando un evento specifico avviene nell'app (come creare una nota o eliminare una categoria), Fast Memo invia un payload JSON al tuo endpoint con i dettagli di ciò che è successo.

  • Richieste HTTP POST

    Ogni webhook invia un payload JSON tramite HTTP POST all'URL che fornisci. Non sono richiesti header di autenticazione.

  • 14 Trigger Disponibili

    Scegli tra 14 eventi diversi: creazione, aggiornamento e eliminazione di note, modifiche alle categorie, importazione/esportazione dati e altro.

  • IoT e Automazione

    Collega Fast Memo a servizi come IFTTT, Zapier, n8n, Home Assistant o al tuo server per creare automazioni personalizzate.

Come Configurare

  1. Apri le Impostazioni

    Vai nelle Impostazioni di Fast Memo e trova l'opzione Webhooks nella sezione Avanzate.

  2. Scegli un trigger

    Vedrai un elenco di tutti i 14 trigger disponibili. Ognuno può essere configurato indipendentemente con il proprio URL.

  3. Inserisci un URL e attivalo

    Digita l'URL del tuo endpoint nel campo di testo. Poi attiva il trigger toccando la checkbox. L'etichetta POST conferma il metodo HTTP.

  4. Fatto — si attiva automaticamente

    Ogni volta che l'evento corrispondente avviene nell'app, Fast Memo invierà una richiesta POST al tuo URL con un body JSON che descrive l'evento.

Trigger Disponibili

Ogni trigger ha il proprio URL e un toggle attiva/disattiva. Puoi configurarne quanti ne vuoi.

TriggerCategoriaAzione
Aggiungi Nota TestoNotenote/addTextNote
Aggiungi Nota TodoNotenote/addTodoNote
Aggiungi Nota KanbanNotenote/addKanbanNote
Aggiungi Nota CodiceNotenote/addCodeNote
Aggiorna NotaNotenote/updateNote
Eliminazione TemporaneaNotenote/temporaryDeleteNote
Elimina NotaNotenote/deleteNote
Ripristina NotaNotenote/restoreNote
Crea CategoriaCategoriecategory/createCategory
Aggiorna CategoriaCategoriecategory/updateCategory
Elimina CategoriaCategoriecategory/deleteCategory
Esporta DatiDatigeneric/export
Importa DatiDatigeneric/import
Cancella DatiDatigeneric/wipeData

Riferimento Payload

Ogni webhook invia un body JSON tramite HTTP POST. Di seguito il formato esatto del payload per ogni trigger. Tutti i payload includono un campo "success" impostato su true e una stringa "action".

Creazione Note

POST — Aggiungi Nota Testo
{
  "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 — Aggiungi 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 — Aggiungi 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 — Aggiungi Nota Codice
{
  "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 di Vita Note

POST — Aggiorna Nota (singola)
{
  "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 — Aggiorna Nota (multipla)
{
  "success": true,
  "action": "note/updateNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"],
  "property": "important"
}
POST — Eliminazione Temporanea (singola)
{
  "success": true,
  "action": "note/temporaryDeleteNote",
  "id": "abc123"
}
POST — Eliminazione Temporanea (multipla)
{
  "success": true,
  "action": "note/temporaryDeleteNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"]
}
POST — Elimina Nota (singola)
{
  "success": true,
  "action": "note/deleteNote",
  "id": "abc123"
}
POST — Elimina Nota (multipla)
{
  "success": true,
  "action": "note/deleteNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"]
}
POST — Elimina Nota (tutte)
{
  "success": true,
  "action": "note/deleteNote",
  "extra": "all"
}
POST — Ripristina Nota (singola)
{
  "success": true,
  "action": "note/restore",
  "id": "abc123"
}
POST — Ripristina Nota (multipla)
{
  "success": true,
  "action": "note/restoreNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"]
}
POST — Ripristina Nota (tutte)
{
  "success": true,
  "action": "note/restoreNote",
  "extra": "all"
}

Operazioni Categorie

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

Operazioni Dati

POST — Esporta Dati
{
  "success": true,
  "action": "generic/export"
}
POST — Importa Dati
{
  "success": true,
  "action": "generic/import"
}
POST — Cancella Dati
{
  "success": true,
  "action": "generic/wipeData",
  "cloud": false
}

Limitazioni e Note

  • Il metodo HTTP è sempre POST — non può essere cambiato in GET, PUT o altri metodi.
  • C'è un timeout di 5 secondi per richiesta. Se il tuo endpoint non risponde entro 5 secondi, la richiesta viene scartata.
  • Nessun tentativo di ripetizione — se una richiesta fallisce (timeout, errore di rete, risposta non-200), viene scartata silenziosamente.
  • Un URL per trigger — non puoi configurare più endpoint per lo stesso evento.
  • Nessun header personalizzato o token di autenticazione — vengono inviati solo gli header standard JSON content-type.
  • La funzionalità è in BETA. I payload e il comportamento potrebbero cambiare nelle versioni future.