Repairs, alterations & servicing
A ring to resize, a watch to service, a jacket to take in, a sofa to re-cover. Each is the same promise: we have your thing, we will do this to it, it will be ready by then, and it will cost this. Stitchwork keeps that promise on the client's record, prints the ticket, lets the client see where it has got to from their phone, and puts the job on somebody's list when it runs late or is not collected.
Taking a job in
Open Repairs → New job, or Take in a repair on the client's record, and choose the client. A client with no email shows their phone number, so two people of the same name can still be told apart. Somebody new? Add them first: a name and a mobile number are enough (see clients with only a phone number).
| Field | What it is for |
|---|---|
| Store | Where it was taken in. It decides who can see the job, and where it is collected from. You can only take a job in at a store you work. |
| Kind | Repair, alteration, service, resize, clean, engraving, valuation or other. It labels the ticket and the sale line. |
| Item | What it is, as the client would describe it: “Cartier Tank, steel, 1998”. Required, up to 200 characters. |
| Work | What is to be done. Printed on the ticket; “As discussed” when left blank. |
| Condition on intake | Scratches, a missing stone, a worn strap: the state you both agreed it arrived in. Printed on the client's copy, because it is the part both sides signed up to at the counter. |
| Promised for | The date you have told the client. A job still in the workshop on that date is overdue. |
| Price | Leave it empty until you know: a watch is often opened before anybody can say what it needs. A job with no price is never recorded as a sale. |
| Deposit | What was taken at the counter. The ticket and the status page show the balance. A deposit taken against an estimate can be more than the final price; the job then says how much is owed back. |
| Assigned to | Who is doing the work or looking after it. Optional. |
| Internal note | For the team only. Never printed and never shown to the client. |
The reference and the ticket
Every job gets a short reference, such as R-2026-0042, numbered within your
workspace and readable over the phone. Print ticket lays out two parts
with a line to cut along:
- The client's copy: the shop and store, the reference, the item, the work, the condition on intake, the promised date, the price, the deposit and the balance, and a QR code that opens their status page.
- A tag for the bag: the reference, the client's name and number, what it is and the promised date, so the workshop never has to match a watch to a name from memory.
Nothing internal is printed: no internal note and no staff names.
Where it has got to
A job moves through these states. Each move is written to the job's history with who made it and when, so “who said it was ready?” has an answer.
| State | Can move to | What the client reads |
|---|---|---|
received | in the workshop, waiting for parts, cancelled | We have it safely, and it is waiting its turn in the workshop. |
in_progress | waiting for parts, ready, cancelled | It is in the workshop now. |
awaiting_parts | in the workshop, ready, cancelled | We are waiting for a part to arrive before we can finish it. |
ready | collected, back to the workshop, cancelled | It is ready, and waiting for you. |
collected | — | It has been collected. Thank you. |
cancelled | — | — |
A move the table does not allow is refused rather than guessed at, with the reason. If a colleague moved the job a moment before you, your move is checked against where it is now, not where it was when you opened the page. The Repairs list has views for open jobs, ready to collect, overdue and collected, and searches by reference, item or client.
The client's status page
The QR code on the ticket, and the link in any message you send about the job, open
/r/<token>: a page made for a phone that shows the shop, the
reference, the item, where it has got to, the date it is promised (or the day it became
ready), the balance left to pay, and the store's address to collect it from. The link is
the key: 32 random characters and nothing to sign in to. Internal notes and staff names
are never on it.
Telling them it is ready
When a job is ready, Tell them it's ready opens the composer on the client's record with the message already written: what is ready, where to collect it, and the link to its status page. It is an email when the client has an address and a text when they have only a number. You read it, change what you like and press Send, and it goes through every check a message to a client passes (see Messaging). Stitchwork never messages a client about a repair by itself.
A message about the client's own repair is a service message, so it does not need their agreement to marketing. The composer still shows what they have agreed to.
On Today and on the client's record
- Today shows the jobs ready to collect, longest-waiting first, and the jobs still in the workshop on or after their promised date.
- The client's record lists what you are holding for them, with its state, so whoever picks up the phone can answer “is my watch ready?” without the ticket number.
- A job that has been ready for a week and not collected puts the client on the list of whoever looks after them, with the reason written: “Their Omega Seamaster has been ready to collect for 9 days.” It is one of the reasons to get in touch, raised once per job by the nightly sweep. Unlike the others it has no setting: something of the client's is on your shelf.
Collection and the sale
Marking a priced job collected records it as a sale on the client's record: a fulfilled order for the price, at the store it was taken in at, dated the day it was collected, with the job's reference on it. That sale counts in the client's value, in your reports, and as the start of the aftercare check-in, as any other sale does. Recording it twice is not possible; the job knows its sale.
- A job with no price is collected and nothing more: there was no sale.
- If the job's store has since been removed, the sale is not recorded automatically. The job says so, and you can record it on Orders by hand.
- Deleting a job does not delete the sale it became: that money changed hands.
Who can do what
| Action | Who |
|---|---|
| See, take in, move on, edit and note a job | Anybody who works the store it was taken in at. A job at a store you do not work does not exist for you. A job whose store was removed belongs to the whole workspace. |
| Cancel a job | The same people. Cancelling keeps the record and its history. |
| Delete a job outright | Owners and admins, for a job taken in by mistake or in testing. |
A client with a job on record cannot be deleted by accident: deleting them asks first, because you may still be holding something of theirs. Merging two records moves the jobs to the one you keep, and a client's data export includes every job and its history.
API
The screens run on these endpoints, which take a signed-in session. Responses use the
usual {"version": "v1", "data": …} envelope (see API overview).
| Endpoint | What it does |
|---|---|
GET /api/v1/repairs | List jobs. view is open, ready, overdue, collected or all; also q, customer_id, channel_id, page and per_page (up to 200). Returns the count for each view. |
POST /api/v1/repairs | Take a job in: customer_id, channel_id, item, and any of kind, work, condition_notes, promised_on, price, deposit, assigned_user_id, notes_internal. |
GET /api/v1/repairs/{id} | One job, with its history and its sale. |
PATCH /api/v1/repairs/{id} | Change the fields above while the job is still with the shop. |
POST /api/v1/repairs/{id}/status | Move it on: {"status": "ready", "note": "…"}. Collecting a priced job records its sale. |
POST /api/v1/repairs/{id}/notes | Add a line to its history. |
POST /api/v1/repairs/{id}/sale | Record the sale for a collected, priced job whose sale was not recorded at the time. |
DELETE /api/v1/repairs/{id} | Delete it outright (owners and admins). |