Zapier, Make and n8n
Missived has apps for Zapier, Make and n8n: instant triggers on Missived events, and actions to post, react, schedule meetings and more. Any other tool can use webhooks and the API.
Where each app stands
All three are in beta and none is publicly listed yet. They become public listings once Missived is generally available.
| App | How to get it today |
|---|---|
| Zapier | A private app, by invitation. Ask us at [email protected] for the invite link. |
| n8n | A community node package (n8n-nodes-missived) for self-hosted n8n, installed from a package file. Not on npm or n8n Cloud yet. |
| Make | A private custom app. Make lets a private app be used only inside the Make organisation that owns it, so it isn't available to other organisations until it is published at general availability. Until then, use the fallback. |
All three are thin clients of Missived's API and event subscriptions. They can only do what their token can: scopes, channel access and the rule that apps never read direct messages all apply.
Connect an account
Every app asks for the same two things.
| Field | What to put |
|---|---|
| API Token | A personal token (msv_pat_…, from Settings → Developer) or an app token (msv_bot_…, from Org Settings → Integrations → Apps & bots) |
| Server URL / Base URL | Leave it empty (or https://api.missived.com). On your own server, its API address without /v1. It must be https and reachable from the tool. |
The connection test calls GET /v1/me (getMe). See Authentication for tokens and scopes.
Which token?
- A personal token acts as you and sees what you see. Only a personal token can create tasks on your list or schedule meetings.
- An app token posts as the app's bot, with a BOT badge, and is the only kind that can send cards (embeds). It reads messages only in channels the app was added to, or everywhere with
messages:read:all. It never sees email addresses or direct messages, and its meeting and shift lists are empty.
Grant the fewest scopes that work:
| What the step does | Scopes |
|---|---|
| Connect, list orgs | identify |
| Any instant trigger | events:subscribe, and for a personal token the Manage integrations permission (Owners, Admins, or a custom role that grants it); messages:read to get message text |
| Channel pickers, find or list channels | channels:read |
| Create a channel | channels:write (an Owner's or Admin's token) |
| Send, reply, edit, delete messages | messages:write; files:write to attach files |
| Read, search or list messages | messages:read |
| Add or remove a reaction | reactions:write |
| Members, users and custom roles | members:read |
| Assign or remove a custom role | roles:write and members:read (an Owner's or Admin's token, or an app token an Owner or Admin set up) |
| Meetings | meetings:read; scheduling, updating and cancelling meetings:write (personal tokens only) |
| Add / update a dashboard widget | dashboards:write on a personal token (adding also needs Manage integrations and the right to arrange the dashboard), or dashboards:push on an app token added to the dashboard. A connection updates only the widgets it added — see Dashboards |
| Booking triggers, cancel a booking | bookings:read; cancelling bookings:write (personal tokens only — an app token never gets them) |
| Shifts and schedule events | shifts:read |
| Create a task | tasks:write (personal tokens only) |
| Upload / download a file | files:write / messages:read |
Triggers
Each trigger is an event subscription that the app makes when you turn the Zap, scenario or workflow on, and deletes when you turn it off. You'll see it under Org Settings → Integrations → Event subscriptions (Make names them "Make: Watch …").
Each active trigger uses one event subscription, and plans cap them: Free 1, Ministry 5, Creator 5, Business 25. When the cap is reached, turning a trigger on fails with that explanation. n8n's test listeners count too, so stop them when you're done.
| Trigger | Event | Zapier | Make | n8n |
|---|---|---|---|---|
| New message | message.created |
yes | yes | any event |
| Message edited | message.updated |
yes | yes | any event |
| New reaction | reaction.added |
yes | yes | any event |
| New member | member.joined |
yes | yes | any event |
| Member role changed | member.role_changed |
yes | yes | any event |
| Custom role given / taken away | member.role_assigned / member.role_removed |
yes | yes | any event |
| Member left | member.left |
yes | any event | |
| New channel | channel.created |
yes | yes | any event |
| Meeting scheduled / cancelled | meeting.scheduled / meeting.cancelled |
yes | yes | any event |
| Shifts published | shift.published |
yes | yes | any event |
| New booking / booking moved / booking cancelled | booking.created / booking.rescheduled / booking.cancelled |
yes | new and cancelled (any event for moved) | any event |
| Stage scheduled / live / ended | stage.scheduled / stage.started / stage.ended |
any event | ||
| New or updated Table row | sheet.row_created / sheet.row_updated |
yes | yes (Watch Table rows) | any event, with a Table filter |
| Pick any event types | the catalogue | yes | yes | yes |
The message and reaction triggers can be limited to channels, and the message triggers can include or skip thread replies. n8n's Missived Trigger takes any event types from the catalogue plus optional channels; private channels must be picked explicitly.
The Table row trigger is for one Table (or shared view) you pick: it subscribes to that Table's channel and passes on only that Table's rows, with their values by column name. When the org sends ids only, the app reads the row back with your token. A deleted row (sheet.row_deleted) is available through "any event".
The booking triggers are for booking links. Bookings are people's own (a booker is usually someone outside the workspace, or a client portal's contact), so they need a personal token with bookings:read (and, like every trigger, events:subscribe and the Manage integrations permission). You get the bookings on your own page, or everyone's if you're an Owner or Admin. The booker's name, time zone and answers come with each booking; their email only when the workspace's Owner switched it on, and never for a booking made from a client portal. Turning a booking trigger on with a token that lacks bookings:read fails at once with the scope to add, rather than making a subscription that never fires. Cancel Booking is safe to repeat in Zapier (an already-cancelled booking counts as done); in Make a repeat answers [409] This booking is already cancelled, which a Resume error handler can treat as done.
How a delivery is trusted
- Zapier and n8n check the Standard Webhooks signature on every delivery with the subscription's
whsec_secret, and refuse anything Missived didn't sign. n8n also rejects timestamps more than 5 minutes off. Zapier doesn't, because it may run a stored delivery late; the eventidis the dedupe key. - Make can't check signatures: its webhooks see only the parsed body, not the raw bytes. So each Make trigger makes one confirming request with your token: the message triggers read the message (
GET /v1/channels/{channelId}/messages/{messageId}), the others read the stored event (getEvent). The module outputs what Missived answered, never what was posted to the hook, so a forged delivery fails. - Zapier and Make ignore Missived's "Send test" pings.
- Don't rotate a trigger's subscription secret in Missived: the app still holds the old one. Turn the trigger off and on instead.
- If the tool answers a delivery with
410 Gone(Zapier does when a Zap is turned off), Missived switches the subscription off.
Message text
Orgs that encrypt content send ids only by default (How much of a message goes along). Zapier and Make then fetch the message with your token, so the text arrives if the token may read it. In n8n, add a Message → Get step.
n8n's Ignore Own Events (on by default) stops a bot that replies from triggering itself. With a personal token it also ignores your own messages.
Actions and searches
| Zapier | Make | n8n | |
|---|---|---|---|
| Send a message (Markdown, a card, files) | yes | yes | yes |
| Reply in a thread | yes | yes | yes |
| Edit / delete a message | yes | yes | yes |
| Add / remove a reaction | yes | yes | yes |
| Create a channel | yes | yes | yes |
| Create a task | yes | yes | yes |
| Schedule / cancel a meeting | yes | yes, and update | yes, and update |
| Assign / remove a custom role | yes | yes | yes |
| Cancel a booking | yes | yes | |
| Add / update a dashboard widget | yes | yes | yes (data as JSON) |
| Add / update a Table row | yes | yes | yes |
| Add or update a Table row by a key column (upsert) | yes (Find or Create Table Row) | yes | yes (Create or Update) |
| Find Table rows by a column's value | yes | yes (Search Table rows) | yes (Get Many) |
| Get / delete a Table row | yes | ||
| Upload / download a file | attach from a URL | yes | yes |
| Find channel, user, message, role | yes | get and list | get and list |
| List messages, threads, members, meetings, shifts, schedule events | yes | yes | |
| Stored events (get one, list the last 7 days) | yes | ||
| Manage incoming webhooks | yes | ||
| Any API call | yes |
Notes that apply everywhere:
- Edits and deletes work on the token's own messages; deleting someone else's needs the channel's manage-messages permission. A message that is already gone counts as deleted.
- Cards (embeds) need an app token. An app's @mentions notify nobody unless you pass allowed mentions.
- A meeting's invitees are emails or members' user ids, and Missived emails the invites. Outside guests only where the org allows them.
- Roles are custom roles only, never Owner, Admin, Member or Guest.
- Cancelling a booking emails the booker. When the Owner turned on "ask first" for assistants and tokens, the step doesn't fail: its status is
pending_confirmation, with a link to confirm in Missived. - Files: up to 10 per message and 25 MB each.
- Table rows: each writable column gets its own field (formulas and columns the Table fills in don't). A field left empty leaves the cell as it is. Write a choice by its label, a date as
YYYY-MM-DD, a person by email. See the Tables API for the rules; tokens needtables:readandtables:write.
Idempotency
Every create sends an Idempotency-Key, so the app's own retry never posts twice. To make a replayed run safe too, map something stable into the step's idempotency key field, such as the trigger's event id (in n8n, an expression like ={{ 'reply-' + $json.id }}). Missived keeps keys for 24 hours per token. See Idempotency keys.
Install the n8n package
On the machine that runs your n8n:
- Get the
n8n-nodes-missived-<version>.tgzpackage file: ask us, or build it withnpm ci --ignore-scripts && npm packin theintegrations/n8n-nodes-missivedfolder of the Missived source. - In the n8n user's
~/.n8n/nodesfolder, runnpm init -yif there is nopackage.json, thennpm install /path/to/n8n-nodes-missived-<version>.tgz --omit=dev. - Restart n8n. Missived and Missived Trigger appear in the node list.
- Add Missived API credentials with your token and, on your own server, its Base URL.
Your n8n's webhook URL must be public HTTPS: Missived never delivers to private addresses or plain http. Set n8n's webhook URL to match your reverse proxy. Deactivate the workflow before changing the credential or Base URL, so the old subscription is removed.
Any other tool: webhooks, events and the API
Everything the apps do is open to any tool that can make and receive HTTP requests.
- Post into a channel with an incoming webhook. It speaks Discord's and Slack's webhook formats, so a tool's "Discord webhook" option works with no Missived app at all.
- React to what happens with an event subscription pointed at the tool's webhook URL. Verify the signature if the tool can see the raw body. If it can't (as in Make's Webhooks module), treat the delivery as a hint: read the event back with getEvent and use only what that returns.
- Do anything else with the API and a token, through the tool's HTTP module.
What data moves
- The tool receives only what its token can see: events for the channels and types you picked, and what each action returns. Direct messages, group chats and personal channels never send events.
- Missived stores the subscription's target URL and signing secret, and the tool stores your token and that secret (n8n keeps the secret in the workflow's data, so protect its database and exports).
- Message text goes along only as the org's content setting and the token's scopes allow.
- File actions fetch a file from the URL the tool gives and upload it to Missived; your Missived token is never sent to that URL.
Troubleshooting
- Turning a trigger on fails with the plan's limit: the org has used its event subscriptions. Turn off another trigger or delete an unused subscription.
insufficient_scope: give the token the scope named in the table above, or make a new token.- The tool asks you to reconnect: the token was revoked or expired.
- An app token sees no messages: add the app to the channel.
- A trigger fires but has no message text: the org sends ids only and the token can't read that channel.