# Formatting text

> mrkdwn syntax for chat app messages: bold, italics, links, mentions, channels, dates and emoji.

Text objects with `"type": "mrkdwn"` — and a message's top-level `text` — use Slack's **mrkdwn**, a small markdown dialect. `plain_text` shows text as written (emoji shortcodes still work when `emoji` isn't `false`). For full Markdown, use a [markdown block](https://workstation.repzo.com/docs/developers/block-kit/blocks/markdown-block).

## Basic formatting

| You write | People see |
|---|---|
| `*bold*` | **bold** |
| `_italic_` | *italic* |
| `~strike~` | ~~strike~~ |
| `` `code` `` | `code` |
| ` ```block of code``` ` | A code block (nothing inside it is formatted) |
| `> quoted line` at the start of a line | A quote |
| A new line (`\n`) | A line break |

## Links

| You write | People see |
|---|---|
| `<https://example.com>` | https://example.com |
| `<https://example.com\|the docs>` | the docs |
| `<mailto:sales@example.com\|Email sales>` | Email sales |

Only `http`, `https` and `mailto` links are shown as links. Repzo pages open inside Workstation.

## Mentions and channels

| You write | People see |
|---|---|
| `<@USER_ID>` | A mention chip with the person's current name |
| `<#CHANNEL_ID>` | A link to the channel (the name shows only for public channels) |
| `<!here>`, `<!channel>`, `<!everyone>` | `@here`, `@channel`, `@everyone` |
| `<!subteam^DEPARTMENT_ID>` | `@Department name` — Slack user groups map to Workstation departments |

Use the ids from `/api/v1/chat/users`, `/api/bot/channels.list` and the departments API. You can add a fallback label after a `|`: `<@USER_ID|Dana>`.

> **Differs from Slack**
>
> Mentions and broadcasts from an app are shown, but they don't send notifications.

## Dates

`<!date^UNIX_TIME^FORMAT|fallback>` shows a date in each reader's own locale and time zone:

```text
Due <!date^1792479600^{date_long_pretty} at {time}|Oct 20, 2026>
```

| Token | Example |
|---|---|
| `{date_num}` | 2026-10-20 |
| `{date}` | October 20, 2026 |
| `{date_short}` | Oct 20, 2026 |
| `{date_long}` | Tuesday, October 20, 2026 |
| `{date_pretty}`, `{date_short_pretty}`, `{date_long_pretty}` | As above, or "today", "yesterday", "tomorrow" |
| `{time}` | 10:00 AM |
| `{time_secs}` | 10:00:00 AM |
| `{ago}` | in 3 days |

The fallback shows wherever the date can't be formatted (search results, notifications).

## Emoji

`:white_check_mark:`, `:tada:`, `:warning:` and the other standard shortcodes become emoji. Skin tones work as `:thumbsup::skin-tone-3:`.

## Escaping

Write a literal `&`, `<` or `>` as `&amp;`, `&lt;` and `&gt;` — as on Slack — so they aren't read as links or mentions.

## Related

- [Text object](https://workstation.repzo.com/docs/developers/block-kit/objects/text-object)
- [Rich text block](https://workstation.repzo.com/docs/developers/block-kit/blocks/rich-text-block) — structured formatting without markup
- [Sending messages](https://workstation.repzo.com/docs/developers/chat-apps/sending-messages)
