**Airtable “Update Records in Bulk (advanced)” shows an empty required Records field after scenario creation through the API, although the mapper JSON is intact

:bullseye: What is your goal?

To use the API to create scenarios that include the “Update Records in Bulk (Advanced)” module without an error in the UI.

:thinking: What is the problem & what have you tried?

I am seeing a reproducible editor-hydration problem with the Airtable Update
Records in Bulk (advanced)
module (airtable:bulkUpsertRecords, module version
3) when a new scenario is created through Make’s v2 API.

Summary

The scenario is accepted by the API and is reported as valid. A subsequent
GET /api/v2/scenarios/{scenarioId}/blueprint confirms that the module’s
mapper.records array and fieldsToMergeOn value are present and correct.
However, when the module is opened in the Make editor, the required Records
control is completely blank and displays:

Records: Field must not be empty.

The UI therefore cannot display or safely edit configuration that Make has
already stored in the scenario blueprint.

Environment

  • Make region: us2
  • Scenario created through the Make v2 API
  • Module: airtable:bulkUpsertRecords
  • Module version: 3
  • Airtable mapper uses field IDs with useColumnId: true
  • typecast: true
  • Observed on August 9, 2026

Reproduction steps

  1. Create a new scenario through the API containing an Airtable
    airtable:bulkUpsertRecords v3 module.
  2. Supply a valid mapper containing base, table, select: "map",
    records, fieldsToMergeOn, typecast: true, and useColumnId: true.
  3. Confirm that scenario creation succeeds and the scenario is not marked
    invalid.
  4. Retrieve the saved blueprint through
    GET /api/v2/scenarios/{scenarioId}/blueprint and confirm that the
    mapper.records entries are still present.
  5. Open the same Airtable module in the Make scenario editor.

Sanitized mapper shape

{
  "module": "airtable:bulkUpsertRecords",
  "version": 3,
  "parameters": {
    "__IMTCONN__": 1234567
  },
  "mapper": {
    "base": "appREDACTED",
    "table": "tblREDACTED",
    "select": "map",
    "records": [
      {
        "record": [
          {
            "id": "fldMERGE_KEY",
            "type": "text",
            "value": "{{7.external_id}}"
          },
          {
            "id": "fldNAME",
            "type": "text",
            "value": "{{7.name}}"
          }
        ]
      }
    ],
    "typecast": true,
    "useColumnId": true,
    "fieldsToMergeOn": [
      "fldMERGE_KEY"
    ]
  }
}

Actual result

  • The editor renders Records as empty and raises the required-field error.
  • The stored blueprint still contains every mapped record field.
  • The merge-field control may render separately, which makes the module look
    only partially configured.
  • The module cannot be safely maintained in the UI in this state.

This occurred independently in two bulk-upsert modules in the same new
scenario: one contained 15 mapped fields and the other contained 20. API reads
confirmed both mappers were intact before repair.

Expected result

When an API-created module contains a valid mapper.records array, the Make
editor should reconstruct and display the Records rows from the mapper. Missing
or incomplete UI metadata should not cause the editor to present stored
configuration as empty.

At minimum, one of these should happen:

  1. scenario creation enriches the module with the metadata needed by the
    editor; or
  2. the editor derives the dynamic Records control from the saved mapper when
    the module is opened.

Proven workaround

I generated a full-metadata version of both modules, including complete
metadata.expect, metadata.restore, metadata.interface, and parameter
metadata, and then used the Make UI’s full-scenario Import Blueprint action.
After import:

  • the editor rendered all 15 and 20 mapped fields correctly;
  • GET /api/v2/scenarios/{scenarioId}/blueprint still returned the same mapper
    values and merge keys; and
  • Make enriched the module metadata further when the modules were opened and
    saved in the UI.

This confirms that the data mapper was valid and the failure was in editor
hydration/metadata handling.

The workaround is burdensome and risky for production scenarios because it
requires replacing the full blueprint just to make one valid module editable.
In addition, the UI import reset this instant-webhook scenario’s schedule from
Immediately to a 15-minute/indefinite schedule, which must then be corrected
separately before activation.

Requested fix

Please make airtable:bulkUpsertRecords v3 hydrate the Records UI directly from
mapper.records, or have API scenario creation generate the complete editor
metadata automatically. It would also be helpful if the editor warned that
stored mappings exist instead of rendering the control as empty.

I can provide a redacted before/after blueprint and screenshots privately if
that would help reproduce the issue.

Hi @Barnaby_Marshall,

You can open a ticket with the Customer Care team. This community consists of Make users and enthusiasts who can help you only so far. The official Make support has access to internal systems and logs, and can help you with technical issues, bugs, and all other questions regarding Make.

When you get the issue resolved, feel free to post it in the community to contribute to the knowledge base, we’re building here!

Thank you :folded_hands:

I’ve hit the same class of bug when spinning up scenarios through the v2 API: the blueprint GET looks perfect, then the editor only hydrates part of a nested mapper. With airtable:bulkUpsertRecords v3 the UI seems to rebuild the Records control from the module schema rather than just re-reading mapper.records as stored — so a nested record: [{ id, type, value }] shape the API accepts can still render as an empty required field.

One practical check that has helped: open the broken module, switch Select away from Map and back to Map (don’t edit values yet), then Save. If GET /blueprint still has the records but the UI stays blank, it’s almost certainly editor hydration, not a bad payload — worth a support ticket with the scenario ID and the sanitized mapper you already posted.

When you recreate the same module by hand in the UI and then export the blueprint, does the records array look the same as the one you POST, or does Make rewrite it into a different shape?