How do requests become board items?
A board’s Form view lets you choose the fields people fill in and the group where their submissions arrive. Save the form, share its public link and check a sample submission on the board.
Board automations can then respond to a status change by moving an item to a group or setting its status.
Create a board form
- Open the board that should receive submissions.
- In the view selector, choose Add view, then Form.
- Set the form title, description and success message.
- Choose the fields to show and mark any required fields.
- Choose the destination under Lands in group.
- Choose Save form.
Share and check your form
Use Open to review the public form, Copy URL to share its link, or Copy embed to place it on a website.
Submit a sample response and check the destination group on your board before sharing the form more widely. The Form is live toggle lets you pause collection; save your changes after updating it.
Build a simple automation
Open Automate from the board header. Build a rule around a status change, then choose a supported action such as moving the item to a group or setting a status.
For example, move completed work into a Done group when its status becomes Done. Choose the actual status and group used by your board, then save the rule.
Check the result
Try your rule on a sample item and confirm that the expected change happens. Review existing rules before adding another rule with the same trigger.
Keep the form’s destination group easy to find so new requests can be reviewed, assigned and scheduled.
Support desk and request API
Your own product can send its users’ requests straight to a board, and your team answers them from Snappi. Each request becomes a task, with who asked, how urgent it is and the whole conversation.
Set it up
- Open Settings, then Support desk. Workspace owners and admins can do this on the Team package or higher.
- Pick the board requests should go to, or choose Create a Support Desk board for one with status, priority, requester and message columns ready.
- Name a key and choose Create key. Copy it straight away, because it is shown once.
- Store the key on your product’s server. Never put it in a web page or a mobile app.
You can move a key to another board at any time. New requests go to the new board, and requests already filed stay where they are and stay readable.
Send a request
curl -X POST https://snappi.now/api/v1/requests \
-H "Authorization: Bearer snappi_in_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: ticket-1042" \
-d '{
"title": "Invoice export is stuck",
"message": "The export button spins forever.",
"requester": { "id": "user_8812", "email": "[email protected]", "name": "Sam Lee" },
"priority": "high",
"fields": { "due_date": "2026-10-10" }
}'Only title is required. priority and any fields value for a status or dropdown column can be the option’s name, such as “High”. fields is keyed by the board’s column keys. Sending the same Idempotency-Key again returns the first request instead of creating a second one.
| Endpoint | What it does |
|---|---|
| POST /api/v1/requests | Files a request. Returns 201 with the request. |
| GET /api/v1/requests | Lists requests, newest first. Filter with requester_id or requester_email to show one of your users only their own. Also takes state=open|closed, limit and before for paging. |
| GET /api/v1/requests/:id | One request with its current status. Add include=messages for the conversation. |
| GET /api/v1/requests/:id/messages | The conversation, oldest first: the customer’s messages and your team’s replies. |
| POST /api/v1/requests/:id/messages | Adds the customer’s reply. A request waiting on the customer, or already resolved, moves back to In progress. |
| PATCH /api/v1/requests/:id | Updates a request from your side, such as when your own admin resolves it. Send status (an option’s name, such as “Fixed”), a note, or both. The note shows on the task as an update. Your webhook isn’t called for your own change. |
Tell the team what kind of request it is with fields.type, for example “Support ticket”, “Contact form”, “Callback request” or “Error report”. Support Desk boards have a Type column for it, with saved views for each kind.
Every request in a response has an id, title, status, priority, group, an open flag, the requester, and reference — the Idempotency-Key you filed it with, so a webhook can be matched to your own record. Errors return a JSON body with error.message. A key may send 60 requests a minute, and 10 a minute for any one requester.
Answer customers
A task that came from a request opens on its Customer tab. Write your reply there. The customer gets it through your product, and by email too if you switch on Email the customer when your team replies for that key.
Next to Send reply, Then set status chooses where the request goes. It starts on Waiting on customer, because a reply usually hands the next step to them, and their answer moves it back to In progress by itself. Pick In progress when you still owe them more, Resolved when your reply settles it, or No change.
Resolved and closed requests are archived automatically 7 days after they were resolved, so the board stays focused on open work. Archived requests are still listed for the product as closed, and you can find them in the board’s archive.
Error reports from any website
Create a board from the Error reports template for problems people report from your site or app, such as a wrong page, a broken answer or a missing file. It has Severity, Issue, Where, Page and Reference columns and a review flow: New, Under review, Accepted, Fixed, Rejected and Duplicate. Point a key or a website widget at it.
Add a webhook to keep your product in step. When your team replies or changes the status in Snappi, your product hears about it and can show the reporter. When someone resolves a report in your product, send PATCH /api/v1/requests/:id so the board matches.
Add a Help button to your website
Prefer not to write code? In Settings → Support desk, under Website widget, pick the board, list your website addresses and choose Create widget. Copy the snippet and paste it before the closing body tag of your site. Visitors get a Help button, send their request without leaving the page, and receive your reply by email.
The form only opens on the websites you list, and it runs on Snappi, so your page never holds a secret. If your visitors are signed in, your server can sign their user id so their requests show as verified. The steps are under Recognise signed-in customers.
Webhooks
Add a webhook URL to a key and Snappi posts an event to it when your team replies (request.replied) or a request’s status changes (request.status_changed). Use Send test to check it. Failed deliveries are retried twice.
Each event carries a Snappi-Signature header such as t=1760000000,v1=…. Check it before trusting the event: compute an HMAC-SHA256 of the timestamp, a full stop and the raw body, using the key’s signing secret, and compare it with v1. Reject events more than five minutes old.
const [t, v1] = header.split(',').map(p => p.split('=')[1])
const expected = crypto.createHmac('sha256', SIGNING_SECRET).update(`${t}.${rawBody}`).digest('hex')
const valid = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1))
&& Math.abs(Date.now() / 1000 - Number(t)) < 300Keep exploring
See all Snappi guides