/Buffer — Building the Slack-to-Buffer Integration

Sync APIs Together to Bring Content Shared inside Slack to Social Media Channels

I think Jim Hitch gave an excellent explanation of who the Product Creator role is. This person is not just facilitating from above but he or she is a fellow maker. That description resonates a lot with my product experience.

I have been a long time user of the Buffer products, and really enjoy their latest addition in Pablo and in Respond. Since then, I joined the Buffer Slack Community, moderated by Alfred Lua, to learn more about the users, and find out more about how they are using Buffer.

One day on the #Buffer-Products channel, one member asked if there is a Slack integration. I suggested for him to check out IFTTT to connect the two applications. I realized he meant Slack-to-Buffer integration and not Buffer-to-Slack integration. If you search “Slack Buffer integration”, it will give you the latter.

  • Buffer-to-Slack: Use Buffer to share content into Slack.
  • Slack-to-Buffer: Using Slack command to post messages or links and share them on Buffer.

So I searched on the Slack App Store and was surprised that a Buffer integration did not exist. Also, I reviewed Buffer’s transparent product roadmap, and it is not in there either.

But it makes sense, the Buffer user research team have not fully scoped out this request. Here are some assumptions to validate first:

  1. How many of Buffer users are requesting this?
  2. How many Buffer users are also using Slack?
  3. How often do users want to Buffer an article shared on Slack?
  4. How would they use this integration on Slack mobile?

The very least, I believe I would be a power user. Previously my team and I would share a lot of knowledgeable articles, and then A LOT of stupid and silly content on our #Random channel. I can totally see personally using this Slack-to-Buffer integration to share funny stuff on my Facebook or Twitter, and share professional content on my LinkedIn or Twitter. If you do too, sign up for our beta here!

I was able to dig up a Buffer UserVoice feature request submitted back in 2014. The OP (original poster) was a really early adopter of Slack! The idea itself has 11 votes. So the total number of users? We have at least 11 votes + OP + the Buffer Community member + myself.

I decided to give myself a 2-hour limit to investigate the Slack and Buffer technology. I want to uncover what are the technical difficulties and user experience challenges. How should I prototype it? It would be very difficult to mock it up and have beta users try it because this tool would not have any visual interface. Would it be easier to create a demo video that mimics this action using the Wizard of Oz experimentation? I believe the work of coordinating the fake output would outweigh the actual workload for coding the project.

What were the product specs? A user should be able to type “/b…” and Slack would tip the user to use /buffer. The user has to select what social media channel they want to post it on. The user then adds a URL. The user can also optionally add a message.

User Usage

  • Slack Autocomplete Command
  • Description: Send CHANNEL | URL | TEXT to Buffer
  • Hint: [twitter | facebook | all] [URL] [your message]

How does this translate from product spec into technical requirements? I should be able to receive the message on the backend. Split the string into an array by spacing. The items in this array should translate into:

  1. Channel
  2. URL (verify if it is a domain and verify if it is not empty)
  3. Message (verify if it is not empty)

I should then select the channel in the backend. Push the URL as a media or link data type. And push the message as text data.

What libraries can I leverage? I previously prototyped a Buffer application extension for ideating questions to increase engagement for Facebook Group communities, so I have the basic Buffer PHP building blocks.

Sent to Buffer

Also, I previously play around with Slack notification hook, maybe there is some code I can use there. After 10min of searching, I found ISITUP GitHub library. There is a great step by step guide on how to set up your own custom Slack slash commands. A lot of the 2 hour time I spent, was confirming and testing the ISITUP code. In my head, I always think it’s “I sit up”, oh cool, an app to remind me to do some sit-ups! Ha!

The ISITUP code is here: https://github.com/mccreath/isitup-for-slack/blob/master/isitup.php

I realized the most important part was just the $_POST variable. I was surprised how easy it was, just have Slack send a Post request.

Then I turn on the slash command at the Slack custom integration.

I hosted my project on my Product Hacker domain.

I added the short tip command for /buffer.

Once a user post on Slack with the help of the command tip, there will be a confirmation on success returned.

The code to the backend:

  1. Splits the message
  2. It checks if each piece of information (channel, URL, message string) and verifies if it is in its correct configuration.
  3. If not, it should be re-adjusted.
  4. With the Buffer PHP library, it can be sent to the queue.

Here is a Demo Video of how this works:

This prototype took a bit over 2 hours to complete. It was definitely a fun experience, connecting the technologies. Along the way, I was able to uncover a lot of user experience issues.

How to get Slack users to remember to use a command? Users have to change their existing behavior and remind themselves to use /Buffer. One of the approaches would be returning a public success confirmation from /Buffer after the first user has triggered it. This gives a reminder and reinforces all members of the channel to use the /Buffer command.

Next step, I reached out to the Buffer community member and the UserVoice OP to ask what spark this common request. I put together a list of user questions to interview them.

User Questions

  • How did you come up the idea / request to want to Buffer a link in the Slack command line?
  • How often do you share links with your team or community in Slack?
  • What are your current methods to Buffer links you found in Slack?
  • How many social media accounts do you have connected to Buffer?
Slack Member Request
UserVoice Request

I was glad to hear both users were very excited to use this application. Now to further validate the case to build this tool, I started a landing page where we can collect feedback, and collect emails. Sign up now here.

Below I break down additional product ideas and product specifications. There are still a whole bunch of work left to be done to make this prototype more official and live for Buffer users. Love to hear your feedbacks and product suggestion in the comment section below and how we can make this integration a reality.

Additional Product Questions:

  • Should the user need to schedule time and date on the Slack command line?
  • Should the user need to call back a list of social media channels?
  • Should the user need to define the social media channel at all as part of the command?
  • How to have each user integrate Buffer and associate to their Slack ID?

Features Backlog

  • Authenticate Slack application
  • Each user needs to authenticate their Buffer account
  • Buffer account ID matches up to Slack account ID
  • The user receives Error message if the social media channel does not exist or if URL is a broken link.
  • The user receives Confirm message, display to the Public one time.
  • User receives Error message on cap post limit.
  • User can send text only without URL
  • Detect if URL placeholder is not URL format, route the following string as Text.

Chores Backlog:

  • Case insensitive on channel command
  • Example: “twitter” vs. “Twitter” vs. “TWITTER”
  • Reduce server timeout.

Icebox:

  • The user can type “/buffer help” or “/buffer -h” to find command list.
  • The user can put in a schedule on the Slack command line to buffer to.
  • Parse variation of time stamps
  • Article URL would be parse on the backend to fetch meta tags and then publish on Buffer.
  • The user can share image URL. Image URL should be parse and add as a media on Buffer.
  • The user should be warned about NSFW content.
  • The user can use option “Share Now”.
  • “/Buffer -queue” can recall existing list of links on the schedule
  • “/Buffer -analytics” can recall content and analytics of the last 7 days
  • “/Buffer -channels” can recall user’s social media channels

Gary-Yau Chan is a SaaS entrepreneur and currently lives in Brooklyn NY. You can also message him on Twitter @garyyauchan.