Flurfunk

Team conversations inside WordPress. Channels, threads and tasks, right next to your posts.

Get started GitHub

Free WordPress plugin · GPL-2.0-or-later · WordPress 6.5+ · PHP 8.1+ · no external service

Illustration: Flurfunk in full screen. On the left the sidebar with views, channels and posts; in the middle the threads of the Editorial channel; on the right an open task thread with a photo gallery. While you watch, Jonas Weber replies, the reply count goes up, a photo opens in the lightbox and Ana Klein ticks the task off.

What it does

Conversations next to the work, not in another tool.

Flurfunk lives in wp-admin. Threads sit next to the posts they are about, tasks have a board, and everyone gets told what concerns them.

  • Channels and threads

    A thread has a title, replies, files and cards. Attach it to a post and it shows up in the block editor’s Conversations panel and the posts list.

  • Tasks and a board

    Any thread can be a task: Open, In progress, Question or Done, with a due date and up to 20 responsible people. Move cards by drag and drop or with Alt+Arrow keys.

  • Files, media library, gallery

    Up to 50 files per message, uploaded or picked from the media library. Images become a gallery with a lightbox; uploads only enter the media library when someone adds them.

  • Notifications that fit

    Everything lands behind the bell. Mail right away or as a daily summary, Web Push to browsers and phones, quiet hours, pause, levels per channel and “remind me”.

  • Cards from other plugins

    Type / for commands. /post inserts a post as a card, plugins add their own. A card keeps a snapshot of its data and can be refreshed on request.

  • A full-screen web app

    /flurfunk/ shows the app without admin bar or menu. Add it to the home screen on iPhone or Android, and push opens the thread right there.

  • Team and guests

    Each channel says what the team and what guests see: everything, only threads about their own posts, or nothing. Guest authors talk about their texts without seeing internal discussions.

  • Your data, your tables

    Own database tables, no external service. One JSON format, flurfunk/1, for export and import with or without files. Works with WordPress’s privacy export and erase tools.

Tasks

A board for everything that has to get done.

Any thread can be a task. The board shows the tasks you can see in four columns; a click opens the thread in a drawer over the columns.

  • Drag a card to change its state, or press Alt+Arrow on a focused card.
  • Question notifies the person who started the task and the responsible people.
  • Due dates remind people once a day at the hour they chose.
  • Filter by channel and by responsible person; Done keeps the last 14 days.

The board in the user guide

Illustration: a task board with the columns Open, In progress, Question and Done. A card moves through all four columns, then its thread opens in a drawer.

Notifications

Told about what concerns you. Left alone otherwise.

Mentions, tasks, due dates and replies in your threads reach you in the app, by mail and by Web Push. Each person decides how much.

  • Mail right away, as one daily summary, for everything, or never.
  • Web Push to desktop browsers, Android, and iPhone home screen apps.
  • Quiet hours, a pause button, and per channel: as usual, every new post, or only mentions.
  • Follow, mute or “remind me” on any thread.

Notifications in the user guide

Illustration: a phone lock screen receives a push notification from Flurfunk that Ana Klein mentioned you, next to the notification settings with a daily mail summary, push on and quiet hours from 22:00 to 07:00.

For developers

Plain PHP and JavaScript. Hooks everywhere.

No build step and no framework. Register a slash command with cards, attach threads to your own objects, embed threads on any admin screen, or post from scripts and CI through the REST API.

A slash command with cardsPHP
add_action( 'init', function () {
	flurfunk_register_provider( 'myplugin/report', array(
		'command'  => 'report',
		'label'    => 'Report',
		'hint'     => 'Insert a report card',
		'search'   => fn ( string $q, int $user_id ) => array(
			array( 'ref' => array( 'id' => 12 ), 'title' => 'Q3', 'subtitle' => 'Draft' ),
		),
		'snapshot' => fn ( array $ref, int $user_id ) => array(
			'title'  => 'Q3',
			'metric' => array( 'value' => '1,284', 'label' => 'views' ),
			'url'    => admin_url( 'admin.php?page=reports&id=' . (int) $ref['id'] ),
		),
		'can'      => fn ( int $user_id ) => user_can( $user_id, 'edit_posts' ),
	) );
} );
Post a thread from a scriptShell
curl -u "login:application password" \
  -H 'Content-Type: application/json' \
  -d '{"channel":"general","title":"Deploy","body":"Release 2.4.0 is live."}' \
  https://example.com/wp-json/flurfunk/v1/threads
  • flurfunk_register_target() attaches threads to products, customers or anything else.
  • Flurfunk.mountRefs(), mountChannel() and mountTarget() embed threads on admin screens.
  • Assistant accounts post through WP-CLI or the REST API, with no editing rights.
  • wp flurfunk export and import move everything, files included.

Quick start

Running in two commands.

Needs WordPress 6.5+, PHP 8.1+ and MySQL or MariaDB. Web Push needs HTTPS and PHP’s OpenSSL extension.

  1. Get the plugin

    cd wp-content/plugins
    git clone https://github.com/worldoptimizer/flurfunk.git flurfunk

    Or upload a release zip under Plugins → Add New → Upload Plugin.

  2. Activate it

    wp plugin activate flurfunk

    Activation creates the tables and a #general channel for the team.

  3. Set it up

    Settings → Flurfunk: name, logo, colours, who counts as team or guest, and the channels. Then open Flurfunk in the admin menu.

    Installation and administration

FAQ

Questions people ask first.

Is it free?

Yes. Flurfunk is free software under the GPL-2.0-or-later. The source is on GitHub.

Does it need an external service?

No. Flurfunk keeps everything in its own tables in your WordPress database and needs no external service, library or API key. Mail goes through wp_mail(). Web Push is encrypted by the plugin itself and sent directly to the browsers’ push services, which needs HTTPS and PHP’s OpenSSL extension.

Does it work with OpenStation?

Yes. When the OpenStation plugin is active, Flurfunk adds a desktop icon and OpenStation’s dock shows the same unread badge as the menu item. Without OpenStation it works just the same in plain wp-admin. The flurfunk_openstation_icon filter moves or removes the icon.

Can guests see internal threads?

Not unless a channel allows it. Every channel has one level for the team and one for guests: all, own-posts or none. An internal channel is set to none for guests. In an own-posts channel each guest only sees the threads about their own posts, and the team sees a hint on threads guests can read.

What about privacy?

The data stays in your database. Flurfunk takes part in WordPress’s Export Personal Data and Erase Personal Data tools: erasing replaces a person’s messages with a note and removes their read state, mentions, task assignments, notifications, push subscriptions and preferences, so conversations stay readable for everyone else. When a user is deleted, their personal data is removed as well. Privacy in detail

Can I move it to another site?

Yes. wp flurfunk export bundle/ --files writes everything, files included, in the flurfunk/1 format; wp flurfunk import bundle/ reads it on the other site. Moving a site