Bug Report: add_smart_list_rule fails for Marketo system boolean fields | Community
Skip to main content
Level 1
July 1, 2026
Question

Bug Report: add_smart_list_rule fails for Marketo system boolean fields

  • July 1, 2026
  • 0 replies
  • 0 views

What I tested

We were using the MCP to bulk-update smart lists across 59 nested programs in an engagement program. The goal was to add two filters to each smart campaign's smart list: an Email Address filter and a Marketing Suspended filter, then switch the filter logic to ANY.

What worked

Adding string-type filters works great. We successfully added Email Address (not contains[".edu", ".org"]) across all 59 smart lists using add_smart_list_rule followed by update_smart_list_rule. Filter logic updates via update_smart_list_filter_logic also worked perfectly. This was a huge time saver.

The bug

add_smart_list_rule returns error 709 "Smart List Rule Type Unsupported" for any Marketo system boolean field. We tested:

  • Marketing Suspended (id: 85)
  • Email Suspended (id: 123)
  • Unsubscribed (id: 79)
  • Black Listed (id: 87)
  • Do Not Call (id: 82)
  • Email Invalid (id: 77)
  • Email Invalid Cause (id: 78, string type but system-managed)

All return the same 709 error regardless of what we pass for ruleTypeindex, or isTrigger.

Key finding

Custom boolean fields work fine with the same parameters. We tested CF_First_Gen_Flag (id: 843) and CF_Athletic_Recruit_Flag (id: 808) — both added successfully. So the restriction is specific to Marketo's built-in system fields, not boolean data types in general.

Additional note

Since delete_smart_list_rule is disabled in the beta, there's no API cleanup path when an add fails or leaves a stray rule — it requires manual removal in the Marketo UI. Worth considering alongside this bug since the two issues compound each other.

Expected result: Filter added, same as custom boolean fields

Actual result: 709 "Smart List Rule Type Unsupported"

Workaround: System boolean filters must be added manually in the Marketo UI. We ended up with a hybrid approach — MCP for everything it supports, manual UI work for the blocked fields.