As a distributed company we should be mindful of how we communicate.

Date and time

Use UTC for times

Unless explicitly stated otherwise, communicate times in UTC. This allows each team member to remember just their offset to UTC and makes communication around timezones less error-prone (e.g. misremembering your own offset to a colleagues timezone) and more efficient. Exception: When communicating to meet in physical locations, the timezone of that location will be assumed as default.

Time of day

A 24 hour clock is assumed in time notations like 10:00, when referencing a time in the afternoon either use e.g. 15:00 or explicitly 3 PM.

Formatting dates

As there's varying standard on how to format dates, please be explicit and use YYYY-MM-DD by default. This format is unambiguous, and standardized with ISO 8601, meaning it can be used in tools like Google Sheets too.


General guidance

Each meeting should have an agenda. This allows potential participants to prepare and decide whether attendance is required. Any participant can add items to the agenda, please prefix your item with your name or initials to communicate who's going to talk and lead the discussion. Adding new items to the agenda while the meeting is started is good practice and can be leveraged to keep the currently discussed item focussed and on-rails.

During the meeting

Meetings start on time by the person with the first item on the agenda, verbalize and discuss the item. Once done, hand over to the owner of the next agenda item.

During the meeting notes should be taken in an inline fashion. Non-participants can then read the agenda after the meeting and are up-to-date without having to scroll to a notes section.

Coffee calls

Coffee calls are social of nature and thus are the exception to the rule that each meeting should have an agenda. If you want to be matched to a random team member every two weeks for a coffee call, join the #virtual-coffee channel on Slack to be matched automatically.

Asynchronous communication

Communication through different timezones or due to differences in availability requires knowledge to be persistent in sources that are approachable to others and non-ephemeral.

Information should thus be stored in:

  1. Handbook
  2. GitHub issues
  3. Git Repositories pushed to GitHub
  4. Google Drive (Docs / Sheets / etc.)

Don't store information in:

  1. Slack
  2. Figma


Email for internal communication is only used for discussions that need a 'paper'-trail. Compensation, underperformance, and other made decisions. In all other case; use Slack.


When using Slack, prefer to keep discussions in a thread. This reduces scroll back, and focusses channels.

To keep everyone on the same page and to allow others to collaborate you should favour public channels over DMs.

Our recommended Slack (light) theme is: #F2F2F2,#FFC806,#779FA1,#FFFFFF,#F0D36C,#111111,#2AB052,#FD0B00,#AA4444,#FFFFFF

Not all channels are joined by default when you join Slack. We've added a bunch below so you get to decide if you want more channels or not.

  • #metrics will output sales and engagement metrics
  • #social-twitter is a stream of engagement with @FlowFuseInc
  • #virtual-coffee to schedule coffee calls with other team members!

Channel name structure

To make it easier to find your way around in Slack, we have some rules for naming channels. This will help give everything some context and implicit sense of purpose.

Type Slack prefix Purpose
Department #dept- For each company department and ask them questions
Project based work #proj- Work scoped to a project with an finite horizon
GitHub notifications #gh- For many updates around the website and product development a notification is sent to the corresponding channel
Ops notifications #ops- Channels receiving notifications from operations-related services

All team members are advised to put prefix type channels into their own section.


All code at FlowFuse is stored in Git, and GitHub hosts our repositories. As such all our changes, feature ideas/requests, etc. are stored there. It also holds task lists for onboarding, art requests, and other projects not necessarily code related. It's important to stay in the loop on GitHub and it's notifications.

Recommended views to keep track of items requiring your attention:

Please respond to mentions, review requests, etc within 2 business days.

Standup meetings

Standup meetings are hard to scale across multiple timezones. To make stand-ups async, we're using Geekbot. Geekbot will trigger each workday morning at 9:00 local time, when online in Slack. Everyone who's a member of the #standup channel in Slack will be prompted.


  • When a questions doesn't need answering, fill in - to skip
  • When you want to report earlier that day, message Geekbot report

Current meetings

Wednesday Team meeting

Weekly a meeting is held to announce company wide updates, get to know each other, and share things you want to share both professionally and personally.

Personal updates don't have to be documented in the agenda, but please do keep a list of names in the agenda so everyone gets the opportunity to share.

Bi-weekly KPI meeting

This 25-minute meeting is held to report on key metrics. Every department gets 5 minutes to explain what initiatives have been implemented over the past 2 weeks, what initiatives or milestones are scheduled for the next two weeks, and what results are expected to the company wide KPI.

Feedback and Thanks

In FlowFuse, we strongly encourage the sharing of feedback and thank you's. We have a custom-built SlackBot (built in Node-RED and hosted in FlowFuse of course), that enables users to message @Feedback with:

  • /give-thanks @to_user <message> - for short thank you messages
  • /give-feedback - to be prompted with a more formal template, within which you can provide structured feedback to a particular person. This template contains sections for "Keep Doing", "Do More Of", "Do Less Of" and "General Comments", of which you can complete, and send, the relevant sections.

All feedback is then sent directly to the relevant user via the Slack App, meaning that feedback and thank you messages are all nicely stored in a single place for future review.

1:1 meetings

Each employee at FlowFuse will have regular one to one meetings with their manager. The primary goal of this meeting is for the report to set the agenda and tone. It's important to understand what's going on in ones life, how they're feeling, and what their challenges are.

An agenda is kept for this meeting to which both parties can add items to discuss. It's advised to add to the agenda throughout the week, and only filter content during the meeting.

When struggling to fill the agenda you might want to think about:

  • What has changed in the last few weeks that worked out well?
  • What has changed in the last few weeks that didn't work out?
  • Were there difficult problems to be solved last week? What would've made it easier to solve?
  • What's important but not urgent that's left undone?

Further, the document should include an "Action Items" list to track what needs doing, and when.

Skip level meetings

Meetings between levels of the organisation happen in regular 1:1s, usually held weekly between the manager and report. The report however might want to also communicate with the manager's manager to keep in touch with the strategy and communicate feedback on what they observe directly.

The advised cadance to have these meetings depends on the wants of the report, but generally advised once every 6-8 weeks. As FlowFuse scales, the number of weeks between these meetings is likely increasing.