Docs
GitHub, Linear, Slack, Discord
Close the loop from where your team already works.
GitHub: the loop#
On Pro, open Install & connect and press Connect GitHub: install the Shipnoted GitHub App on the repositories you choose and you are done. There is no webhook to paste and no token to make, and you can remove the app from GitHub at any time. Prefer to do it by hand? Connect a repository, then add a webhook in GitHub with the payload URL and secret shown there, content type application/json, and the Pull requests, Issues and Releases events.
Every request on your board has a short reference, like SN-42. Mention it, and the rest follows:
- In a pull request (title, description or branch name),
SN-42orCloses #17(when issue 17 is linked to a request) links the pull request to that request the moment it merges. The request moves to In progress. - In an issue,
SN-42links the issue to the request. An open issue marks the request Planned. An issue closed as completed adds the request to your next release. An issue closed as not planned changes nothing. - With no reference, a merged pull request whose wording matches an open request shows up under Waiting for you on The loop page. One click confirms it. Nothing is guessed silently.
- Release notes write themselves. Merged pull requests collect into one rolling draft, grouped as New, Improved and Fixed. Chores and dependency bumps are left out. Edit the draft and your words are kept; later merges are added under “Also merged”. Publishing is always your click.
- You asked, it shipped. When you publish, every request in the release becomes Shipped and each person who voted and left an email gets one message, even if several of their requests shipped. Sending is retried if the mail provider is down, and nobody is ever emailed twice for the same release.
Optionally add a fine-grained GitHub token (Issues: read and write, one repository). Shipnoted then creates an issue from a request in one click and comments on linked issues when they ship. The token is stored encrypted and never shown again. Deliveries are verified with the X-Hub-Signature-256 header and listed in your dashboard.
Linear#
On Pro, press Connect Linear under Install & connect, approve it on Linear, and choose the team this project follows. Then:
- On a request, Create a Linear issue makes one in that team, carrying the request’s
SN-42reference and how many people want it. Or paste an existing issue (ENG-123or its link) to link it. - An issue that mentions
SN-42in its title or description links itself. Moving it to Backlog or Todo marks the request Planned, In Progress marks it In progress, and Done adds it to your next release draft. Canceled changes nothing: only you decline a request. - When the release goes out, the issue gets a comment saying where it shipped.
Shipnoted acts as an app in your workspace, never as a person, and only sees what Linear shows it. Remove it any time from Linear or with Disconnect.
Slack#
On Pro, press Add to Slack, pick a channel and the events to post: new requests, status changes, releases. Customer text is neutralised first, so a request can never ping @channel.
Going the other way, react to any message with :bulb: (or the emoji you choose) and it becomes a request: the first line is the title, the message and a link back to it are the body, the author’s name is attached, and Shipnoted replies in the thread with the request’s reference. The same message is never filed twice. The bot reads only messages it is a member of: it joins the channel you choose, and for others use /invite @Shipnoted.
Discord#
On Pro, press Add to Discord, choose your server and the channel to post in. That channel then hears about new requests, status changes and releases, and the app can never mention anyone.
To file a request from Discord, right-click any message, choose Apps, then File as request. Or type /idea and what you want. Either one answers in the channel with the request’s reference, and the same message is never filed twice. Discord does not tell apps about emoji reactions over the web, which is why this uses a menu and a command and not the lightbulb as Slack does.
Capture from anywhere#
Under Settings, each project has a private capture address. POST JSON to it from Intercom, Crisp, Zendesk, Zapier, Make or your own script and it becomes a request. It reads common field names, so most tools need no mapping: title or subject; message, body or text; name and email (or inside user); and source. Send an id and a tool that retries files the request once.
curl -X POST https://shipnoted.com/api/capture/YOUR_PRIVATE_TOKEN \
-H "content-type: application/json" \
-d '{"subject":"Export to CSV","message":"We need it for invoices","user":{"name":"Ada","email":"ada@acme.com"},"source":"Intercom","id":"conv_123"}'Whoever has the address can post, so treat it like a password. Making a new one stops the old one at once.