CASE STUDY · IT SERVICES
Ticket updates that reach technicians in Google Chat
A managed IT services team worked its tickets in Kaseya BMS but talked in Google Chat. Peace Builders built a small integration that watches the ticket system, works out what actually changed, and sends the right technician a Google Chat message that buzzes their phone and links straight to the ticket.
Kaseya BMS · Google Chat · Google Cloud
@Sam Rivera You have been assigned a ticket — #48213
Front desk printer offline after update
Org: Maple Creek Dental • Opened by: Dana Whitfield
Status: New • Priority: High
Open ticket in BMS
@Sam Rivera New note on your ticket — #48213
Front desk printer offline after update
Org: Maple Creek Dental
Restarted it twice, still showing offline. Can someone remote in before 10?
Open ticket in BMS
5
kinds of ticket change detected and explained
1
daily sweep that backfills anything missed
58
automated tests behind the integration
≈$0
a month to run, in the client’s own cloud
At a glance
Who
A managed IT services provider and its team of technicians
Industry
IT services
Connects
Kaseya BMS ticketing to Google Chat, inside the client’s Google Workspace
Timeline
Built July–August 2026; one-technician pilot from August 10; whole team from September 29, 2026
Engagement
A custom integration, deployed in the client’s own Google Cloud project
Built with
TypeScript, Node.js 22, Google Cloud Functions, Cloud Tasks, Firestore, Secret Manager, the Google Chat API
Last updated September 30, 2026
Why ticket updates were getting missed
The team’s tickets lived in Kaseya BMS, but the team itself lived in Google Chat. That’s where technicians talked to each other all day, on their laptops and their phones.
So every ticket change had to cross a gap. A new assignment, a customer reply or a status change happened in BMS, and a technician only saw it if they went looking. When someone is on site, driving between clients or heads-down on another problem, “went looking” can mean much later.
The brief was simple: when a ticket changes, the person responsible should hear about it where they already are, with their phone making a noise, and one tap away from the ticket.
How we approached it
We kept it small and invisible: no new app for technicians to learn, nothing to log into. The plan had three steps.
- Listen to the ticket system. BMS calls a secure web address whenever a ticket is created, updated or deleted.
- Work out what actually changed. BMS only says “this ticket was updated.” The integration fetches the full ticket and compares it with the last copy it saw, so it can say “assigned to you,” “new note” or “status changed.”
- Tell the right person, loudly. Each message @mentions the technician, which is what makes Google Chat notify their phone, and links straight back to the ticket.
We rolled it out carefully. First it ran in a shadow mode that logged every message it would have sent. Then it went live for a single technician on August 10, 2026. After seven weeks of real tickets, it switched on for the whole team on September 29.
How the integration works
It is a small serverless pipeline that runs entirely inside the client’s own Google Cloud project, so they own it, they control it, and they hold the bill.
The illustration at the top of this page uses fictional names, but it follows the exact format technicians receive.
The details that made it reliable
Most of the work in an integration like this goes into the cases that don’t happen on a demo. These are the ones that mattered here.
- The @mention has to be real. Google Chat only notifies someone when the mention uses their internal user ID, not their email address. The integration looks up each technician in the Google Workspace directory to get it.
- No duplicates, no silence. Webhooks can arrive twice. Each message gets a short-lived key so a repeat collapses, and a queue with retries means a brief outage delays a message instead of losing it. A daily sweep sends anything that still slipped through.
- Customer replies read like messages, not code. Notes that arrive as email HTML are cleaned up before they are sent.
- Context in the message. Assignment messages include the customer’s organization and who opened the ticket, so a technician can triage from the notification.
- The right people, not everyone. Primary and secondary assignees are notified. People who are only copied on a ticket are not, because they would drown in noise.
- Nothing kept longer than needed. Ticket snapshots expire automatically after 24 hours, and credentials live in Google Secret Manager.
Built with
- TypeScript on Node.js 22: three small Google Cloud Functions (receiver, worker and daily sweep).
- Google Cloud Tasks: the queue that retries with backoff.
- Firestore: ticket snapshots and duplicate protection, with a 24-hour expiry.
- Google Chat API and Admin SDK: direct messages, and the directory lookup that makes @mentions work.
- Kaseya BMS REST API and webhooks: the ticket data.
- Vitest: 58 automated tests covering the logic that decides who hears what.
What changed for the team
Every technician now hears about their tickets in Google Chat, the place they already work, as BMS reports each change.
- Assignments arrive on the phone. The @mention makes Google Chat notify the technician, even when they are away from their desk.
- Triage from the notification. The ticket number, subject, customer, status and priority are in the message, and one tap opens the ticket.
- Customer replies aren’t buried. New notes arrive with the customer’s words quoted.
- They own it. It runs in their Google Cloud project, on their billing, for well under a dollar a month.
Small integrations, big relief
This project is a good example of what we mean by software you don’t have to worry about: two tools the team already paid for, connected by a few thousand lines of careful code, and one daily annoyance gone.
Your Software Department™ is our flat monthly subscription for exactly this kind of work: unlimited software requests, daily progress updates, and most tools shipped in 3–7 days. See how Your Software Department works →
Questions about connecting Kaseya BMS and Google Chat
Peace Builders connects them with a small integration on Google Cloud. Kaseya BMS sends a webhook when a ticket changes, the integration works out what changed, and it sends the assigned technician a Google Chat direct message with an @mention and a link to the ticket.
New tickets assigned to them, assignment changes, new notes, status changes and deleted tickets. Primary and secondary assignees are notified; people who are only copied on a ticket are not.
Yes, for two one-time steps: installing the Chat app for the organization, which creates the direct-message spaces, and giving the integration read access to the user directory so @mentions work.
Effectively nothing. It handles a few thousand requests a month inside Google Cloud’s free tier, and Google Chat messages have no per-message charge. The only line item is a small database that costs pennies a month.
Yes. Peace Builders, an Indiana software studio, builds integrations between ticketing, CRM, accounting and chat tools. Many clients work with us through Your Software Department™, a flat monthly subscription for ongoing software work.
Have two tools that should be talking?
Tell us what your team is copying, checking or chasing by hand. We’ll tell you honestly whether software can fix it.