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 stringdropdown→ array of label stringsnumeric→ PHP floatdate→ ISO 8601 stringboard_relation→ array of linked item IDscheckbox→ PHP booltext,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
MondayBoardFetcherandMondayItemsParser
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
- Feeds (dependency)
- monday.com API
reference
Issue fork monday_crm_integration-3608229
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
Comment #3
das.gautam commented