Features
Contracts & e-signing
Set up your services agreement once, and let couples review and e-sign it online, with a signed copy kept for both of you.
Updated Mon Sep 21 2026 00:00:00 GMT+0000 (Coordinated Universal Time)
spinbook includes a contract you can edit once and reuse for every event. Couples review and e-sign it online; a snapshot of the exact signed text is kept for both of you.
See it before they do
Under the template editor there's a live preview: the contract rendered exactly as a couple sees it, updating as you type. It uses the same renderer that produces the signed document, so what you see is what gets signed.
By default it fills every merge field with sample data (a fictional couple, venue, and amounts) so you can read the whole agreement without gaps. Your business name and your own settings (minimum hours, governing law) are substituted in, so it reads as yours.
You can also switch the preview to one of your recent events to check it against
real details. Anything still showing __________ is a merge field with no value yet
for that event; it fills in automatically once the detail exists.
In the preview, every filled merge value renders bold, so you can tell at a glance what was auto-filled versus what's part of your template's wording. That's a preview affordance only; the couple sees plain text, and the signed document is never bolded. Staff viewing an unsigned contract on the event page get the same bold markers.
Draft one with AI
Under the editor there's Draft one with AI. It gives you a prompt already tailored to your business: your company name, your governing-law state, your minimum hours. Crucially, it also includes the exact list of merge fields your template can use.
spinbook doesn't send anything to an AI service. You copy the prompt, take it to Claude or ChatGPT yourself, and paste the markdown back. Nothing about your business or your clients leaves spinbook unless you paste it.
Paste the result into the box, press Use this as my template, and it drops into the editor, where the preview shows you what it looks like before you press Save.
If a merge field is wrong
The editor watches for merge fields it doesn't recognise. An AI sometimes invents one, or
a typo slips in; {{couple_nmaes}} looks fine at a glance. You'll get an amber warning
naming the field so you can fix the spelling. It's a warning, not a block; you can still
save, because an unrecognised field might be one you added on purpose (see below).
You'll also see a quieter note if your new template stopped using a field the old one had. Usually deliberate, occasionally a surprise.
A generated contract is a starting point, not legal advice. Read it properly, and have a lawyer review it before you send it to clients.
Fill in your own blanks, per client
Some blanks in a contract are yours to fill and different for every couple: the city in your legal name, a venue detail, an agreed fee in words. Add your own merge field anywhere in the template and it becomes a text box on that couple's contract page:
This agreement is made in {{city}}, between {{dj_company}} and {{couple_names}}.
{{city}} isn't one of ours, so spinbook gives you a City box under Your details for
this contract on each event's contract page. Fill it in for that couple and the blank
closes for them only. Every other couple's contract is untouched, and you never edit the
template again.
Use any name you like, in lowercase with underscores: {{city}}, {{arrival_time}},
{{package_notes}}. Blanks you leave empty print as a line, so a half-filled contract
still reads correctly.
Better yet, declare it as a custom field: in Settings → Contract template, under Your custom fields, add the field name and a label (and remove ones you no longer use). Declared fields get a proper label on every fill box, show up in the click-to-copy merge palette, and stop tripping the "unrecognized merge field" warning.
Every field you fill has an org-wide default: the Fill your fields card sits right under the template preview. Type a value once and it's used on every contract. On each event's contract page a matching panel sits beside the contract (desktop only): anything you type there overrides your default for that couple only; boxes you leave empty fall back to the default.
Minimum hours and governing-law state work the same way: a default in Settings, overridable per couple without touching anyone else's agreement.
The couple never sees these boxes. They see the finished text.
You can only fill these in before the contract is signed. Once it's signed, the stored copy is a legal record and nothing can change it.
Edit the event details right from the contract
On an unsigned contract, staff also get an Event details panel beside the document (desktop). It holds everything the auto merge fields read from: the couple's names and address, the venue, the package, the date and time. Type a missing venue there, press Save, and the blank in the contract closes.
The important part: these edits go to the real event record, not to a copy inside the contract. The event page, the calendar, your printed documents, and your webhooks all see the same change, so nothing can drift out of sync.
Two groups stay read-only on purpose:
- Calculated amounts (total fee, deposit, balance due) come from the payment requests; the panel shows them and links to the payments page where they're changed.
- Your business name is business-wide, so it isn't editable from one wedding.
Once the contract is signed, the panel disappears along with every other edit control. The signed copy never changes.
What the couple sees while signing
Before signing, the contract on the couple's page fills in as they type. If your template asks them for something (their address, most commonly), the blank in the agreement closes while they're entering it, rather than after they've signed. They can read exactly what they're agreeing to before agreeing to it.
Clearing a field puts the __________ back, so nothing is silently left half-filled.
Once signed, the page shows the stored copy of the contract exactly as it was presented at signing, with the signature underneath. That copy never changes.
Set up your template
In Settings → Contract template, edit your DJ services agreement. New accounts start from a complete DJ services agreement, and it uses merge fields that fill in automatically per event: e.g. the couple's names, event date, time, venue, package, and amounts. Edit the wording to match how you work.
The editor shows a palette of every available merge field. Click any field to copy it, then paste it into your template. Each field shows who supplies its value:
- auto: fills from the event automatically (couple's names, date, venue, amounts…).
- couple: the couple types it on their contract page before they sign (e.g. their address). If your template uses a required couple field, it must be filled before signing.
- you fill: you set it once here in Settings. Right below the palette, fill in
Minimum hours and Governing-law state; they merge into
{{minimum_hours}}and{{governing_law}}and read like an auto field to the couple.
Any field left without a value prints as a blank line, so the document always reads correctly.
How couples sign
On the event's contract page the couple first completes any required details (like their address). The contract can't be signed until those are filled in, and you can watch them merge into the live preview. They then read the agreement and sign by drawing their signature. spinbook records the typed name, a timestamp, and the signature image, and stores a snapshot of the signed text so the agreement can't change after the fact.
Signed on paper?
If a contract was signed offline, you can mark the bound checklist item done with a note (see Checklists & forms), or sign on the couple's behalf from the contract page for a clean digital copy.
Checklist
- Edit your contract template in Settings
- Set your minimum hours and governing-law state in Settings
- Confirm the merge tokens fill in correctly on a real event
- Send the couple to their contract page to e-sign
- Keep the signed snapshot on file (it stays in the event)