Why the field name you see is not what the API uses
Every custom contact, account, and deal field in ActiveCampaign has an internal numeric field ID separate from its human-readable label, and the API requires that numeric ID for reads and writes. n8n's ActiveCampaign node dropdown is generally populated from a live lookup, but when fields are referenced through an expression, a manually typed value, or a field that was renamed after the workflow was built, the stored reference can point at an ID that no longer matches the field the UI shows under that name.
This produces the specific, confusing symptom of the node reporting a successful write while the value simply does not appear where expected — because it wrote to a real field, just not the one intended.
Deal custom fields are a special case
ActiveCampaign's own documentation confirms deal field IDs specifically can only be retrieved via the API — there is no page in the ActiveCampaign UI that lists deal custom field IDs directly, unlike contact fields which are somewhat more discoverable. If a deal-field update silently fails or goes to the wrong field, this is the first thing to check, since guessing a deal field's ID from its contact-field counterpart (if a similarly named one exists) is a common but incorrect assumption — they are not the same ID space.
Retrieve the authoritative field IDs directly
For contact fields, ActiveCampaign's fieldValues and fields API endpoints return every custom field's numeric ID alongside its label. For deal fields specifically, the dealCustomFieldMeta endpoint is the authoritative source, since it is the only place these IDs are actually exposed.
# Contact fields:
curl -H "Api-Token: your-api-token" \
"https://your-account.api-us1.com/api/3/fields"
# Deal fields (only retrievable this way — not shown in the UI):
curl -H "Api-Token: your-api-token" \
"https://your-account.api-us1.com/api/3/dealCustomFieldMeta"
# Match the "title" in the response to the field you intend to update,
# and use its numeric "id" in the n8n node, not the title string.
Fix by using the correct ID
For contact fields, use the ActiveCampaign node's own field/parameter dropdown where available, which performs a live lookup rather than relying on a hardcoded or previously saved ID — re-select the field explicitly rather than trusting an existing expression.
For deal fields, call the dealCustomFieldMeta endpoint above (via an HTTP Request node with the same API credentials, if the ActiveCampaign node itself does not expose deal field metadata) to retrieve the authoritative list of deal field IDs and their labels, then use that specific numeric ID in the update.
After correcting the ID, test on one contact or deal and confirm the value appears in the ActiveCampaign UI under the field you intended — do not rely on the node reporting success alone, since a write to the wrong (but valid) field ID also reports success.
Sources checked for this guide
ActiveCampaign's own help center confirms the ID-based field model and the deal-field API-only retrieval; community reports describe the resulting n8n-side symptoms.
Frequently asked questions
The node says the update succeeded but the field is empty — what happened?
The write likely succeeded against a real field, just not the one you intended, because ActiveCampaign addresses fields by numeric ID rather than the display name shown in the UI. Re-verify the exact field ID being used.
Where do I find a deal custom field's ID in the ActiveCampaign dashboard?
You generally cannot — deal field IDs are retrievable only through the API's dealCustomFieldMeta endpoint, unlike some contact fields which are more discoverable through the UI.
Can I assume a deal field uses the same ID as a similarly-named contact field?
No. Deal fields and contact fields are separate ID spaces in ActiveCampaign even when they share a similar label — always confirm the deal-specific ID directly.
How do I call the deal field metadata endpoint if the n8n node doesn't expose it?
Use an HTTP Request node with the same ActiveCampaign API token and account URL, calling GET /api/3/dealCustomFieldMeta directly — the response includes each deal field's numeric id and its title.