Problem

The module supports writing to monday.com (Webform submissions → item creation) but has
no path for reading FROM monday.com INTO Drupal. Sites that want to mirror a monday.com
board's rows into Drupal entities have to hand-roll GraphQL fetching, cursor pagination,
JSON normalization, and idempotency tracking. The Feeds module ships a
Fetcher/Parser/Processor/Target plugin architecture for exactly this use case but lacks a
monday.com-side Fetcher and Parser.

Proposed resolution

Add a monday_crm_feeds submodule with two Feeds plugins and one new
service method. No custom Target plugins — Feeds core's built-in
EntityReference and StringTarget cover every reference and id
mapping through Feed Type config.

MondayClient::getItemsPage()

New method on the existing service:

public function getItemsPage(
    int $boardId,
    ?string $cursor = null,
    bool $includeArchived = false
  ): array;

Returns an array with the next cursor and the items array. Wraps monday.com API v2
items_page.

MondayBoardFetcher

Page-per-batch pagination using Feeds' native StateInterface — reads and
writes a cursor on the state object across batch invocations, so memory stays constant
regardless of board size. Config: board_id,
include_archived.

MondayItemsParser

Normalizes monday.com's per-column-type payloads into canonical shapes so downstream
Feeds targets consume Drupal-native values:

  • status → single label string
  • dropdown → array of label strings
  • numeric → PHP float
  • date → ISO 8601 string
  • board_relation → array of linked item IDs
  • checkbox → PHP bool
  • text, long_text, email → raw string

Also emits pseudo-columns _monday_group_id and
_monday_group_title, so boards that use board-group as parent identity are
mappable without a real column.

Scope

  • Read-only — GraphQL queries only, no mutations
  • Feeds ^3.2, Drupal ^10 || ^11, PHP ^8.2
  • No dependency on any domain module

Remaining tasks

  • Scaffold modules/monday_crm_feeds/
  • Implement MondayClient::getItemsPage()
  • Implement MondayBoardFetcher and MondayItemsParser
    plugins
  • Config schema + watchdog channel
  • Unit tests for the client method; kernel tests for the parser
  • Example Feed Type YAML in test fixtures, doubles as documentation
  • README documenting install, config, and Feed Type authoring

Data model changes

None. Sites define their own target entities and mappings.

Related

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

das.gautam created an issue. See original summary.

das.gautam’s picture

Status: Active » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.