Every now and again I run into some strange edge case within the world of B2B tech where things just don’t work the way I’d expect. I’m going to start flagging some of those cases here under the tag ‘Arcane Tech Stuff’. This is partly for my future self, but hopefully these posts can help you accelerate your own troubleshooting if you’re running into something similar!
The Question
Why is every link I share in Slack getting pinged when users say they aren’t clicking them?
The Answer
To retrieve metadata for links posted in Slack (images, descriptions, etc.), Slack fires off a GET request to every link shared anywhere in the platform with the user agent Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots). This lets the service grab structured data from <meta> tags, as well as from other tags within the <head>.
Core link with full details: https://api.slack.com/robots
Context
I once created automation for a client so they could quickly change data within their MAP using links in Slack. Think something like ‘one-click disqualification’ for inbound leads using a link embedded in the initial notification within Slack. Something like:
| [First Name] has MQLed!
|
| Email: [email]
| Title: [title]
|
| Sequence this lead | Disqualify this lead
I set it up so that each of those links was a Zapier webhook endpoint that looked something like: https://hooks.zapier.com/hooks/catch/?mapID=12345&status=Disqualified
Then I configured a Zap to watch for GET requests aimed at that endpoint, grab the data from the query parameters, and trigger a back-end API request to the MAP/CRM in question to update the field.
But I quickly noticed that these Zaps were getting triggered automatically without users ever clicking the links — debugging that behavior is how I came across the Slack Robots page!
How you can work around this
Thankfully, most services like Zapier or Workato allow you to either filter inbound requests or add a filter farther down in the flow. So if you’re running into something similar (or just want to avoid ever running into this yourself) you can filter out requests from Slack robots by looking at the user_agent within the header of the inbound request.
Something along the lines of:
user_agent doesn't contain 'Slackbot-LinkExpanding'
Alternately, you can also just not push links like this to Slack, but where’s the fun in that 😉
Hope this helps someone out!