Hi everyone,
I think I’m losing my mind on this one.
I’ve been trying to make an Airtable Upsert work for hours and I’ve literally tried everything.
I keep getting the same error, even after completely removing the field it refers to.
The error
Your request is invalid or could not be processed by the service
Value “https://example.com” is not a valid record ID.
The weird thing is:
-
The field I’m mapping this value to is a plain text field (not a linked record).
-
The error still complains about “record ID”.
-
Even after removing the mapping for this field, n8n continues to show the same error — like it’s cached somewhere.
-
I even switched the column used in “Columns to match on” and refreshed the table schema, but the issue persists.
Context
Here’s roughly what I’m doing:
-
Operation: Create or Update (Upsert)
-
Base: (generic Airtable base)
-
Table: (generic table)
-
Columns to match on: a text field (Key)
-
Values being sent:
-
Key → canonical URL (string)
-
Client → { id: client_id } (linked record)
-
Project → { id: project_id } (linked record)
-
URLs → JSON string array
-
Hreflangs → JSON string array of objects
-
I’ve already tried:
-
Wrapping the expression in String()
-
Adding a Set node before the Upsert to force the value as plain text
-
Changing the table and switching back to force a schema refresh
-
Creating a new text column to match on
Still, I get exactly the same Value “https://…” is not a valid record ID message.
What I need help with
-
Has anyone else seen this “not a valid record ID” issue when using Upsert on a text field?
-
Is there a way to force n8n to send the value as a string, or clear cached Airtable field types?
-
Could this be a bug in how the Airtable node handles custom “Columns to match on”?
Thanks in advance — I’m really stuck on this and starting to go insane ![]()
