Skip to content

Monday.com

Monday.com is a Work OS that powers teams to run projects and workflows with confidence. It's a simple, yet powerful platform that enables people to manage work, meet deadlines, and build a culture of transparency.

URI format

The URI format for Monday.com is as follows:

monday://?api_token=<api_token>

URI parameters:

  • api_token is your Monday.com API token for authentication.

Setting up a Monday.com Integration

You can obtain an API token from the Monday.com Developer Console. For more information, see Monday.com authentication documentation.

To get your API token:

  1. Go to your Monday.com account
  2. Click on your profile picture in the top right corner
  3. Select "Admin" → "API"
  4. Generate a new API token

Example

Let's say you want to ingest all boards into a DuckDB database called monday.db. For this example the value of api_token will be fake_token.

You can run the following to achieve this:

sh
ingestr ingest \
  --source-uri "monday://?api_token=fake_token" \
  --source-table "boards" \
  --dest-uri "duckdb://./monday.db" \
  --dest-table "public.boards"

Tables

Monday.com source allows ingesting the following resources into separate tables:

TablePrimary/Merge KeyInc KeyInc StrategyDetails
account--replaceAccount information including name, slug, tier, and plan details. Full reload on each run.
account_roles--replaceAccount roles with their types and permissions. Full reload on each run.
users--replaceUsers in your Monday.com account with their profiles and permissions. Full reload on each run.
boardsidupdated_atmergeBoards with their metadata, state, and configuration. Incrementally loads only updated boards.
itemsid-replaceItems (rows) across all boards, including each cell's raw values as a JSON array in column_values. Full reload on each run.
workspaces--replaceWorkspaces containing boards and their settings. Full reload on each run.
webhooks--replaceWebhooks configured for boards with their events and configurations. Full reload on each run.
updatesidupdated_atmergeUpdates (comments) on items with their content and metadata, including the creator and item names. Incrementally loads only updated entries.
teams--replaceTeams in your account with their members. Full reload on each run.
tags--replaceTags used across your account for organizing items. Full reload on each run.
custom_activities--replaceCustom activity types defined in your account. Full reload on each run.
board_columns--replaceColumns defined in all boards with their types and settings. Full reload on each run.
board_views--replaceViews configured for boards with their filters and settings. Full reload on each run.

Use these as --source-table parameter in the ingestr ingest command.

Scoping to specific boards

items, boards, board_columns, board_views, and updates accept an optional :<board_id>[,<board_id>...] suffix to restrict the result to the listed boards. Without a suffix they behave as before (every board in the account).

sh
# Items on a single board
ingestr ingest --source-table "items:5091839751" ...

# board_columns from two boards
ingestr ingest --source-table "board_columns:5091839751,5091841857" ...

# Updates on items belonging to a single board
ingestr ingest --source-table "updates:5091841883" ...

items:<board_id>:linked

items additionally supports a :linked suffix that treats the given board as a "master" board and also pulls items from any sub-boards whose name matches one of the master's item titles. Useful for a "master board → linked sub-boards" fan-out pattern where the master's items name the sub-boards. Requires at least one master board id.

sh
ingestr ingest --source-table "items:5091839751:linked" ...

NOTE

:linked discovers sub-boards by the convention that an item on the master board has the same title as the sub-board's name. So if your master board has an item called Q1 Roadmap and you also have a board called Q1 Roadmap, that board is treated as a linked sub-board and its items are included in the result.

NOTE

Monday.com rate limits API requests, mainly by query complexity per minute. The source paginates automatically (up to the API's 100-item page size), throttles its own request rate, and retries throttled (HTTP 429) and transient (5xx) responses. It waits the time Monday asks for, whether from the Retry-After header or the retry_in_seconds field a complexity error returns instead.