{"id":53801,"date":"2017-01-19T11:20:13","date_gmt":"2017-01-19T11:20:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/hameslack\/"},"modified":"2026-02-16T08:09:33","modified_gmt":"2026-02-16T08:09:33","slug":"hameslack","status":"publish","type":"plugin","link":"https:\/\/da.wordpress.org\/plugins\/hameslack\/","author":1143171,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"nightly","stable_tag":"2.2.0","tested":"6.9.4","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"HameSlack","header_author":"Hametuha INC","header_description":"","assets_banners_color":"b6aeb5","last_updated":"2026-02-16 08:09:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/extend\/plugins\/hameslack\/","header_author_uri":"https:\/\/hametuha.co.jp","rating":0,"author_block_rating":0,"active_installs":10,"downloads":3122,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"Takahashi_Fumiki","date":"2017-01-24 08:03:12"},"1.1.0":{"tag":"1.1.0","author":"Takahashi_Fumiki","date":"2017-12-07 08:51:30"},"1.1.1":{"tag":"1.1.1","author":"Takahashi_Fumiki","date":"2018-04-09 10:26:19"},"1.2.0":{"tag":"1.2.0","author":"Takahashi_Fumiki","date":"2018-06-05 12:05:53"},"2.0.0":{"tag":"2.0.0","author":"Takahashi_Fumiki","date":"2024-04-06 04:27:29"},"2.1.0":{"tag":"2.1.0","author":"Takahashi_Fumiki","date":"2025-10-08 13:32:13"},"2.2.0":{"tag":"2.2.0","author":"Takahashi_Fumiki","date":"2026-02-16 08:09:33"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3065811,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3065811,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3065811,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3065811,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3","1.1.0","1.1.1","1.2.0","2.0.0","2.1.0","2.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3065811,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3065811,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3065811,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"You can create such kind of bot.","2":"You can set up everything on setting screen.","3":"You can create Outgoing Webhooks as custom post type."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[3565],"plugin_category":[],"plugin_contributors":[146156,83237],"plugin_business_model":[],"class_list":["post-53801","plugin","type-plugin","status-publish","hentry","plugin_tags-slack","plugin_contributors-hametuha","plugin_contributors-takahashi_fumiki","plugin_committers-hametuha","plugin_committers-takahashi_fumiki"],"banners":{"banner":"https:\/\/ps.w.org\/hameslack\/assets\/banner-772x250.jpg?rev=3065811","banner_2x":"https:\/\/ps.w.org\/hameslack\/assets\/banner-1544x500.jpg?rev=3065811","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/hameslack\/assets\/icon-128x128.png?rev=3065811","icon_2x":"https:\/\/ps.w.org\/hameslack\/assets\/icon-256x256.png?rev=3065811","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/hameslack\/assets\/screenshot-1.png?rev=3065811","caption":"You can create such kind of bot."},{"src":"https:\/\/ps.w.org\/hameslack\/assets\/screenshot-2.png?rev=3065811","caption":"You can set up everything on setting screen."},{"src":"https:\/\/ps.w.org\/hameslack\/assets\/screenshot-3.png?rev=3065811","caption":"You can create Outgoing Webhooks as custom post type."}],"raw_content":"<!--section=description-->\n<p>This plugin integrates <a href=\"https:\/\/slack.com\">Slack<\/a> and WordPress.<\/p>\n\n<h4>Core Conception<\/h4>\n\n<p>By default, this plugin does nothing. It's true. \nSlack has many API integration, but <strong>hameslack<\/strong> uses 2 of them.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/api.slack.com\/incoming-webhooks\">Incoming Webhook<\/a> to post to slack.<\/li>\n<li><a href=\"https:\/\/api.slack.com\/apps\">Slack App<\/a> to interact with slack.<\/li>\n<\/ul>\n\n<p>Upper is easier. This plugin helps the connection between Slack and WordPress and you can concentrate on what you should do with slack.<\/p>\n\n<h4>Use Cases<\/h4>\n\n<p>Here is a list of use case of us on WordPress with many editors.<\/p>\n\n<ul>\n<li><strong>Easy<\/strong> Post notification to slack if some post is awaiting review.<\/li>\n<li><strong>Difficult<\/strong> Post access summary to slack once a week, because my colleague doesn't open Google Analytics.<\/li>\n<li><strong>Very Difficult<\/strong> Convert slack conversation to single post and make interview post.<\/li>\n<\/ul>\n\n<p>For more details, please read the <a href=\"https:\/\/github.com\/hametuha\/hameslack\/blob\/master\/addons\/README.md\">Addons documentation<\/a>.<\/p>\n\n<h4>How to Integrate<\/h4>\n\n<p>The simplest usage is <em>post to slack<\/em>. You can do like below:<\/p>\n\n<pre>\ndo_action( 'hameslack', $text_to_post, $attachments, $channel );\n<\/pre>\n\n<p>Function <code>hameslack_post( $content, $attachment, $channel )<\/code> is also available, but I prefer to use <code>do_action<\/code> to avoid annoying <code>if ( function_exists('func_name'))<\/code>.<\/p>\n\n<p>Everything works fine if you set properly.<\/p>\n\n<h4>Deprecated API<\/h4>\n\n<ul>\n<li><strong>Sending Invitation<\/strong> <code>deprecated at 2.0<\/code>:  this endpoint was unofficial and official one is only for Enterprise grid. Users now can send invitation reqeust from their profile page.<\/li>\n<li><strong>Outgoind Webhook<\/strong> <code>deprecated at 2.0<\/code>: Slack recommends Events API instead.<\/li>\n<\/ul>\n\n<h3>Install<\/h3>\n\n<h4>From Plugin Repository<\/h4>\n\n<p>Click install and activate it.<\/p>\n\n<h4>From GitHub<\/h4>\n\n<p>Download from <a href=\"https:\/\/github.com\/hametuha\/hameslack\/releases\">Releases<\/a> and you can use it. Any pull requests are welcomed.<\/p>\n\n<h4>Enter Credentials<\/h4>\n\n<p>To post a message to slack, you need Payload URL. <a href=\"https:\/\/api.slack.com\/apps\/\">Create an app<\/a> and activate \"Incoming Webhooks\".\nNow you can get payload URL.<\/p>\n\n<p>To get Bot Token, go to \"OAuth &amp; Permissions\". By installing your app to your workspace, Bot token will be generated.<\/p>\n\n<h4>Do something<\/h4>\n\n<p>As mentioned above, this plugin does nothing by default. Enable built-in addons from the settings page, or read the <a href=\"https:\/\/github.com\/hametuha\/hameslack\/blob\/master\/addons\/README.md\">Addons documentation<\/a> to write your own.<\/p>\n\n<p>If you have any request, please make issue on <a href=\"https:\/\/github.com\/hametuha\/hameslack\">github<\/a>.<\/p>\n\n<h3>Development<\/h3>\n\n<p>This plugin requires custom code to work with your Slack workspace. Here's how to set up a local development environment.<\/p>\n\n<h4>Prerequisites<\/h4>\n\n<ul>\n<li>Node.js &gt;= 22 (managed via <a href=\"https:\/\/volta.sh\/\">Volta<\/a>)<\/li>\n<li>Docker Desktop (for <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-env\/\">wp-env<\/a>)<\/li>\n<li><a href=\"https:\/\/developers.cloudflare.com\/cloudflare-one\/connections\/connect-networks\/get-started\/\">cloudflared<\/a> (for Slack Webhook testing)<\/li>\n<\/ul>\n\n<h4>Getting Started<\/h4>\n\n<pre><h3>Install dependencies<\/h3>npm install\ncomposer install<h3>Start WordPress local environment<\/h3>npm start<h3>Build assets<\/h3>npm run package<h3>Watch for changes during development<\/h3>npm run watch\n<\/pre>\n\n<h4>Receiving Slack Webhooks Locally<\/h4>\n\n<p>Slack requires a public HTTPS URL for Event Subscriptions and Interactive Components. Use Cloudflare Tunnel to expose your local environment:<\/p>\n\n<pre><h3>In a separate terminal, start the tunnel<\/h3>npm run tunnel\n<\/pre>\n\n<p>This gives you a temporary public URL like <code>https:\/\/random-name.trycloudflare.com<\/code>. Then:<\/p>\n\n<ol>\n<li>Go to your <a href=\"https:\/\/api.slack.com\/apps\">Slack App settings<\/a><\/li>\n<li>Update <strong>Event Subscriptions<\/strong> Request URL to <code>https:\/\/random-name.trycloudflare.com\/wp-json\/hameslack\/v1\/...<\/code><\/li>\n<li>Update <strong>Interactivity &amp; Shortcuts<\/strong> Request URL similarly<\/li>\n<li>The URL changes each time you restart the tunnel<\/li>\n<\/ol>\n\n<p><strong>Note:<\/strong> Make sure WordPress permalink settings are not set to \"Plain\" \u2014 pretty permalinks are required for <code>\/wp-json\/<\/code> to work through the tunnel.<\/p>\n\n<h4>NPM Scripts<\/h4>\n\n\n\n\n  Command\n  Description\n\n\n\n\n  <code>npm start<\/code>\n  Start wp-env\n\n\n  <code>npm run package<\/code>\n  Build all assets (CSS + JS)\n\n\n  <code>npm run watch<\/code>\n  Watch for file changes\n\n\n  <code>npm run tunnel<\/code>\n  Open Cloudflare Tunnel to localhost:8888\n\n\n  <code>npm run lint<\/code>\n  Run ESLint + Stylelint\n\n\n  <code>npm run fix<\/code>\n  Auto-fix lint errors\n\n\n  <code>npm test<\/code>\n  Run PHPUnit tests\n\n<!--section=changelog-->\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Add hook-based addon system with settings UI.<\/li>\n<li>Add built-in addons: Pending Review Notify (Incoming Webhook sample) and Slash Command Dashboard (Bot Token sample).<\/li>\n<li>Fix double URL-encoding in <code>hameslack_bot_request()<\/code> for POST requests.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Bump required versions: PHP 7.4 and WP 6.6<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Remove invitation feature and users now can send a simple message to specific channel to request invitation.<\/li>\n<li>Bot is required.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>If <a href=\"https:\/\/wordpress.org\/plugins\/gianism\">gianism<\/a> is enabled, you can log in with Slack account.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Bugfix on REST API.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add invitation request feature.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Add auto deploy.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"A Slack utility for WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/53801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=53801"}],"author":[{"embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/takahashi_fumiki"}],"wp:attachment":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=53801"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=53801"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=53801"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=53801"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=53801"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=53801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}