Home Coffee chats

Introduce the people who never talk

Random pairings from a channel, on a cadence, that end in an actual meeting rather than two people agreeing they should find a time.

Add to Slack installs Morgenruf on the free hosted instance CloudDrove runs. Self-hosting is the same MIT code.

Coffee chat settings beside a live preview of the Slack introduction

The settings, and the message they produce.

Morgenruf is a free, open-source (MIT) Slack app that runs random coffee chats. It pairs people from a channel on a cadence, avoids repeat matches, suggests hours that suit both timezones and can book the Zoom meeting. It runs on a free hosted instance or on your own servers, alongside async standups and kudos.

Last reviewed September 26, 2026

How it works

Pick a channel and a cadence

Everyone in the channel goes in the pool. On the day, they are paired and introduced in a group message with an opener, and the round closes by asking whether they actually met.

  • Never repeats a pairing until everyone has met
  • Groups of two to eight, with a sensible remainder
  • An icebreaker, so the first message is not "hi"
  • One quiet nudge on day three if nothing has happened
Coffee chat settings beside a live preview of the Slack introduction

Settings on the left, the message they produce on the right.

Pair avoiding last round's matc Introduce in a group DM, with an ope Agree an hour both press the same button Meet Zoom books it at that hour
The last two steps are the ones most pairing tools leave to the humans, which is where they stall.

The part most pairing tools leave out

Two people get introduced, say "we should find a time", and never do. The introduction has to carry the meeting or the meeting does not happen. Where a hosted product still wins on this is set out in the comparison with Donut.

  • Hours that suit both. Each person's working day comes from their Slack timezone. The suggestions are the overlap, not your convenience.
  • A button, not a negotiation. They both press an hour. Matching presses make the meeting.
  • Zoom books it at that hour, on the account of whoever linked theirs. Linking is per person, from the message, and revoking affects nobody else.
  • Honest wording. The message says nobody has checked your calendars, because nobody has. Implying otherwise would be worse than offering nothing.

Working hours matching, and when to leave it off

There is a switch for requiring an hour of overlap between two people's working days. It is off by default, and worth leaving off for a team spread very wide: a nine-to-five in Toronto and one in Kolkata share no hours at all, so turning it on stops them being matched entirely. A tool that silently matched nobody would look broken, so this one tells you what the setting does before you turn it on.

Where people manage their own participation

From the Morgenruf tab in Slack, which is where people look. Pause, skip a round, snooze for a fortnight, ask for a different match, connect or disconnect Zoom. It is the same tab where somebody sets leave for a standup or checks what is left of their kudos allowance. An admin can see who is in the pool and why somebody is not, which is the question the attendance table exists to answer.

Questions

About coffee chats

How does it pick who meets whom?

It avoids whoever you met last, and keeps avoiding them until everyone in the pool has been met once. With an odd number, one group of three forms so nobody sits out.

Can we have groups of three or four?

Group size runs from two to eight. A remainder of two or more forms its own group rather than being folded into a larger one, so ten people in fours are four, four and two.

How does the pair agree on a time?

The introduction offers hours that fall inside both people's working days, and each presses a button. When they both pick the same hour, that is the meeting. Nobody's calendar is read, and the message says so rather than pretending otherwise.

Does it create the meeting?

With Zoom connected, yes: the meeting is created at the agreed hour on the account of whoever in the pair linked theirs. Otherwise the programme's own room link is used, or none at all.

What if somebody does not want to be matched this round?

They can skip a round or pause entirely from the Slack App Home, and ask for a different match once per round. None of that needs an admin.

How do we know if it is working?

The round closes by asking whether the pair met, and the answer is recorded four ways: met, did not meet, never replied, and never delivered. The last one is our bug, not their behaviour, and folding it into 'did not meet' would blame the wrong party.

Free for every seat, and that is the whole pricing page

Add to Slack puts Morgenruf on the free hosted instance CloudDrove runs, in about two minutes. Or self-host the same MIT code with Docker Compose or Helm and pay only for the server.