All posts
3 min read

Integrations are in beta

Send stock changes to Slack, Discord, or your own webhook, and read or change stock with an API token.

Daizy can now tell other software when stock changes, and that software can change stock back. Both are in beta, so field names may still change. Integrations are on the Business plan. An owner or admin opens Integrations in the sidebar, where Destinations and API are separate pages.

Destinations

A destination is a place Daizy sends a message after a change. Slack and Discord each use the webhook URL from that app, and the message is one short sentence. A plain webhook is any https address, and Daizy sends JSON. Copy the signing secret when you create one, because every request carries X-Daizy-Signature: sha256=<hex> computed over the raw body.

You choose the events to send. Stock in, stock out, move, set, and item created, updated, or archived. Spreadsheet imports do not send one message per row.

Daizy saves the message with the stock change and sends it a few seconds later. If the destination is down, it retries after about a minute, then about five, then about thirty. After roughly ten failures the destination turns off until you save it again. Send test queues a message without posting stock.

Each webhook body carries an id, a topic such as stock.received, a version, a created_time, and a payload. Use the id to drop a repeat, because messages can arrive out of order.

API tokens

Open API and create a token. Daizy shows the secret once, so copy it then. Send it as Authorization: Bearer <token>. A read token lists items, quantities, and movements. A post stock token stocks in, stocks out, moves, and sets. A create and edit items token adds and changes items. A read contacts token lists and opens contacts. A create and edit contacts token adds, changes, archives, and activates contacts. A read purchases and sales token lists and opens those documents, and a create and edit token creates, updates, finalizes, receives, ships, and cancels them. A token that lacks a scope gets 403. Each token allows about 60 requests a minute, and over that Daizy returns 429.

Stock posts need an Idempotency-Key header. Send the same key within a day and Daizy returns the original movement instead of changing the quantity twice.

GET /api/v1/items?q=&status=active&limit=50
GET /api/v1/items/by-sku/:sku
GET /api/v1/items/:itemId
POST /api/v1/items
PATCH /api/v1/items/:itemId
GET /api/v1/balances?itemId=&locationId=
GET /api/v1/movements?limit=50
GET /api/v1/movements/:movementId
POST /api/v1/stock/receive
POST /api/v1/stock/issue
POST /api/v1/stock/move
POST /api/v1/stock/set

Pass itemId or locationId on a balances call. A stock body uses the same fields as the screen, which are toLocationId or fromLocationId, optional notes and contactId, and lines of an itemId and a quantity. A move needs both locations. A set uses toLocationId and the quantity is the new amount on hand. Creating an item needs a name and a unitId.

Chat clients

The MCP server lets a chat client read and change stock. Point the client at https://<your Daizy host>/mcp and send the same Bearer token. Scopes and the 60 requests a minute limit match the API. Read tools list items, quantities, movements, locations, and units. Contact tools need the contact scopes, and purchase and sale tools need theirs. The stock tools are stock_in, stock_out, stock_move, and stock_set, and each takes an idempotencyKey argument. The same key within a day returns the original movement.

Because this is a beta, tell us what breaks or what is missing. Reply to any update and we will take a look.