Zapier plugin
Send every Mushi Mushi event to Zapier and on to the thousands of apps Zapier connects to, such as Slack, Notion, Google Sheets, HubSpot and Jira.
Setup (no server)
- In Zapier, create a Zap with the Webhooks by Zapier → Catch Hook trigger.
- Copy the webhook URL (e.g.
https://hooks.zapier.com/hooks/catch/…). - In Mushi Mushi: Marketplace → Zapier Bridge → Install.
- Paste the Catch Hook URL as the webhook URL and keep the signing secret Mushi Mushi generates.
- Optionally narrow the subscribed events (e.g. only
report.classified,fix.applied).
Zapier then receives Mushi Mushi’s envelope as is: { event, deliveryId, occurredAt, projectId, pluginSlug, data }, with the report under
data.report for report and fix events (see Webhook events
for each payload). The listing subscribes to every event (*), including the
test.delivery sent by the Test button. Zapier does not check the
signature, so anyone who learns the Catch Hook URL can post to it.
Setup (with the relay package)
@mushi-mushi/plugin-zapier
runs between Mushi Mushi and Zapier. It checks Mushi Mushi’s signature and forwards a
flat payload (event, report_id, report_status, report_severity,
report_title, …, plus the full envelope under raw).
npm i @mushi-mushi/plugin-zapier
export MUSHI_PLUGIN_SECRET=... # the same signing secret as in the install form
export ZAPIER_HOOK_URL=https://hooks.zapier.com/hooks/catch/.../...
export ALLOW_EVENTS=report.classified,fix.applied # optional: only these
export DENY_EVENTS=test.delivery # optional: never these
npx -p @mushi-mushi/plugin-zapier mushi-plugin-zapierSet the Zapier Bridge webhook URL to https://<your-host>/mushi/webhook
instead of the Catch Hook URL.
Checking the signature inside a Code by Zapier step is not practical: the signature covers the exact raw request body, which Zapier does not pass to the step.
Common Zaps
| Trigger | Action | Use case |
|---|---|---|
report.classified (critical) | Post to a Slack channel | Immediate team alert |
report.classified | Create row in Google Sheets | Bug tracking in a spreadsheet |
fix.applied | Create Notion database entry | Changelog / release notes |
report.created | Create HubSpot ticket | Link product bugs to customer accounts |
Troubleshooting
- Zap not firing: check the plugin’s deliveries on the Marketplace page in Mushi Mushi.
- Events arriving out of order: Mushi Mushi sends each event as it happens and retries failed ones later, so a retried event can arrive after a newer one. Use
occurredAtto order them, or build one Zap per event type. - Payload too large: Zapier documents a 10 MB limit for webhook payloads (2 MB for a raw hook). Mushi Mushi events are normally far smaller (a
skill_pipeline.step.dispatchedcontext packet, for example, is capped at 40,000 characters).