Integrations
Google Chat
Send your Lineman cost digest and spend alerts into a Google Chat space as a card. You create an incoming webhook in the space, paste the URL into Lineman, and send a test card to prove it lands.
Not generally available yet. Google Chat sits behind the integrations feature flag, so the connect page is hidden for accounts that do not have it turned on and the steps below would have nowhere to paste the URL. Ask us to enable it before you set the webhook up.
Before you start
- Incoming webhooks are a Google Workspace feature. They are created inside a space, not from a personal account, so this is set up by someone who is a member of the space you want the digest in.
- Your administrator can switch webhooks off for your whole domain. If the space's Apps and integrations menu has no webhook option, that is what has happened, and no amount of pasting will work around it. It is a change only they can make.
- There is nothing to create in Google Cloud. A full Chat app would need a Cloud project and an OAuth client. A webhook needs neither, which is why we use one: the URL is the entire credential and you can have it working in about a minute.
Create the webhook in Google Chat
- 1Open the space the digest should land in and choose Apps and integrations from the space menu.
- 2Choose Webhooks, then Add webhooks.
- 3Give it a name your team will recognise. That name, and the avatar if you set one, is what messages appear to come from, so pick something obviously ours rather than something generic.
- 4Copy the URL it shows you. That URL is the entire credential: the
tokenit carries lets anyone holding it post into the space, so do not put it in a ticket, an email or a chat message. Lineman stores it encrypted and never shows it back to you.
Copy the WHOLE URL, query string included. It ends in ?key=...&token=... and both halves are needed. A URL that loses one on the way through a clipboard or a text editor looks perfectly reasonable and is not, which is why we refuse it the moment you save rather than on your first digest.
Connect it in Lineman
- 1Open Dashboard, Integrations, Google Chat and paste the URL. You have to be an administrator of your Lineman company to save it; other members can see the connection but not change it.
- 2Label the space if you like. The label is only for your own reference in the dashboard, so you can see where the digest goes without opening Chat.
- 3Press Send a test. It posts a real card into the space with zeroed figures, so go and look at Chat: the destination is only proven once a card has actually arrived.
Pasting a fresh URL over the old one is also the repair. Saving replaces the stored URL and clears the previous failure, so a destination marked broken goes back to healthy without you disconnecting it first.
Only chat.googleapis.com is accepted
Lineman posts to this URL from our servers on a schedule, so an arbitrary address would turn the digest into a request forwarder pointed wherever it was told. Google Chat mints webhooks on exactly one host, so the check is an exact match on chat.googleapis.com rather than a list of permitted domains, and the path has to look like /v1/spaces/SPACE_ID/messages.
Anything else is refused the moment you save, and the message names what was wrong: a host that is not Chat, a URL that is not https, a path from somewhere else, or a missing key or token. In practice that error nearly always means a URL from a different tool went into the wrong box, or the copy was truncated.
What lands in the space
- Three figures and a button. The card shows the period it covers, total spend, and what Lineman saved you, with an Open Cost Explorer button through to the full breakdown.
- Each figure is its own row. Google Chat has no equivalent of the compact label and value block Teams uses, so the same numbers are laid out the way Chat reads best rather than the way another product does.
- Every message also carries a plain-text summary. That is what your phone shows in the notification, and it means the figures stay legible anywhere the card itself is not rendered.
- Google caps a message at 32,000 bytes and a card at 100 widgets. A digest is nowhere near either, and we refuse to send an over-size payload rather than let Chat silently drop part of it.
If the webhook stops working
- Deleting the webhook in Chat does not tell Lineman. The next delivery is rejected by Google, and rather than counting that as sent, Lineman marks the destination as broken and records the reason, so you see it the next time you open the integration page.
- A failed test is recorded the same way. If you press Send a test, it fails and you walk away, the destination is still flagged when you come back rather than looking connected.
- Google allows one message per second per space, shared across every webhook in it. We send one message per delivery, so you should never see this, but if something else in the space is busy the error says it was rate-limited rather than pretending the URL is wrong.
- Pause rather than disconnect if you only want deliveries to stop for a while. The URL is kept, deliveries are skipped, and Send a test is refused while it is paused, so turn it back on before you test.
Reading the numbers
- Money is in US dollars. Every amount on the card is a formatted dollar figure. Lineman does not report money in cents, so there is nothing to divide or convert.
- The figures cover the whole company. The digest is company-wide, not the spend of whoever connected it, so pick a space whose members are allowed to see company totals.