Skip to content دوام Help Center

Daily Work

Chat & messaging

One-line summary: a full internal chat — messages, voice notes, calls, polls, reminders and pinning — with a decision layer on top: turn a message into a task or a leave request, and decide on it from the card itself without leaving the conversation.

Plan: "Team Chat" is available on every plan — Basic, Professional, Advanced, Business and the Custom plan, and during the trial — and needs no activation. The same goes for "Convert to task", "Convert to leave request", deciding from the card, "@" and search: none of them is gated by a plan or by an extra permission. The one exception is "Chat suggestions" — off by default, switched on for your company by the platform operator, and it spends the monthly AI allowance (which is zero once a trial ends unsubscribed, so it cannot run there at all). The conversation history window, however, is governed by your plan: 90 days on Basic, and unlimited during the trial and on Professional, Advanced, Business and the Custom plan. Start with Getting started.

Overview

Duwam chat is built into the app — you need no external tool. Every conversation is documented, searchable, and belongs to the company rather than to individuals (if an employee leaves, the conversations stay put).

You reach it from the Human Resources workspace → the "Team Chat" row in the sidebar. For an admin this row is a group of two tabs: "Messages" and "Virtual Office". For an employee it is a single row with no tabs that opens messages directly.

Conversation types:

  • Direct (DM) — between you and one person.
  • Group — you choose the members.
  • Team channel — created automatically for every team; all its members are in it.
  • Company-wide — one channel everyone sees, usually for announcements.

Above the chat sits a decision layer: the message itself can become a task or a leave request. It is not copied somewhere else and it is not forgotten — it stays where it is, wearing a badge that says what it became, and a live card grows beneath it that reads the item from its source and updates whenever it changes, with no page refresh.

How do I start a conversation?

With one person

  1. Open "Team Chat" from the sidebar (and for an admin: the "Messages" tab).
  2. Press "New chat".
  3. Search for the person by name or employee number, then select them.
  4. The conversation opens immediately.

With a group

  1. "New chat" → Group.
  2. Pick the members (2 or more).
  3. Give the channel a name (e.g. "Q2 Campaign", "Design notes").
  4. Choose a channel picture (optional).

Tip: Channels named after a project or a topic are more useful than channels named after people.

Message types

Plain text

Type, then press Enter (Shift+Enter for a new line).

Voice note

Press and hold the microphone button in the composer to record. Release to send, or swipe to cancel.

Attachments

Press the attach button, then choose an image, video, PDF, Word, Excel or zip file. The limit is 25 MB per file. (Executable file types are blocked for security.)

Reactions

Long-press a message (or hover over it) to pick a reaction from the emoji panel.

Mentions (@)

Type @ then the employee's name, and they get a direct notification that they were mentioned. The same list also inserts a task or a leave request — see the One "@" for people, tasks and requests section below.

Message actions menu

Long-press any message (or right-click it) to open the actions menu:

  • "Reply" — quote the message and reply to it.
  • "Copy Text".
  • "Convert to task" — the message becomes a task, wears its badge, and grows the task card beneath it.
  • "Convert to leave request" — the message becomes a request, and the request card grows beneath it.
  • "Remind me" — reminds you of the message at a time you pick.
  • "Save" — adds the message to "My saved" (and the same item becomes "Remove from saved").
  • "Pin" — pins the message as a banner at the top of the conversation for everyone.
  • "Forward" — send the message to another conversation.
  • "Tip" — for admins, on a colleague's message.
  • "Edit" and "Delete" — for your own messages only.

Caution: A single message converts once only — into a task or into a leave request, never both. A second attempt is refused with "This message was already converted".

How do I convert a message into a task?

  1. Open the message menu and choose "Convert to task". The dialog says: "A task will be created from this message".
  2. "Task title" arrives filled with the first 80 characters of the message — edit it as you like (up to 200 characters).
  3. Choose the "Project", the "Assignee" (you by default), the "Priority" ("Medium" by default) and the "Due" date ("Optional").
  4. Press "Create". You get "Task created ✓" along with an "Open task" link.

The task description is written automatically: a line saying it came from the conversation together with the name of whoever wrote the message, then the full text of the message — so the context is not lost when the task is read a week later.

And the trace runs both ways:

  • The message wears a "Became a task · <task title>" badge, and pressing it opens the task. If the task is deleted the badge becomes an inert "Task deleted" that opens nothing.
  • The task carries a "Source conversation" button in its side panel that opens the conversation on that exact message and highlights it.

Note: If the company has no project you can see, the conversion is refused with "No projects available" — create a project first. See Tasks & projects.

Caution: The "Source conversation" button exists on the admin tasks screen only; it does not appear on the employee's own tasks screen.

Live cards inside the conversation

After a conversion, a card for the item is posted directly beneath the message. The card is not a frozen copy but a window onto the item: it is read from its source every time the conversation is opened, and it is drawn for each reader separately by that item's own visibility rule.

  • The task card shows the status in its colour, the assignees, the due date and the priority — and pressing it opens the task. If the task's status changes on the tasks screen, the card in the conversation updates.
  • The leave-request card shows the leave type, a status pill in its colour ("Pending" amber, "Approved" green, "Rejected" red, "Cancelled" grey), the number of days in correct plural form ("1 day", "2 days", then "N days" — and proper Arabic duals and plurals when read in Arabic) together with the date range, the remaining balance, and the employee's name. It opens no other screen — there is no leave screen in Duwam, and the card is all there is.
  • Anyone not entitled to see the item reads the word "Restricted" where the details would be, and the message stays where it is so the shape of the conversation does not break. Anyone whose item was deleted reads "Task deleted" or "Request deleted".

Note: When something changes, the conversation is told only that "something changed" — then each device asks for its own share. So what you see on the card is what the server lets you see, not what the person who sent the change saw.

How do I convert a message into a leave request?

  1. Open the message menu and choose "Convert to leave request". The dialog says: "A leave request will be created from this message, with its card here".
  2. Choose the "Leave type": "Annual", "Sick" or "Unpaid".
  3. Set "From" and "To" — today by default, and the end date follows the start automatically so no inverted range can occur.
  4. "Note" arrives filled with the text of your message (up to 500 characters).
  5. Before you send, the "Remaining" line shows your balance as read from the server (and while it is on its way: "Reading the balance…", and if it cannot be read: "Could not read the balance").
  6. Press "Send request", and you get "Request sent ✓".

The message then wears a "Became a leave request" badge, and the card grows beneath it.

Tip: The badge says the message became a request; it does not say what kind — because the badge is read by everyone in the channel, while the type, the length and the balance live inside the card, and the card is readable only by those entitled to it.

Caution: Every refusal from the server is written as a sentence inside the dialog rather than as a code in a passing toast: "Enter both the start and the end date", "The end date is before the start", "You already have leave in this period — pick other dates".

On your own message the option is available to everyone. On a colleague's message it appears only for someone holding the "Approve leave" permission (and the company admin holds it by default) — and in that case the request is filed in the name of whoever wrote the message, so a "Filed for" line appears and it is their balance that is read.

A request with no earlier message: /leave

Type / in the composer to open the command list. Its entries ship in Arabic only, but the English aliases work: Leave request (طلب إجازة) ("Send a leave request from inside the conversation") answers to /leave and /vacation, and Create task (إنشاء مهمة) to /task and /todo. The same dialog opens, but this time it says: "The request text is posted to the conversation, with its card beneath it" — so the text of your request is posted as a message first, then becomes the source and the card appears beneath it. Either way the conversation reads in the same order: the employee's words, then the card.

Note: If your request is refused for a date error and you correct it, the message is not posted twice.

How do I decide on a request from the card?

For anyone holding the "Approve leave" permission, three buttons appear on the card: "Approve", "Reject" and "Request a change". Each opens a small dialog ("Approve the request" / "Reject the request" / "Request a change") carrying a "Note" field — optional for approve and reject, and up to 500 characters — with a line under the title saying what will happen: "The decision shows in the conversation for everyone who can read it".

After the decision the card writes the result line in its own verb — "Approved" or "Rejected" or "Withdrawn" — along with who decided, when, and why if a reason was written.

  • "Request a change" is not a fourth state. The request stays "Pending" and the buttons stay where they are, with an "A change was requested" line appearing beside them carrying who asked and the text of what was asked. The note is mandatory here: the dialog says "Say what should change — the request stays pending until the employee amends it", and leaving it empty is refused with "Say what should change".
  • "Withdraw" is the employee's button on their own request's card, as long as its status is "Pending". It opens a dialog with an optional note, after which the request's status becomes "Cancelled" and a "Withdrawn" line is written. It is the only answer to "Request a change": there is no "Edit" button, so whoever is asked to amend withdraws their request and files another. After approval, withdrawing is no longer theirs to do: cancelling approved leave needs the same permission that granted it.

Note: The buttons are only offered where the server would actually accept them — the card asks it on every read what this reader is entitled to, so no button is shown that would be refused on press. That is why an admin who filed their own request sees "Approve" and "Withdraw" together: two independent rights, not two competing options.

Caution: The decision is one and no more. Anyone trying to decide a request that has been decided reads "This request has already been decided", and the card is re-read to show the true state. Anyone trying without the permission reads "You do not have permission to decide requests".

The full details — the balance, how days are counted, and who sees what — are in Leave.

One "@" for people, tasks and requests

Type "@" in the composer and a list opens with three tabs: "People", "Tasks" and "Requests". (In group channels and team channels there is also a "Mention" button in the composer; in one-to-one conversations it does not appear, though typing "@" by hand works in both cases.)

  • Picking a person writes their name as a mention in your message, exactly as it always has.
  • Picking a task or a leave request writes no text: it deletes what you typed from the "@" onward and inserts a live card for the item into the conversation, read by each member under their own rule.

Search across all three tabs understands Arabic: it folds hamzas, taa marbuta, tatweel and Eastern Arabic digits. Requests are searched the way a person would search for them — by their owner's name, their type and their two dates. The list shows up to 8 results per tab.

Caution: If someone in the conversation is not entitled to see the item, a warning appears in the selection row ("Will not see it" with the count) followed by an "Insert the card into the conversation" confirmation dialog saying: "Some members of this conversation may not view this item, and the card will read «Restricted» to them" — and in front of you are "Cancel" or "Insert anyway". So the count is shown while it is still reversible.

Note: Inserting is not a route to leaking what you cannot see: the server refuses to insert an item the inserter cannot see themselves.

How do I search inside a conversation?

Open the conversation and press the search button in the bar at the top, and a bar opens containing:

  • A "Search in chat" field.
  • Five type chips: "All", "Text", "Voice", "Files", "Polls".
  • And behind the "Filters" button, three more: "Sender" (defaulting to "Everyone"), "From date" and "To date" — along with "Clear filters".

The search is genuinely Arabic-aware: "اجازه" finds "إجازة", tatweel and diacritics no longer hide a message, a date in Eastern Arabic digits finds itself in Latin ones, and "عبد الله" finds "عبدالله". A result is shown as a snippet with the matching position itself highlighted, and up to 200 results are returned. If it finds nothing you read "No results".

Pressing a result lands on the message in its place in the conversation and highlights it for two seconds — and if it is older than the loaded page, that page is loaded first and then it lands.

Caution: The search does not stem: typing "إجازة" will not find "الإجازات". And it matches the message text and poll questions only — not sender names as text (the sender is a separate filter), not the contents of attachments, and not the text of voice notes. Occasionally the head of the message is shown without highlighting, when no honest position for the match can be determined.

The leave-request suggestion

When you write a sentence that looks like a leave request, a small card titled "Suggestion: leave request" may appear above the composer for you alone, showing the type, the range and the reason as the system understood them, with two buttons on it: "Dismiss" and "Send the request".

The whole feature is preparation, not writing: nothing is written to the leave record until you press "Send the request" yourself, and when you do, the request goes through the very same door — so it carries the message's trace and grows the live card beneath it exactly like a request filled in by hand. "Dismiss" removes the card and it does not come back.

Note: The suggestion never reaches the room — it is for the message's author alone, not for the admin and not for the channel. Broadcasting it to the channel would tell everyone that their colleague is asking for leave.

And it has deliberate limits:

  • Off by default. It is opened for the company from platform administration, not from company settings — so the company admin does not hold its switch.
  • A message shorter than 12 characters is not read at all, and neither are system messages, cards, polls, call logs, inbound WhatsApp messages from customers, or a voice note with no transcript.
  • No suggestion is shown except at high confidence, and a reading missing dates or with an unknown type is discarded entirely.
  • It spends the monthly AI allowance: 50 messages on Trial, 100 on Basic, 1,000 on Professional, 2,500 on Advanced, 5,000 on Business, 20,000 on the Custom plan, and zero once a trial ends unsubscribed. The allowance counts the attempt, not the result.
  • "Dismiss" hides one card only and saves no preference — an employee cannot turn the feature off for themselves.

Advanced features

Polls

+ → Poll, then write the question and the options.

  • Results are live.
  • You can close voting at any time.
  • Supports single or multiple choice.

Scheduled messages

Write your message, then press the arrow beside the send button → "Send Later" → pick the time. The system delivers it at the scheduled moment.

Tip: Useful for a morning team reminder, an end-of-week note, or a message of congratulations.

Message reminders

Long-press a message → "Remind me" → choose when. The app will send you a notification with the message at the set time.

Note: Useful for "remember to reply to this on Monday" or "follow up on this conversation next week".

Saved messages (bookmarks)

Press a message → "Save", and find it later under "My saved" at the top of the conversation list.

Calls (voice & video)

Duwam calls are built on LiveKit and run right inside chat, with no external app.

Start a voice call

  1. Open the conversation (DM or group).
  2. Press the "Voice call" button at the top of the conversation.
  3. The call window opens immediately and your microphone is enabled, while the other members receive an incoming-call alert.

Note: While waiting for the other party to answer, a waiting state shows with an animated pulse.

Answer an incoming call

When someone calls you, a ringing window appears in the centre of the screen showing the caller's name and picture with a gentle ringtone:

  1. Press Accept (قبول) to join the call.
  2. Or press Decline (رفض) to close the ring and notify the caller.

Note: If you do not answer within 45 seconds, the call is declined automatically.

Inside the call window

  • Participant grid: each participant's picture and name, with the current speaker highlighted and a mute indicator for anyone who has muted their microphone.
  • A call timer runs at the top of the window.
  • The buttons:
    1. Mute / Unmute the microphone.
    2. Share screen (available on desktop browsers only).
    3. End to leave the call.

Call log in the conversation

When the call ends, a permanent card is recorded in the conversation showing its duration. A call that went unanswered appears in a different colour tagged "Missed call".

Video meetings (Professional and up)

Voice calling is available in your conversations. Camera video meetings, however, are part of the Virtual Office, available from the Professional plan up. In that case the button at the top of the conversation becomes "Meet":

  • In group channels: it starts or joins the channel meeting, with a live presence indicator.
  • In DMs: it invites the other person into your office, with a "Wave" button beside it for a light ping.

When the meeting ends, a "Meeting ended" card appears in the conversation.

See Virtual Office for meeting and room details.

Push-to-talk

From the contacts panel, there is a microphone button beside each person's name for instant talk:

  1. Press and hold the microphone button next to the person.
  2. Speak (up to 20 seconds).
  3. Release the button to send the clip.

Your voice reaches the other person and plays automatically on their screen, with no need for them to answer. An employee sees their company's admins in the panel; an admin sees both admins and employees.

Note: Push-to-talk is one-way (an instant voice message), not a two-way call.

Pinning messages & conversations

  • Pin a message: press the message → "Pin", and it appears as a banner at the top of the conversation for everyone. Useful for announcements and important decisions. Press the banner to jump to the original message.
  • Pin a conversation: in the conversation list press the conversation → "Pin to top" to keep it at the head of your list (and to undo: "Unpin from top").

Caution: Use pinning wisely — overusing it drains its value. Reserve it for the things everyone must see.

Notifications & focus

  • An @ mention sends a direct notification to the mentioned person even if they are away from the channel.
  • Read ticks appear when your message has been read, and an "is typing…" indicator appears while the other party is writing.
  • "Focus mode": a button at the top of the conversation collapses the conversation list and shows the current conversation full-screen, for work without distraction. Your choice is saved until you press "Exit focus mode".

Caution: There is no bell notification when a leave request is decided. The decision appears on the card inside the conversation — so anyone who does not open the conversation receives nothing.

Permissions & privacy

  • Each conversation is readable by its members only — the admin included: an admin cannot read a conversation they are not a member of, and no setting changes that.
  • If an employee's account is deactivated, their past messages stay in the channels (they are removed only if management asks for it).

FAQ

Q: Are messages deleted after a while? A: No, messages are permanent by default, stored on the server, and belong to the company rather than to individuals. But the history window you can read is governed by your plan: 90 days on Basic, and unlimited during the trial and on Professional, Advanced, Business and the Custom plan — and that trims search results too.

Q: Can I delete a message after sending it? A: Yes — long-press your message → "Delete", and it disappears for everyone, leaving "This message was deleted" in its place.

Q: Can I edit a message after sending it? A: Yes, your own text messages, at any time. An "(edited)" badge appears beside the message. A deleted message cannot be edited.

Q: I converted a message by mistake — can I undo it? A: No. A message converts once, and a second attempt is refused with "This message was already converted". Delete the task or withdraw the request, then convert another message.

Q: Why do I read "Restricted" where my colleague's card should be? A: Because the card is drawn for each reader by that item's own visibility rule. A task card is seen by the assignee, the reviewer, the members of the assigned teams and the company admin; a request card is seen by its owner and by whoever holds the "Approve leave" permission. Everyone else reads "Restricted" — no type, no length, no balance.

Q: Do I get a notification when my request is decided? A: No. The result appears on the card inside the conversation, along with who decided, when, and why. Open the conversation to read it.

Q: Does leave affect my salary automatically? A: No. Leave does not touch pay at all: no attendance hour and no counted hour is written, and an hourly-paid employee on approved leave earns nothing for it. See Payroll.

Q: Why does searching for "إجازة" not find "الإجازات"? A: Because the search does not stem words — it matches what was written after folding hamzas, taa marbuta, tatweel and Eastern Arabic digits, not the root of the word. Type a shorter part of the word itself.

Q: Can I turn the leave suggestion off for myself? A: No. "Dismiss" only hides the card in front of you. The whole feature is opened and closed for the company from platform administration.

Q: Are calls recorded? A: No — they run through LiveKit servers and are neither recorded nor stored. The server never sees the call content; it only logs the duration in the conversation.

Q: Why do I see a "Meet" button instead of a call button? A: Because your plan includes the Virtual Office (Professional and up), so you get video meetings and rooms instead of the simple voice call. Plans without the office show the "Voice call" button.

Quick reference

Action Path
Open conversations Human Resources → "Team Chat" → the "Messages" tab
New conversation "New chat" at the top of the conversation list
Send a voice note Press and hold the microphone button
Attach a file The attach button in the composer (up to 25 MB)
Mention a person Type @ → the "People" tab
Insert a task or request card Type @ → the "Tasks" or "Requests" tab
Poll + → Poll
Schedule a message The arrow beside send → "Send Later"
Reminder Long-press a message → "Remind me"
Save a message Long-press a message → "Save" (find it under "My saved")
Convert a message into a task Long-press a message → "Convert to task" → "Create"
Convert a message into a leave request Long-press a message → "Convert to leave request" → "Send request"
Leave request with no earlier message Type / in the composer → Leave request (طلب إجازة)
Create a task with no earlier message Type / in the composer → Create task (إنشاء مهمة)
Approve or reject a request Request card → "Approve" or "Reject"
Request a change on a request Request card → "Request a change" (the note is mandatory)
Withdraw your request Request card → "Withdraw" (while it is "Pending")
Get back from the task to the message Open the task → "Source conversation" (admin tasks screen)
Search in a conversation The search button at the top of the conversation → "Search in chat"
Filter search results The type chips, or the "Filters" button → "Sender" / "From date" / "To date"
Pin a message Long-press a message → "Pin"
Pin a conversation Conversation list → press the conversation → "Pin to top"
Voice call In the conversation → the "Voice call" button
Video meeting (Professional and above) In the conversation → the "Meet" button
Focus mode The "Focus mode" button at the top of the conversation