Dynamic Item Mapping: Know what field is mapped to what column

Hello!

This request is about item mappings and custom recipes and custom field types in the Apps Framework.

It is my understanding that there is currently no way to know which of my custom field values is mapped to which columns in Monday.com. If this was possible, it would become much easier to create recipes such as “When [x is created in another app], create an item and sync future changes from app.”

Currently the built-in action “create an item” works great, but having a way to automatically sync future changes from our app would be a huge win. For this, we would have to create a custom action: “create an item and sync future changes from some app”. Since this is a custom action, it becomes our app’s responsibility to create a new item through the Graph API, which works as expected. But there is no way for our app to update the item appropriately without knowing what piece of data should be mapped to what column in Monday.com.

I hope this makes sense! Here’s an example:

Currently when I raise a custom trigger on Monday.com from our app, we send a "key": "value" pairs, which Monday.com uses to create a itemMapping object that is sent back to our custom action, like so:

...
"inputFields": {
    "itemMapping": {
      "name": "Hello, World!",
      "email": "anthony@agencegro.com",
      "phone": "+11234567890",
      "person": {
        "identifierType": "email",
        "identifierValue": [
          "anthony@agencegro.ca"
        ]
      },
      "people": {
        "identifierType": "email",
        "identifierValue": [
          "anthony@agencegro.ca"
        ]
      },
      "numbers": 889,
      "__groupId__": "topics"
    },
    "boardId": 2055858810
  },
...

Using this data, we can easily create a new item in Monday.com using the GraphQL API and retrieve the new item ID.

Unfortunately, we need the item mapping details to update this new item in the future. Something like this would be fantastic:

...
"inputFields": {
    "itemMappingDetails": {
      "column-id-in-monday": "object-key-in-my-own-app",
      "name": "name-key-in-my-own-app",
      "email": "email-key-in-my-own-app",
      "phone": "phone-key-in-my-own-app",
      ...
    },
    "boardId": 2055858810
  },
...

, or since realistically the mapping details are more complex than this, something like:

...
"inputFields": {
    ...
    "itemMappingDetails": {
      "name": [
        {
          "type": "static",
          "value": "Hello, "
        },
        {
          "type": "fieldKey",
          "value": "name-key-in-my-own-app"
        }
      ],
      "email": [
        {
          "type": "fieldKey",
          "value": "email-key-in-my-own-app"
        }
      ],
      "phone": [
        {
          "type": "fieldKey",
          "value": "phone-key-in-my-own-app"
        }
      ]
    },
    "boardId": 2055858810,
    ...
  },
...

Hello @ilareguy and welcome to the community!

That sounds very interesting and I will make sure to share it with our R&D team so they can take it into consideration :muscle:

Thank you for that request!

Cheers,
-Matias