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
Open Settings
Go to Settings in Fast Memo and find the Webhooks option under the Advanced section.
Choose a trigger
You will see a list of all 14 available triggers. Each one can be configured independently with its own URL.
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.
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.
| Trigger | Category | Action |
|---|---|---|
| Add Text Note | Notes | note/addTextNote |
| Add Todo Note | Notes | note/addTodoNote |
| Add Kanban Note | Notes | note/addKanbanNote |
| Add Code Note | Notes | note/addCodeNote |
| Update Note | Notes | note/updateNote |
| Temporary Delete | Notes | note/temporaryDeleteNote |
| Delete Note | Notes | note/deleteNote |
| Restore Note | Notes | note/restoreNote |
| Create Category | Categories | category/createCategory |
| Update Category | Categories | category/updateCategory |
| Delete Category | Categories | category/deleteCategory |
| Export Data | Data | generic/export |
| Import Data | Data | generic/import |
| Wipe Data | Data | generic/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
{
"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" }
}{
"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" }
}{
"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" }
}{
"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
{
"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" }
}{
"success": true,
"action": "note/updateNote",
"extra": "multiple",
"ids": ["abc123", "def456"],
"property": "important"
}{
"success": true,
"action": "note/temporaryDeleteNote",
"id": "abc123"
}{
"success": true,
"action": "note/temporaryDeleteNote",
"extra": "multiple",
"ids": ["abc123", "def456"]
}{
"success": true,
"action": "note/deleteNote",
"id": "abc123"
}{
"success": true,
"action": "note/deleteNote",
"extra": "multiple",
"ids": ["abc123", "def456"]
}{
"success": true,
"action": "note/deleteNote",
"extra": "all"
}{
"success": true,
"action": "note/restore",
"id": "abc123"
}{
"success": true,
"action": "note/restoreNote",
"extra": "multiple",
"ids": ["abc123", "def456"]
}{
"success": true,
"action": "note/restoreNote",
"extra": "all"
}Category Operations
{
"success": true,
"action": "category/createCategory",
"iconId": "book",
"name": "Personal"
}{
"success": true,
"action": "category/updateCategory",
"prevCategory": { "iconId": "book", "name": "Personal" },
"nextCategory": { "iconId": "star", "name": "Favorites" }
}{
"success": true,
"action": "category/deleteCategory",
"iconId": "book"
}Data Operations
{
"success": true,
"action": "generic/export"
}{
"success": true,
"action": "generic/import"
}{
"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.