# Data Overview

Coupler.io pulls three types of data from Slack: messages from channels or searches, channel metadata, and user profiles. Here's what's available in each entity.

## Entities

| Entity   | What it contains                                                                         |
| -------- | ---------------------------------------------------------------------------------------- |
| Messages | Text content, timestamps, authors, and reactions for messages matching your search query |
| Channels | Channel names, IDs, member counts, topics, and creation dates                            |
| Users    | User profiles including name, email, role, timezone, and status                          |

## Messages

#### Message fields

| Field         | Description                                        |
| ------------- | -------------------------------------------------- |
| `ts`          | Timestamp of the message (Unix format)             |
| `text`        | Full text content of the message                   |
| `user`        | User ID of the message author                      |
| `username`    | Display name of the author                         |
| `channel`     | Channel where the message was posted               |
| `type`        | Message type (e.g., `message`)                     |
| `permalink`   | Direct link to the message in Slack                |
| `reactions`   | Emoji reactions attached to the message            |
| `reply_count` | Number of thread replies                           |
| `attachments` | Metadata about file attachments (not file content) |

{% hint style="warning" %}
Coupler.io exports attachment **metadata** (file name, type, URL) but not the actual file content or images. Thread replies are not automatically included — use a focused search query to capture threaded messages.
{% endhint %}

## Channels

#### Channel fields

| Field         | Description                     |
| ------------- | ------------------------------- |
| `id`          | Unique channel ID               |
| `name`        | Channel name                    |
| `is_private`  | Whether the channel is private  |
| `num_members` | Current member count            |
| `topic`       | Channel topic text              |
| `purpose`     | Channel purpose/description     |
| `created`     | Channel creation timestamp      |
| `is_archived` | Whether the channel is archived |

## Users

#### User fields

| Field         | Description                              |
| ------------- | ---------------------------------------- |
| `id`          | Unique user ID                           |
| `name`        | Slack username (handle)                  |
| `real_name`   | Full display name                        |
| `email`       | User email address                       |
| `is_admin`    | Whether the user is a workspace admin    |
| `is_bot`      | Whether the user is a bot account        |
| `tz`          | User's timezone                          |
| `title`       | Job title from profile                   |
| `status_text` | Current status message                   |
| `deleted`     | Whether the account has been deactivated |

## Common field combinations

* **Message activity dashboard:** `channel`, `username`, `ts`, `text`, `reply_count`, `reactions`
* **Channel health report:** `name`, `num_members`, `topic`, `is_archived`, `created`
* **Team directory:** `real_name`, `email`, `title`, `tz`, `is_admin`, `is_bot`
* **Bot vs. human breakdown:** `is_bot`, `name`, `deleted` from the Users entity

## Use cases by role

{% tabs %}
{% tab title="Team leads" %}

* Export messages from project channels to review discussion history or create searchable archives.
* Track reply counts and reactions to identify high-engagement messages or team blockers.
* Use the Append transformation to combine messages from multiple channels into a single report.
  {% endtab %}

{% tab title="HR & People Ops" %}

* Pull the Users entity to maintain an up-to-date team directory in Google Sheets.
* Filter out bot accounts using the `is_bot` field to get accurate headcount numbers.
* Join Users data with HR system exports to cross-reference Slack handles with employee records.
  {% endtab %}

{% tab title="Analysts" %}

* Use message timestamps and channel data to analyze communication volume over time.
* Send Slack conversation exports to ChatGPT or Claude for AI-powered summarization or sentiment tagging.
* Aggregate message counts by channel or user to build activity dashboards in Looker Studio or BigQuery.
  {% endtab %}
  {% endtabs %}

## Platform-specific notes

* The Messages entity requires a **User OAuth token** — bot tokens do not support `search:read` and will not return message data.
* Slack's search API returns results in relevance order by default; use modifiers like `before:` and `after:` with the date picker to define time ranges.
* Private channel messages are only accessible if the token owner is a member of that channel.
* Bot-posted messages may not appear in search results depending on how the bot posted them (e.g., using `chat.postMessage` vs. webhooks).
* The `attachments` field contains link and metadata information — Coupler.io does not download or store actual files or images from Slack.
