Fast Memo's Logo
EN
Language switch to EnglishEnglish (EN)
Language switch to ItalianoItaliano (IT)
Language switch to DeutschDeutsch (DE)
Language switch to FrançaisFrançais (FR)
Language switch to EspañolEspañol (ES)
Language switch to 中国人中国人 (CH)
Language switch to 日本語日本語 (JA)

Webhooks Guide

Automate your workflow by connecting Fast Memo to external services. Receive real-time notifications when notes, categories, or data change.

What Are Webhooks?

Webhooks in Fast Memo are outbound HTTP POST notifications sent to URLs you configure. When a specific event occurs in the app (like creating a note or deleting a category), Fast Memo sends a JSON payload to your endpoint with details about what happened.

  • HTTP POST Requests

    Every webhook sends a JSON payload via HTTP POST to the URL you provide. No authentication headers are required on your end.

  • 14 Available Triggers

    Choose from 14 different events: note creation, updates, deletion, category changes, data import/export, and more.

  • IoT & Automation

    Connect Fast Memo to services like IFTTT, Zapier, n8n, Home Assistant, or your own server to build custom automations.

How to Set Up

  1. Open Settings

    Go to Settings in Fast Memo and find the Webhooks option under the Advanced section.

  2. Choose a trigger

    You will see a list of all 14 available triggers. Each one can be configured independently with its own URL.

  3. Enter a URL and enable it

    Type the URL of your endpoint in the text field. Then enable the trigger by tapping the checkbox. The POST label confirms the HTTP method.

  4. Done — it fires automatically

    Every time the corresponding event happens in the app, Fast Memo will send a POST request to your URL with a JSON body describing the event.

Available Triggers

Each trigger has its own URL and enabled/disabled toggle. You can configure as many or as few as you need.

TriggerCategoryAction
Add Text NoteNotesnote/addTextNote
Add Todo NoteNotesnote/addTodoNote
Add Kanban NoteNotesnote/addKanbanNote
Add Code NoteNotesnote/addCodeNote
Update NoteNotesnote/updateNote
Temporary DeleteNotesnote/temporaryDeleteNote
Delete NoteNotesnote/deleteNote
Restore NoteNotesnote/restoreNote
Create CategoryCategoriescategory/createCategory
Update CategoryCategoriescategory/updateCategory
Delete CategoryCategoriescategory/deleteCategory
Export DataDatageneric/export
Import DataDatageneric/import
Wipe DataDatageneric/wipeData

Payload Reference

Every webhook sends a JSON body via HTTP POST. Below is the exact payload format for each trigger. All payloads include a "success" field set to true and an "action" string.

Note Creation

POST — Add Text Note
{
  "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 — Add Todo Note
{
  "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 — Add Kanban Note
{
  "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 — Add Code Note
{
  "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" }
}

Note Lifecycle

POST — Update Note (single)
{
  "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 — Update Note (bulk)
{
  "success": true,
  "action": "note/updateNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"],
  "property": "important"
}
POST — Temporary Delete (single)
{
  "success": true,
  "action": "note/temporaryDeleteNote",
  "id": "abc123"
}
POST — Temporary Delete (bulk)
{
  "success": true,
  "action": "note/temporaryDeleteNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"]
}
POST — Delete Note (single)
{
  "success": true,
  "action": "note/deleteNote",
  "id": "abc123"
}
POST — Delete Note (bulk)
{
  "success": true,
  "action": "note/deleteNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"]
}
POST — Delete Note (all)
{
  "success": true,
  "action": "note/deleteNote",
  "extra": "all"
}
POST — Restore Note (single)
{
  "success": true,
  "action": "note/restore",
  "id": "abc123"
}
POST — Restore Note (bulk)
{
  "success": true,
  "action": "note/restoreNote",
  "extra": "multiple",
  "ids": ["abc123", "def456"]
}
POST — Restore Note (all)
{
  "success": true,
  "action": "note/restoreNote",
  "extra": "all"
}

Category Operations

POST — Create Category
{
  "success": true,
  "action": "category/createCategory",
  "iconId": "book",
  "name": "Personal"
}
POST — Update Category
{
  "success": true,
  "action": "category/updateCategory",
  "prevCategory": { "iconId": "book", "name": "Personal" },
  "nextCategory": { "iconId": "star", "name": "Favorites" }
}
POST — Delete Category
{
  "success": true,
  "action": "category/deleteCategory",
  "iconId": "book"
}

Data Operations

POST — Export Data
{
  "success": true,
  "action": "generic/export"
}
POST — Import Data
{
  "success": true,
  "action": "generic/import"
}
POST — Wipe Data
{
  "success": true,
  "action": "generic/wipeData",
  "cloud": false
}

Limitations & Notes

  • HTTP method is always POST — it cannot be changed to GET, PUT, or other methods.
  • There is a 5-second timeout per request. If your endpoint does not respond within 5 seconds, the request is dropped.
  • No retries — if a request fails (timeout, network error, non-200 response), it is silently dropped.
  • One URL per trigger — you cannot configure multiple endpoints for the same event.
  • No custom headers or authentication tokens — only standard JSON content-type headers are sent.
  • The feature is in BETA. Payloads and behavior may change in future versions.