Jump to a Section

Overview

The first time you add a Slack card to a FLO, you need to set up a configuration for that Channel. Setting up a configuration will allow you to connect the Designer to your Slack account, save the data, and reuse that configuration next time you build a FLO with this card. That way, you don’t have to sign in every time you want to build a FLO with this Channel. After you’ve set up one configuration, you can choose to use that configuration again, or set up a new one.

You can set up and save multiple configurations and share them with your teammates. Here’s how to set up a new configuration in Slack:

  1. Add the Slack card you would like to use to your FLO. If you already have configurations set up, you will have to select Add Account to create a new configuration. If you don’t have any configurations set up, you will automatically be taken to the next step.
  2. Name your configuration. Choose something unique, since you may need to be able to tell multiple configurations apart in the future.
  3. Click Authorize.
  4. In the popup window, select the Slack account you would like to connect to. You may be asked to sign into Slack before you can complete this step.
  5. Next, select Authorize to give the Designer access to your Slack data. Note that this allows the Designer to send messages on your behalf. You can reuse this configuration any time you use the Slack Channel in a FLO.

    Events

    • New Message in Channel

      This Event will start the FLO every time there is a new message in a specific Slack Channel.

      NOTE: Be careful if your FLO sends an additional message to the channel because you could create an infinite loop if the FLO continues to respond to its own responses. If you want to monitor a private channel, see New Message in Private Channel.

      To configure this card, you must complete the following steps:

      1. Choose a Slack account that has already been configured, or select “New Account” to connect a new account.
      2. Choose the Slack Channel you would like to monitor from the drop-down list. This list only includes the Channels you are currently a member of.
      3. If you are unable to connect to your account, you will receive an “INVALID CONFIG” message and you will not be able to finish configuring the card. Click the Accounts tab to go back and select a different account.

      Options

      • Your Channels (dropdown): a list of the public channels you can select from to monitor.

      Output Data

      • Message
        • Text: the text of the new message
        • Timestamp: The unique timestamp of the message
      • Author
        • Full Name: the full name of the user who posted the message
        • Username: the slack username of the user who posted the message. Does not include the @ symbol (e.g. flo not @flo). Drag this output to the “Search User by Username” Action to get more information about the user.
        • User ID: the unique Slack user ID of the user who posted the message
    • New Message in Private Channel

      This Event will start the FLO every time there is a new message in a specific private Slack channel.

      NOTE: Be careful if your FLO sends an additional message to the channel because you could create an infinite loop if the FLO continues to respond to its own responses.

      To configure this card, you must complete the following steps:

      1. Choose a Slack account that has already been configured, or select “New Account” to connect a new account.
      2. Choose the private Slack channel you would like to monitor from the drop-down list. This list only includes the Channels you are currently a member of.
      3. If you are unable to connect to your account, you will receive an “INVALID CONFIG” message and you will not be able to finish configuring the card. Click the Accounts tab to go back and select a different account.

      Options

      • Your Channels (dropdown): a list of the public channels you can select from to monitor.

      Output Data

      • Message
        • Text: the text of the new message
        • Timestamp: The unique timestamp of the message
      • Author
        • Full Name: the full name of the user who posted the message
        • Username: the slack username of the user who posted the message. Does not include the @ symbol (e.g. flo not @flo). Drag this output to the “Search User by Username” Action to get more information about the user.
        • User ID: the unique Slack user ID of the user who posted the message
    • New Pinned Message

      This Event will start the FLO every time there is a new pinned message in a specific Slack Channel.

      NOTE: Be careful if your FLO sends an additional message to the channel because you could create an infinite loop if the FLO continues to respond to its own responses.

      To configure this card, you must complete the following steps:

      1. Choose a Slack account that has already been configured, or select “New Account” to connect a new account.
      2. Choose the Slack Channel you would like to monitor from the drop-down list. This list only includes the Channels you are currently a member of.
      3. If you are unable to connect to your account, you will receive an “INVALID CONFIG” message and you will not be able to finish configuring the card. Click the Accounts tab to go back and select a different account.

      Options

      • Your Channels (dropdown): a list of the public channels you can select from to monitor.

      Output Data

      • Message
        • Text: the text of the new message
        • Timestamp: The unique timestamp of the message
      • Author
        • Full Name: the full name of the user who posted the message
        • Username: the slack username of the user who posted the message. Does not include the @ symbol (e.g. flo not @flo). Drag this output to the “Search User by Username” Action to get more information about the user.
        • User ID: the unique Slack user ID of the user who posted the message
    • Slash Command

      This Event will start the FLO every time someone sends a slash command to a Slack bot.

      Note: Use with “Respond to Command” actions.

      Note: Slash Commands are initiated from the message box in Slack, but they aren’t messages. A submitted Slash Command will cause a payload of data to be sent from Slack to an app.

      Output Data

      • Command

        • Slash Command (text): The command that was typed in to trigger this request.

        • Text (text): the part of the Slash Command after the command itself. This is user input that does not necessarily follow a pattern, and is commonly used to provide additional context for the command.

        • Response URL (text): a URL that can be used to respond to the command.

        • Team ID (text): the team ID of the user that sent the command. This may be necessary for the command response.

        • Team Domain (text): the domain name of the team that the command-sender belongs to. This may be necessary for the command response.

        • Channel ID (text): the ID of the channel from which the user sent the command. This may be necessary for the command response.

        • Channel Name (text): the name of the channel from which the user sent the command. This may be necessary for the command response.

        • User ID (text): the unique Slack user ID of the user who sent the command.

        • User Name (text): the Slack username of the user who sent the command.

      External Documentation

    Actions

    • Archive Channel

      Archives a Slack channel, which removes it from the list of active conversations. (See Slack Help for more details.)

      Input Fields

      • Name or ID (text): Specifies the channel you want to archive. Use either the unique ID for the channel (often output by another Slack command, such as Create Channel) or a name of the channel. Channel names are all lowercase, don’t contain spaces or periods, and are less than 21 characters.
    • CreateChannel

      Use this Action to create a new public channel in Slack as part of a FLO. This channel is created in the organization you selected when you authenticated Slack.

      Input Fields

      • Channel
        • Name (text): the name of your channel. Must be lowercase, may not contain spaces or periods, and must be fewer than 21 characters.
        • Purpose (text): a brief description of the purpose of your channel.
        • Type (dropdown): the visibility of your channel. You can set the Type to either Public or Private.

      Output Data

      • Channel
        • ID: the ID of the channel you have just created.
    • Custom API Action

      This action allows you to make a custom, authenticated HTTP call to the Slack API.

      NOTE: This is not like any of the other Slack cards; this card shows some of what goes on behind the scenes on other cards. If you have no experience working with API calls this may be a challenge, however this card is highly customizable. Good luck, and it may help if you refer to the documentation!

      Options

      • Request Type (dropdown): your available HTTP request methods. There are 5 supported HTTP request methods (sometimes called verbs) in custom API calls:

        • GET: retrieves data from a web server based on your parameters. GET requests a representation of the specified resource, and if successful will receive a 200 OK response message with the requested content. Additional documentation here.

        • POST: sends data to a web server based on your parameters. POST requests include actions like uploading a file. Multiple POST’s may result in a different outcome than a single POST, so you should be cautious about unintentionally sending multiple POST’s. If a POST is successful, you will receive a 200 OK response message. Additional documentation here.

        • PUT: sends data to a location in the web server based on your parameters. PUT requests include actions like uploading a file. The difference between a PUT and POST is that PUT is idempotent, meaning that the result of a single successful PUT is the same as many identical PUT’s. If a PUT is successful, you will receive a 200 response message (usually 201 or 204). Additional documentation here.

        • PATCH: applies partial modifications to a resource on a web server based on your parameters. PATCH is not idempotent, meaning that the result of multiple PATCH’s could have unintended consequences. If a PUT is successful, you will receive a 200 response message (usually 204). Additional documentation here.

        • DELETE: deletes the specified resource from the web server based on your parameters (if the resource exists). If a DELETE is successful, you will receive a 200 OK response message. Additional documentation here.

      Input Data

      • Relative URL (text): the address on the web server you are attempting to interact with. Relative URL means that you don’t have to explicitly specify the protocol at the beginning of the URL (such as “http://“). This suggests to the web server that the interaction is occurring on the server (in this instance).

        Example: /api/conversations.create
      • Query (object or text): JSON object that determines the action taken at the URL.

        Example: {"name":"something-urgent"}
      • Headers (object): JSON that determines the content type of the request. This will usually be a replica of the example below.

        Example: {"Content-type":"application/json"}

      Output Data

      • Status Code (Number): the success or failure of your HTTP request. Here is a list of all status codes.

      • Headers (object): a more detailed context for the response/status code that doesn’t relate to the output body. Not all headers that appear in a response header are response headers, meaning that some are unlikely to be useful to you.

      The response headers are dependent on the HTTP request you choose in options.

      • Body (object): depending on the HTTP request you chose in Options, you may receive some data back. That data, such as the data from a GET request, will be contained in this Body object.
    • Invite User to Channel

      This action invites the given user to a specified channel.

      Options

      • Your Channels (dropdown): a list of all the channels you can invite the new user to.

      Input Data

      • Username (text): the name of the user you are inviting to the Channel selected in Options.
    • Join Channel

      This action joins you to the given channel name.

      Input Data

      • Channel Name (text): the name of the channel you want to join.

      Output Data

      • Channel ID (text): the ID of the channel you joined.
    • Leave Channel

      This action allows you to leave the specified Slack channel.

      Input Data

      • Channel Name (text): the name of the channel you want to leave.

      Output Data

      • Channel ID (text): the ID of the channel you left.
    • Read Message History

      This card returns information about messages received on Slack.

      Input

      • Channel
        • Name (text): Input the name of the channel to read from.
      • Range
        • Start Date (Date): Input the date at which to start reading messages from.
        • End Date (Date): Input the date at which to stop reading messages from.
        • Maximum Messages Returned (Number): Set a limit for a number of messages to read.

      Output

      • Messages
        • Text (text): Returns the content of the messages.
        • Timestamp (Time): Returns the time at which the messages were sent.
        • Author ID (text): Returns the distinctive ID which identifies the author of messages.
    • ReadUser

      This card returns information about a user in slack.

      Options

      • Field Type (dropdown): choose which input you would like to use to identify the user, either their User ID, Username, or Email.

      Input

      • User

        • User ID (text): The specific identification for the user is required. The “Search User by Username” and “Search User by email” cards return this ID and can be dragged to this card.

        or:

        • Username (text): The user’s username on Slack.

        or:

        • Email (text): The email address associated with the user’s Slack account.

      Output

      • User
        • Full Name (text):  Returns the full name of the user.
        • Email (text): Returns the email of the user.
        • User ID (text): Returns unique ID of the user.
        • Username (text): Returns the username of the user.
    • Respond to Command - Delayed

      This action responds to a slash command sent by a user to a Slack bot with a delay. You should use the delayed response if the FLO runtime is >3 seconds.

      Note: Use with “Slash Command” event.

      Note: Slash Commands are initiated from the message box in Slack, but they aren’t messages. A submitted Slash Command will cause a payload of data to be sent from Slack to an app.

      Input Data

      • Command

        • Response URL (text): a URL that can be used to respond to the command.

        • Message Text (text): a message sent back to the user who sent the slash command.

        • Response Type (dropdown): allows you to determine the visibility of the response. “Visible to Channel” allows anyone with access to the channel to view the response as well as the initial slash command, and “Visible to User” does not show the slash command in the channel, nor the response.

        • Attachments (object): JSON code that must follow the format shown in the API documentation linked below.

      External Documentation

    • Respond to Command - Real Time

      This action responds to a slash command sent by a user to a Slack bot immediately. You should use the Respond to “Command - Delayed” card if the FLO runtime is >3 seconds.

      Note: Use with “Slash Command” event.

      Note: Slash Commands are initiated from the message box in Slack, but they aren’t messages. A submitted Slash Command will cause a payload of data to be sent from Slack to an app.

      Input Data

      • Command

        • Response URL (text): a URL that can be used to respond to the command.

        • Message Text (text): a message sent back to the user who sent the slash command.

        • Response Type (dropdown): allows you to determine the visibility of the response. “Visible to Channel” allows anyone with access to the channel to view the response as well as the initial slash command, and “Visible to User” does not show the slash command in the channel, nor the response.

        • Attachments (object): JSON code that must follow the format shown in the API documentation linked below.

      External Documentation

    • Search Channels

      Search for one or more channels matching certain criteria

    • SendDirectMessage

      Send a direct message to someone in your team. If you would like them to just get a notification from Slack – rather than a personal message from you – use Send Slackbot Message instead.

      Options

      • Unfurl URLs? (True/False): Slack can scan links found in messages and creates message attachments based on the content it finds in those links (e.g. a preview of a linked website). Choose Yes or No to indicated whether or not you want this behavior.

      • Field Type (dropdown): choose which input you would like to use to identify the user, either their User ID or Username.

      Inputs

      • Username: (text) The username of the person to send the message to. It can only be a single person. Slack displays usernames preceded by a @ but you should not include the @ in the username you provide.

        or:

      • User ID (text): The specific identification for the user is required. The “Search User by Username” and “Search User by email” cards return this ID and can be dragged to this card.

      • Message: (text) The text of the message you would like to send. You may include :emojis:, #channels, @users, and /commands just like you would in a regular Slack message.

      Output

      • Timestamp: (text) The precise timestamp of the message that was sent (guaranteed to always be unique within a thread and used by Slack for sorting.)
    • Send Message to Channel

      Send a message to a Slack channel. The channel must already exist and you must be a member in order to be able to send a message to it.

      Options

      • Your Channels (dropdown): The channel to send the message to (choose from the list of channels you are currently a member of.)
      • Send as Bot? (dropdown): Select ‘Yes’ if you want the message to appear as being sent from a bot, or ‘No’ to show as being sent from you. If you send as a bot, you will get a notification if you are subscribed to notifications for this channel. If you send the message as yourself, you will not get a notification. Sending as a bot will also trigger any of your FLOs that look for a New Message in Channel event, whereas sending as yourself will not.
      • Unfurl URLs? (True/False): Slack can scan links found in messages and creates message attachments based on the content it finds in those links (e.g. a preview of a linked website). Choose Yes or No to indicated whether or not you want this behavior.

      Inputs

      • Message Text: (text) The text of the message you would like to send. You may include :emojis:, #channels, @users, and /commands just like you would in a regular Slack message.
      • Slackbot Name: (text) The name for the sender to show up in the slackbot channel, e.g. you can call it “Customer Tracking” or “Sales Bot” or whatever would be helpful for your recipients. (This field is only available if the Send as Bot? option is chosen.)

      Output

      • Timestamp: (text) The precise timestamp of the message that was sent (guaranteed to always be unique within the channel and used by Slack for sorting.)
    • Send Slackbot Message

      Send a notification to a user from Slack (appears in the user’s @slackbot channel).

      Options

      • Unfurl URLs?: Slack can scan links found in messages and creates message attachments based on the content it finds in those links (e.g. a preview of a linked website). Choose Yes or No to indicated whether or not you want this behavior.

      Inputs

      • Username: (text) The username of the person to send the message to. It can only be a single person. Slack displays usernames preceded by a @ but you should not include the @ in the username you provide.
      • Message: (text) The text of the message you would like to send. You may include :emojis:, #channels, @users, and /commands just like you would in a regular Slack message.
      • Slackbot Name: (text) The name for the sender to show up in the slackbot channel, e.g. you can call it “Customer Tracking” or “Sales Bot” or whatever would be helpful for your recipients.

      Output

      • Timestamp: (text) The precise timestamp of the message that was sent (guaranteed to always be unique within a thread and used by Slack for sorting.)
    • Dynamic Auth Custom API Action

      This action allows you to make a custom, authenticated HTTP call to the Slack API. Unlike the “Custom API Call” Action, this card takes authentication as an input parameter. This allows you to use a token other than the one you have used to authenticate the connector in your calls, and is critical for building bots or multi-user applications.

      NOTE: This is not like any of the other Slack cards; this card shows some of what goes on behind the scenes on other cards. If you have no experience working with API calls this may be a challenge, however this card is highly customizable. Good luck, and it may help if you refer to the documentation!

      Options

      • Request Type (dropdown): your available HTTP request methods. There are 5 supported HTTP request methods (sometimes called verbs) in custom API calls:
        • GET: retrieves data from a web server based on your parameters. GET requests a representation of the specified resource, and if successful will receive a 200 OK response message with the requested content. Additional documentation here.
        • POST: sends data to a web server based on your parameters. POST requests include actions like uploading a file. Multiple POST’s may result in a different outcome than a single POST, so you should be cautious about unintentionally sending multiple POST’s. If a POST is successful, you will receive a 200 OK response message. Additional documentation here.
        • PUT: sends data to a location in the web server based on your parameters. PUT requests include actions like uploading a file. The difference between a PUT and POST is that PUT is idempotent, meaning that the result of a single successful PUT is the same as many identical PUT’s. If a PUT is successful, you will receive a 200 response message (usually 201 or 204). Additional documentation here.
        • PATCH: applies partial modifications to a resource on a web server based on your parameters. PATCH is not idempotent, meaning that the result of multiple PATCH’s could have unintended consequences. If a PUT is successful, you will receive a 200 response message (usually 204). Additional documentation here.
        • DELETE: deletes the specified resource from the web server based on your parameters (if the resource exists). If a DELETE is successful, you will receive a 200 OK response message. Additional documentation here.
      • Content-Type (dropdown): The Content-Type header that will be used to send your request. Slack supports both application/json and application/x-www-form-urlencoded for many endpoinys, but for some endpoints it will only accept application/x-www-form-urlencoded. If your request type is GET then Content-Type isn’t applicable, so simply select “N/A” (it will be the only option available, and doesn’t impact your call in any way).

      Input Data

      These fields will be dynamically generated based on the “Request Type” and “Content-Type” chosen in the options, so you may not see all of the fields listed below.

      • Slack Key (text): The OAuth Key that you would like to use to authenticate this call. This can be obtained during bot setup on Slack.
      • URL (text): the address on the web server you are attempting to interact with. This must include protocol, e.g. https://.

        Example: https://slack.com/api/conversations.open
      • Query (object or text): Either a JSON object or text. If an object is entered, it will be converted into query string format and appended onto the URL entered above.

        Example: {
                    "user":"Pseudo Ersatz",
                    "channel": "CT123456",
                } 

        This example will form the query user=Pseudo%20Ersatz&channel=CT123456. If text is entered, it will be URLencoded and appended to the URL.

      • Headers (object): JSON object that will include any additional headers. The “Content-Type” and “Authorization” headers will be automatically populated based on other fields and merged with any additional headers you provide here.

      • Body (object or text): Either a JSON object or text. Will be converted from the given type into the proper format based on the “Content-Type” chosen in the options. Example: { “user”:“Pseudo Ersatz”, “channel”: “CT123456”, }

      Output Data

      • Status Code (Number): the success or failure of your HTTP request. Here is a list of all status codes.
      • Headers (object): A more detailed context for the response/status code that doesn’t relate to the output body. Not all headers that appear in a response header are response headers, meaning that some are unlikely to be useful to you.
      • Body (object): The body of data returned from the API, parsed into object format.
    • Get Messages

      Given a Slack channel, start date, and end date, returns a list of messages sent during those times.

      Input Fields

      • Name (text):  name of the Slack channel you want to search
      • Start Date (text):  start date and time. This should follow the basic format: DD-Month-YYYY, where DD and YYYY are in numeral form, and Month is in text. Example: 1-Sept-2018
      • End Date (text):  end date and time. This should follow the basic format: DD-Month-YYYY, where DD and YYYY are in numeral form, and Month is in text. Example: 1-Sept-2018
      • Maximum Messages Returned (text): the maximum number of messages you would like to be returned. This should be a number greater than 0.

      Output Data

      • Messages (list of objects):  returns a list of the messages, starting with the most recent, where each item is made up of two objects: Message with the keys “Text” and “Timestamp” and Author with the keys “Full Name”, “Username” and “User ID”.

      For Example, to find messages for a Slack channel named “general”, you could set Name to “General” and use Start Date “12/14/16” and End Date “12/15/16” (or a date and time, such as returned by a Date function), then the Messages output may look like:

      [
          {
              "Message": {
                  "Text": "Parting is such sweet sorrow",
                  "Timestamp": "1481736092.000112"
              },
              "Author": {
                  "Full Name": "Juliet Capulet",
                  "Username": "juliet",
                  "User ID": "U03MARL00"
              }
          },
          {
              "Message": {
                  "Text": "What light through yonder window breaks?",
                  "Timestamp": "1481733588.000110"
              },
              "Author": {
                  "Full Name": "Romeo Montague",
                  "Username": "romeo",
                  "User ID": "U03SHAK25"
              }
          }
      ]
    • SearchUserByEmail

      Use this Action to search for a team member’s Slack information using their email. The card will return empty fields if the email is not found. This search is limited to the team you selected when you authenticated Slack.

      Input Fields

      • User
        • Email (text): the email of the user you would like to search for

      Output Data

      • User
        • Full Name: the full name of the user associated with this email
        • Username: the Slack username of the user associated with this email without the @ symbol (e.g. flo not @flo)
        • User ID: the unique user ID associated with this email
    • SearchUserByUsername

      Use this Action to search for a team member’s Slack information using their Slack username. The card will return empty fields if the email is not found. This search is limited to the team you selected when you authenticated Slack.

      Input Fields

      • User
        • Username (text): the username of the user you would like to search for. Do not include the @ symbol before the username.

      Output Data

      • User
        • Full Name: the full name of the user associated with this username
        • Email: the email of the user associated with this username
        • User ID: the unique user ID associated with this username
    • SendDirectMessageByID

      Send a direct message to someone in your team, using their Slack user ID. User ID is different from Username – if you have their username, you can use Send Direct Message instead. If you would like them to just get a notification from Slack – rather than a personal message from you – use Send Slackbot Message instead.

      Options

      • Unfurl URLs?: Slack can scan links found in messages and creates message attachments based on the content it finds in those links (e.g. a preview of a linked website). Choose Yes or No to indicated whether or not you want this behavior.

      Inputs

      • ID: (text) The user ID of the person to send the message to. It can only be a single person. User ID is different from Username – if you have their username but not ID, you can use Send Direct Message instead.
      • Message: (text) The text of the message you would like to send. You may include :emojis:, #channels, @users, and /commands just like you would in a regular Slack message.

      Output

      • Timestamp: (text) The precise timestamp of the message that was sent (guaranteed to always be unique within a thread and used by Slack for sorting.)