
Integrations
ServiceM8 ↔ Google Calendar (UK): fix one‑hour shifts, duplicates and missing jobs around BST/GMT
TrainAR Team
1 month ago
4 min read
ServiceM8 ↔ Google Calendar (UK): fix one‑hour shifts, duplicates and missing jobs around BST/GMT
UK trades teams often hit three calendar headaches when linking ServiceM8 with Google Calendar: a mysterious one‑hour shift around daylight‑saving, duplicate events, and jobs that simply don’t show up. This practical guide explains exactly why it happens in the UK (BST ↔ GMT), how to configure both systems, and how to clean up without breaking your schedules.

Dispatcher comparing ServiceM8 schedule and Google Calendar with a BST→GMT one‑hour shift warning
Who this is for
- UK plumbing, electrical, HVAC, and building firms using ServiceM8 for dispatch with staff on Google Calendar
- Office coordinators and owners who want calendars to match the dispatch board exactly, even through clock changes
At a glance: the 3 causes
- Fixed time zones (UTC/GMT) instead of Europe/London on the org, users or devices.
- All‑day or “floating” events exported as UTC timestamps rather than date‑only, which shift by +1hr in BST.
- Two systems writing the same job in different ways (full 2‑way vs ICS subscription), creating duplicates or gaps.
The UK‑correct setup (10‑minute checklist)
- ServiceM8
- Company time zone: Europe/London.
- Every staff member profile: Europe/London.
- Integration: choose either 2‑way sync OR a read‑only ICS subscription, not both. Prefer 2‑way for live teams.
- Event titles: keep PII out; use “#JobNo ShortName, Area/Postcode”.
- Google Calendar (web)
- Settings → Time zone → Primary = London. Tick “Display secondary time zone” only if needed.
- If using ICS: add by URL to a dedicated calendar called “ServiceM8 Jobs – Read Only”.
- Disable duplicate notifiers if ServiceM8 already sends job reminders.
- Devices (iOS/Android)
- Set Automatically = ON; Region = United Kingdom; Time Zone = London.
- iOS: Settings → Calendar → Time Zone Override OFF (or London).
Fix the 1‑hour shift (BST/GMT) reliably
- Root cause: events saved/parsed in UTC rather than Europe/London.
- Quick fix
- In ServiceM8 and Google, set Europe/London everywhere (org + users + devices).
- Recreate two tests: one in September (BST) and one in November (GMT). Both should show the same local time.
- If all‑day jobs shift
- Ensure all‑day exports are date‑only (not 00:00Z‑23:59Z). If your current feed uses UTC timestamps, toggle All‑day off/on in ServiceM8 and resync, or switch to 2‑way sync.
Stop duplicates before they start
- Pick one write‑path
- Option A (recommended): ServiceM8 → Google (jobs) and Google → ServiceM8 (Busy blocks only from a single “Unavailability” calendar). Do not let generic Google events create jobs.
- Option B: Read‑only ICS in Google for visibility. Do not also enable 2‑way.
- Typical duplicate patterns and fixes
- Same calendar added twice under different Google accounts → remove one subscription/share.
- API tool (Zapier/Make) also creating calendar events → pause the automation or narrow triggers.
- Auto‑add invites on in Google + ServiceM8 invite → turn off Google “Automatically add invitations” for these calendars.
Make missing events reappear
- If using ICS
- Google caches feed updates; refresh can take hours. For urgent visibility, use 2‑way sync or open the ICS URL in a browser to ensure it serves fresh data.
- If using 2‑way sync
- Check permissions: the Google account connected to ServiceM8 must have “Make changes to events” on the target calendars.
- Confirm the event owner: open a missing event on the ServiceM8 job card, then search the exact title in Google across “All calendars”.
Recommended UK scheduling pattern
- Windows not promises: AM/PM or 10:00–12:00 for first visits; convert to exact times once access/parts are confirmed.
- Travel buffers: 20–30 mins urban; 40–60 mins rural. Build default buffers into your job templates.
- Emergency lane: hold back one slot per region for same‑day jobs.
- Privacy: keep full address/phone in ServiceM8 notes; keep Google titles clean (GDPR‑friendly).
Troubleshooting quick wins
- Event shows 09:00 in Google for a 10:00 job
- Google event time zone shows UTC/GMT → change to Europe/London; check device Time Zone Override.
- All‑day company holiday appears as 01:00–01:00
- Re‑save as true all‑day; avoid UTC timestamps in feeds.
- Duplicates after reconnecting
- Remove old ICS calendars first; then reconnect 2‑way. Create one fresh test job and confirm only one event appears.
Copy‑paste SOP for your team
Source of truth: ServiceM8
Google use: team visibility + staff unavailability
Time zone: Europe/London (org, users, devices)
Job titles: #JobNo ShortName, Area/Postcode (no PII)
Two‑way rules: Only Busy blocks from the “Unavailability” calendar create conflicts; no new jobs from Google
Change control: If an appointment time changes, edit in ServiceM8 only
Short video: linking ServiceM8 to Google Calendar
This UK‑made walkthrough covers the basic connection steps. It’s a good visual companion to the checklist above.
Appendix: 5‑minute diagnostic flow
- Check org/user/device time zones = Europe/London.
- Identify sync type: 2‑way vs ICS. If both, pick one and remove the other.
- Inspect a shifted event’s time zone in Google → should say London.
- Create two new test jobs (one in BST, one in GMT) → verify no 1‑hour offset.
- Audit for third‑party automations writing to calendars (Zapier/Make) and pause them during tests.
— Have a specific example that’s shifting or duplicating? Post it in the comments with the exact date/time and we’ll reply with the targeted fix.