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

Hi,

I’m developing an integration app and need to get dynamic mapped items. Then I need to update monday with new values, but have no column ids of a board. I have only dynamic mapped column ids that I set before.

Looks like this question is what I need as well.
Can you pelease send real column ids together with fetched column ids when creating a dynamic mapping?

For now what I did was creating a dynamic mapping field using Field Types, adding it as a Recipe Sentence and also added itemMapping as Trigger Output. And in my code I’m mapping these fields and keys by their values (that’s not a good solution, because values can be the same on other columns as well).

Waiting for a solution.

Thank you,
Arthur.

Hi @arthur.a,

I can see how this adds a layer of effort! I will pass this feedback on to our development team for their consideration. Thanks again for sharing your use case with us.