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

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.

  1. Listen to the ticket system. BMS calls a secure web address whenever a ticket is created, updated or deleted.
  2. 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.”
  3. 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.

How ticket changes in Kaseya BMS become Google Chat messagesKaseya BMS sends a webhook when a ticket changes. A receiver checks it and queues it. A worker fetches the full ticket, compares it with the last saved copy to work out what changed, and sends the technician a Google Chat direct message with an @mention and a link. A daily sweep catches anything missed.Kaseya BMSa ticket is created or updatedWebhook receiverchecks the secret, replies fastQueueretries if anything is downWorkerfetch · compare · pick whoGoogle Chat DM@mention + ticket linkDaily sweepbackfills missesLast snapshotkept 24 hours

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

How can Kaseya BMS ticket notifications be sent to 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.

Which ticket changes does it notify technicians about?

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.

Does it need a Google Workspace administrator?

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.

What does it cost to run?

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.

Can Peace Builders connect our other tools the same way?

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.