ServiceM8 Integration
Connect your ServiceM8 account and Sammy works both ways with it:
- Start an estimate from a ServiceM8 job — pull an existing Job's details, site notes, photos and completed forms straight into a new Sammy estimate, so you're not re-typing what's already in ServiceM8.
- Push your estimate back into ServiceM8 — as a new Quote, or straight onto the job it came from, with your pricing at the level of detail you choose.
- Statuses sync automatically — when your customer accepts or declines the quote in ServiceM8, the estimate in Sammy updates itself.
This is built for the way a lot of jobs actually run: the enquiry comes in, you (or your team) do the site visit and capture it in ServiceM8, then you quote it. Now you can bring that job into Sammy, quote it properly, push it back onto the same job, and let the acceptance flow back to Sammy on its own — no duplicate jobs, no re-keying.
Availability
The ServiceM8 integration is available to Pro plan users. You'll need a ServiceM8 account on a plan that includes API access (most paid ServiceM8 plans do — if your account doesn't, ServiceM8 will tell you when you try to connect). Importing completed Forms also needs a ServiceM8 plan that includes Forms.
A Heads-Up About ServiceM8's "Price of some items have changed" Banner
When you push an estimate, ServiceM8 will show a yellow "Price of some items have changed" banner at the bottom of the Job. This is safe to ignore — your Subtotal, GST, and Total in the right-hand summary are all correct, and the customer-facing Quote PDF is correct too.
Don't click "Apply Changes" on that banner. Doing so will knock about 10% off your total. Just leave the banner alone (or dismiss it) and carry on.
Connecting to ServiceM8
- Click Settings in the sidebar
- Select the Integrations tab
- Find the ServiceM8 card and click Connect
- You'll be redirected to ServiceM8 to log in and approve access
- After approving, you'll be sent back to Sammy
- Pick your default tax rate (usually GST 10%) and job category
- Click Save
Your connection is now active.
What Sammy can see in your ServiceM8 account
When you connect, ServiceM8 asks you to approve the permissions Sammy needs. We only ask for what we use:
- Creating Jobs and adding line items to them
- Looking up and creating Clients, and attaching Contacts to Jobs
- Reading your tax rates and job categories
- Reading a job's notes, photos, attachments and completed forms — so you can import a job into Sammy
We never read your time entries, staff data, or financials. If you connected before importing was added, you'll be asked to reconnect and approve the extra read permissions the first time you use Import from ServiceM8 — see Reconnecting to enable import.
Starting an Estimate from a ServiceM8 Job
If the job already exists in ServiceM8 — with the site address, your notes from the visit, photos and any completed forms — you can pull all of that into a new Sammy estimate instead of starting from scratch.
- Go to Create Estimate
- Click Import from… and choose ServiceM8
- Pick the job from the list (it defaults to your Quote jobs; use the search or the status filter to find another)
- Sammy pulls the job in and opens it as a new estimate for you to review
What gets imported
| From ServiceM8 | Into Sammy |
|---|---|
| Job description | The estimate's job description |
| Diary / site notes | Added underneath the description as context |
| Completed form answers | Added as context text |
| Completed form PDFs | Attached as documents Sammy reads |
| Photos | Attached to the estimate |
| Site address | The estimate's site address |
| Client (Company) | Linked to a Sammy client (created if you don't have them yet) |
Sammy imports up to 20 files (newest photos first, plus your form PDFs). If a job has more than that, you'll see how many were brought in — you can add the rest by hand if you need them.
Reconnecting to enable import
Importing needs a few extra read permissions (notes, photos and forms) that the original connection didn't ask for. The first time you import, if your connection is missing them, Sammy shows a Reconnect ServiceM8 to enable import prompt. Click through, approve the new permissions in ServiceM8 (you'll only be asked about the new ones), and you're set. Pushing keeps working the whole time.
Reviewing before you generate
An imported job lands as a draft you review first — it doesn't generate a quote on its own. Read through the notes and forms, add anything the site visit missed, then generate the estimate when you're happy. Photos and form PDFs finish processing in the background; Sammy lets you know when they're ready.
Pushing an Estimate to ServiceM8
Once your estimate is ready, you can push it to ServiceM8.
- Open the estimate
- Click the dropdown arrow next to Send Proposal (or the ServiceM8 button on the metadata strip)
- Select Send to ServiceM8
- Under Destination, choose where it goes (see below)
- Under Push detail, choose how much to send — All items, Groups only, or Project total only. Sammy starts on whatever you've set for your proposal.
- Review the summary — client name, site address, and what's about to go across
- Click Send to ServiceM8
- Wait a few seconds while Sammy pushes the lines
Choosing where it goes
The Destination choice decides which ServiceM8 Job gets your lines:
- The job it was imported from — if this estimate came in via Import from ServiceM8, Sammy pre-selects that same job, so your quote goes straight back where it started. This is the usual choice for imported jobs.
- A new Job — Sammy creates a fresh Job (status "Quote") and puts your client on it. This is the default for estimates that didn't come from ServiceM8.
- Choose an existing job — pick any job in your ServiceM8 account. Search by number, name or address.
When you push onto an existing job, Sammy adds your lines to it — it never changes or removes anything that's already there. If you pick a job that isn't a Quote (say it's already a Work Order), Sammy warns you first, because you'd be changing the billables on a job that's already underway. It won't stop you — just check it's what you mean.
Important for existing jobs: ServiceM8 quotes are snapshots. After you add lines to a job whose quote was already produced, produce a new quote version in ServiceM8 to send the updated price to your customer — otherwise they'll still see the old one.
Choosing how much detail to push
The Push detail choice decides how your estimate is broken down in ServiceM8:
- All items — every line, grouped under its section heading (the same detail you see in Sammy). Best if you want ServiceM8 to hold the full breakdown, for example to track materials and labour on the job.
- Groups only — one line per group, priced at that group's total. No individual items. This keeps the ServiceM8 quote clean and matches a grouped proposal.
- Project total only — a single line for the whole job at your total price.
Sammy starts on whichever option matches your proposal (the one tagged Matches proposal), so if you've already set your proposal to show groups or a total, the push follows suit — no more tidying the ServiceM8 quote by hand. You can change it for this push at any time before you click Send.
Whichever you pick, the prices are always correct — your Subtotal, GST, and Total in ServiceM8 match your Sammy proposal to the cent. The choice only changes how the lines are broken down, not the money.
If you've turned Scope of Work off on your proposal, it's left off the ServiceM8 Job description too (this applies when Sammy creates the Job).
What gets pushed
This is what lands when you choose All items (the fullest option). With Groups only each group becomes a single priced line; with Project total only the whole job is one priced line.
| Sammy | ServiceM8 |
|---|---|
| Estimate | Job with status "Quote" (new Job), or your lines added to the job you chose |
| Estimate number | Job's PO Number + first line of the description (new Job) |
| Scope of work | Job description (HTML stripped to plain text) — unless you've hidden it on the proposal (new Job) |
| Client | Client (Company) — created if not already there (new Job) |
| Client name | Contact First / Contact Last on the Job (new Job) |
| Client's extra contacts | Additional contacts on the Job — if the estimate is addressed to a particular person, they go on as the Job's main contact (new Job) |
| Site address | Job address (new Job) |
| Groups | Section heading rows on the Job |
| Items (materials) | Job Materials |
| Items (labour) | Job Materials prefixed with "Labour:" |
| Quantities & unit prices | Per-line on each Job Material |
| GST | Your default tax rate (or "No GST" for exempt estimates) |
When you push onto an existing job, Sammy adds the line items only — it leaves the job's own description, client and contacts as they are.
After pushing
When the push succeeds, the estimate status changes to In ServiceM8 and a status strip appears at the top of the estimate. You'll see the ServiceM8 Job number and a button to open ServiceM8.
If you pushed onto an existing job, remember to produce a new quote version in ServiceM8 so your customer sees the updated price.
You can keep editing the estimate in Sammy — unlike Simpro, ServiceM8 doesn't lock the Sammy estimate after a push. If you change the estimate and want to push again, see Re-pushing below.
Finding the Job in ServiceM8
ServiceM8 doesn't publish direct links to individual Jobs, so the "Open ServiceM8" button takes you to ServiceM8's home page. A newly-created Job is at the top of the Quotes list (Jobs are sorted newest-first by default). You can also search ServiceM8 by the estimate number — Sammy stores it as the Job's PO Number.
Re-pushing an Estimate
If you edit an estimate after pushing it, you'll see a "Pushed to ServiceM8 X days ago — re-push?" banner at the top of the estimate.
Re-pushing adds the updated lines — it doesn't overwrite what's already there:
- If you first pushed onto an existing job (or an imported one), the re-push defaults back to that same job and adds the new versions of your lines alongside the old ones. Tidy up the old lines in ServiceM8 if you want to — Sammy won't delete anything.
- If you first created a new Job, the re-push creates another new Job by default. The old Job stays untouched, so any photos, time entries or notes on it are safe.
You can change the destination before you confirm either way.
- Open the estimate
- Click the Re-push banner (or open the ServiceM8 drawer and click Re-push)
- Check the destination and the warning, then confirm
- The lines land the same way as a first push
Automatic Status Updates
Once you've pushed an estimate, you don't have to check ServiceM8 to see what your customer did. When the quote is accepted in ServiceM8 (the job becomes a Work Order), your Sammy estimate flips to Accepted on its own. When it's marked Unsuccessful, the estimate becomes Declined. You'll get a notification and a note in your Message Centre, just like when a customer accepts a Sammy proposal.
This happens within a few seconds of the change in ServiceM8 — there's nothing to turn on.
Refreshing status by hand
You can still pull the latest status yourself any time:
- Open the estimate
- Click the ServiceM8 chip on the metadata strip (or the dropdown next to Send Proposal)
- The drawer shows the current Job status, last refreshed time, and a push summary
- Click Refresh to pull the latest status from ServiceM8
The status reflects whatever the Job is set to inside ServiceM8 — Quote, Work Order, Unsuccessful, or Completed.
If Some Lines Fail to Push
ServiceM8 limits how fast we can send line items (180 per minute). Most pushes finish well inside this limit, but on very large estimates you might see a partial result — most lines pushed, a few failed.
If that happens, the drawer shows you which lines failed and why. Click Retry failed lines and Sammy will only re-send the ones that didn't make it the first time. The successfully-pushed lines aren't touched.
Disconnecting ServiceM8
- Go to Settings → Integrations
- Click Disconnect next to your ServiceM8 connection
- Confirm
Your past push history stays in Sammy, and Jobs you've already pushed remain in ServiceM8. Disconnecting only stops future pushes and status updates — it doesn't delete anything.
Using ServiceM8 Alongside Xero or Simpro
You can connect ServiceM8 at the same time as Xero or Simpro — Sammy doesn't block this.
One thing to watch: ServiceM8 has its own Xero integration. If both Sammy → Xero and ServiceM8 → Xero are turned on, the same invoice can land in Xero twice (once from Sammy, once from ServiceM8 when the job is completed). Pick one path and disable the other.
Troubleshooting
Connection expired
If your connection stops working:
- Go to Settings → Integrations
- You'll see a warning on the ServiceM8 card
- Click Reconnect and approve access in ServiceM8 again
"Reconnect to enable import" keeps appearing
Importing needs extra read permissions your original connection didn't have. Click Reconnect ServiceM8, approve the new permissions in ServiceM8, and try the import again. If it still asks, make sure you approved all the permissions on the ServiceM8 screen.
A photo or form didn't come in on import
Sammy skips any single file it can't pull and tells you how many. It also imports up to 20 files per job (newest photos first, plus your form PDFs) — anything beyond that you can add by hand. Forms only import on ServiceM8 plans that include Forms.
My customer accepted in ServiceM8 but the estimate didn't update
Status updates arrive within a few seconds. If one doesn't, open the estimate, click the ServiceM8 chip and hit Refresh to pull it manually. If you'd disconnected and reconnected ServiceM8, give it a moment — automatic updates start again on the fresh connection.
The pushed lines aren't on the customer's quote
ServiceM8 quotes are snapshots. If you added lines to a job whose quote was already produced, you need to produce a new quote version in ServiceM8 for the customer to see them. Also note: if a customer accepts an older version of the quote online, ServiceM8 restores that version's lines — which can remove ones you pushed afterwards.
"Price of some items have changed" banner on the ServiceM8 Job
Safe to ignore — see A Heads-Up About ServiceM8's "Price of some items have changed" Banner. Your Subtotal, GST, and Total in the right-hand summary are all correct, and the customer-facing Quote PDF is correct. Don't press "Apply Changes" — it'll knock about 10% off your total.
Duplicate clients in ServiceM8
The first time you push an estimate for a client (and create a new Job for it), Sammy creates a new Client (Company) in ServiceM8 — even if you already have that customer in there from somewhere else. ServiceM8's API doesn't let us search clients by email reliably enough to safely match them, so we create rather than risk attaching to the wrong record.
If you end up with a duplicate, you can merge clients inside ServiceM8. After the first push, Sammy remembers the ServiceM8 client for that Sammy client, so subsequent pushes reuse it — no more duplicates. Importing a job also links the client, so pushing an imported estimate back doesn't create a duplicate.
Contact name on the Job is split wrong
For client names like "John Smith", Sammy splits on the first space — first name "John", last name "Smith". For names with multiple words like "Van der Berg" or "Mary Anne Watson", the split is best-effort and may not match how you'd write it. You can edit the Contact on the Job inside ServiceM8 if needed.
Push fails
If a push fails completely, the drawer shows ServiceM8's error message. Common causes:
- No connection — connect ServiceM8 first
- No client on the estimate — make sure the estimate has a client
- No items in the estimate — add at least one item before pushing
- The chosen job was deleted — pick another job or push as a new one
- ServiceM8 rate limit hit — wait a minute and try again
- ServiceM8 plan doesn't include the API — check your ServiceM8 plan
Sections don't show as headings on the Quote PDF
ServiceM8 shows zero-priced rows (which is how Sammy sends group headings) as headings on most standard Quote templates. If you've heavily customised your template and headings aren't appearing, the line items still all push correctly — they just won't be visually grouped. Switching to a standard template fixes it.
Need Help?
If you're having trouble with the ServiceM8 integration, contact support and we'll help you sort it out.