ServiceM8 how-to
What are all the ServiceM8 template field codes, by document?
ServiceM8's help centre publishes one reference list of merge fields for quote and invoice templates, plus a separate Template Field Code per question for Forms document templates. This page tables both by document type, with the exact field name, what it prints, and the mistakes that break a generated PDF, sourced from ServiceM8's own documentation.
Last checked 25 Sep 2026 against the sources listed at the end of this page.
Yes: every quote, invoice and form template in ServiceM8 is built on named merge fields, called field codes, that you insert into a Word template and ServiceM8 fills in when it generates the PDF.
Step by step
- For quote and invoice templates: download ServiceM8's ready-formatted field list, linked from the Available Fields article, and open it in Microsoft Word rather than typing codes by hand.
- Open your custom quote or invoice template in Word, position the cursor, then Insert, Quick Parts, Field, MergeField, and paste the field name from that list.
- For forms: go to Settings, Forms, open or create the form, and add each question with a plain, symbol-free name.
- Note the Template Field Code ServiceM8 generates for each question, shown in the question details, before you touch the template.
- Open the form's linked document template in Word, place the cursor, then Insert, Quick Parts, Field, MergeField, or Insert, Field on a Mac, and enter that Template Field Code exactly.
- Save and re-upload the template, then run a test job through the form to confirm every field populates before relying on it.
Gotchas
- Quote and invoice field codes and form field codes are not interchangeable. A form_ code means nothing on an invoice template, and a job. code means nothing on a form template.
- Only letters and numbers are safe in a form question's name. Symbols including / \ ( ) # & : and an apostrophe can break the generated PDF, per ServiceM8's help centre.
- job.invoice_due_date and job.invoice_due_date_from_today look interchangeable but are not: one is fixed to the saved Invoice Date, the other recalculates if the document is regenerated later, which can quietly change the printed date.
- The field list download is dated. ServiceM8's current file is titled Available fields for templates, Sept 2024, so a field added after that date may not be on it. Check the on-page list, not just the downloaded file, for anything recent.
- There is no validation step in ServiceM8 itself: an unresolved or mistyped field code does not throw an error, it just prints blank or as the literal field name, which is easy to miss until a client already has the PDF.
What the official help article misses: It is the only place ServiceM8 lists quote and invoice field codes, but it says nothing about the separate Forms field code system, does not flag that its downloadable file can lag newly added fields, and does not warn which of two similarly named date fields recalculates on a re-print. Read ServiceM8's article.
Two separate field code systems
ServiceM8 has two field code systems, and mixing them up is the single most common mistake. Quote and invoice templates use a fixed list of merge fields ServiceM8 defines for you, grouped under prefixes like job., jobMaterial., vendor., location. and calculation.. You cannot rename or add to this list; you can only place the codes ServiceM8 already publishes.
Forms use a second, separate system. Every question you create on a form, under Settings, Forms, generates its own Template Field Code the moment you save it, following the pattern form_ plus the question name, or image_form_ for a Photo or Signature question. These codes only exist because you created that question, and only work inside that form's own linked document template, not on a quote or invoice.
Quote and invoice field codes
The most used fields from ServiceM8's published list, by what they print: job details come from job.generated_job_id (job number), job.job_address and job.job_address_singleline (the site address), job.description, job.status and job.purchase_order_number, the field behind the recurring ServiceM8 Community request to get a client's PO number onto an invoice.
Money comes from job.total_price, job.subtotal_price, job.balance_due, job.deposit_amount, job.deposit_description and job.invoice_due_date, calculated from the saved Invoice Date and any non standard Payment Term. Per line item, inside a repeating section, jobMaterial.name, jobMaterial.quantity and jobMaterial.total_price print each material or service row. calculation.todays_date_extended and calculation.current_user_fullname print the date and staff member who produced the document, and vendor.name plus the location. fields print your own business details.
Form document field codes
Form field codes are not on any published list because you generate them yourself. Create the question in Settings, Forms, New Question, give it a plain name using only letters and numbers, then Save. ServiceM8 shows the Template Field Code it generated next to the question, for example form_site_contact for a Text question named Site Contact, or image_form_signed for a Signature question named Signed.
Open the form's linked Word template, place the cursor, then Insert, Quick Parts, Field, MergeField (Insert, Field on a Mac), and paste that exact code in.
What breaks a merge
Three mistakes account for most broken PDFs: typing a field code by hand instead of pasting it, which risks a typo the merge silently ignores rather than errors on; using a symbol such as / \ ( ) # & : or an apostrophe in a form question's name, which ServiceM8's own help centre warns can break the generated PDF; and confusing the two systems, pasting a form's form_ code into a quote template, or a job. code into a form's document, where it will not resolve because that field does not exist in that document's data source.
Sources
- ServiceM8's Available Fields article lists the full set of merge fields for quote and invoice templates, grouped under job., jobMaterial., vendor., location. and calculation. prefixes, with a downloadable Word file of them dated September 2024. ServiceM8 Help Center, checked 25 Sep 2026.
- job.purchase_order_number prints the job's Purchase Order Number field on a quote or invoice template. ServiceM8 Help Center, checked 25 Sep 2026.
- Each Form question generates its own Template Field Code, following the pattern form_ plus the question name, or image_form_ for a Photo or Signature question, shown in the question details after it is saved. ServiceM8 Help Center, checked 25 Sep 2026.
- Only letters and numbers should be used in a Form question's name; symbols such as / \ ( ) # & : or an apostrophe can cause problems when ServiceM8 generates the completed form PDF. ServiceM8 Help Center, checked 25 Sep 2026.
- job.invoice_due_date is calculated from the job's saved Invoice Date, or a client's non standard Payment Term, while job.invoice_due_date_from_today is calculated from the date the document is generated and can change if the document is regenerated later. ServiceM8 Help Center, checked 25 Sep 2026.