ServiceM8 Integration
Connect your ServiceM8 account to push estimates straight from Sammy into ServiceM8 as a Quote. Sammy creates the Job for you, drops your client onto it, and adds every line item from your estimate.
You can use this either to send the quote to your customer through ServiceM8, or to anchor a job for backcosting once the work is won — the push is the same either way.
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).
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 scopes Sammy needs. We only ask for what we use — creating Jobs, adding line items to Jobs, looking up and creating Clients, attaching Contacts to Jobs, and reading your tax rates and job categories. We never read your other jobs, time entries, or staff data.
Pushing an Estimate to ServiceM8
Once your estimate is ready, you can push it to ServiceM8 as a Quote.
- Open the estimate
- Click the dropdown arrow next to Send Proposal (or the ServiceM8 button on the metadata strip)
- Select Send to ServiceM8
- Review the summary — client name, site address, group count, item count, total
- Click Send to ServiceM8
- Wait a few seconds while Sammy creates the Job and pushes the line items
The estimate is sent to ServiceM8 as a Quote with all your line items, sections, GST, and the estimate number.
What gets pushed
|
Sammy |
ServiceM8 |
|---|---|
|
Estimate |
Job with status "Quote" |
|
Estimate number |
Job's PO Number + first line of the description |
|
Scope of work |
Job description (HTML stripped to plain text) |
|
Client |
Client (Company) — created if not already there |
|
Client name |
Contact First / Contact Last on the Job |
|
Site address |
Job address |
|
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) |
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.
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. Your new 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 creates a brand new Job in ServiceM8 — it doesn't update the old one. The old Job stays in ServiceM8 untouched, so any photos, time entries, or notes you've added there are safe. You can delete the old Job in ServiceM8 yourself if you want to.
- Open the estimate
- Click the Re-push banner (or open the ServiceM8 drawer and click Re-push)
- Review the warning and confirm
- The new Job lands the same way as a first push
Checking and Refreshing Status
- 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 you've set the Job 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 — 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
"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, Sammy always 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 UUID for that Sammy client, so subsequent pushes for the same client reuse it — no more duplicates.
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 items in the estimate — add at least one item before pushing
- 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.