Sharing something that cost me a while to find, in case it saves someone else the same afternoon.
Association absence cannot be expressed with a NOT_IN_LIST filter but only one of the two APIs tells you that.
The Lists API rejects the condition outright. You get a clear error, and you go and build it a different way.
The Workflows API accepts the identical filter, stores it, and leaves it permanently inert.
There is no error on save. Nothing in the workflow’s history. Nothing in the builder to distinguish it from a workflow that is simply waiting for a record to match, it renders back correctly, because the builder renders what was stored, and what was stored is syntactically valid and semantically dead.
I found three of these in one portal. All enabled, all sensible-looking in the UI, none had ever enrolled a single record.
How to check whether you have one
Don’t read the configuration. Open the workflow’s history, set the widest date range available rather than the default last seven days, and read total enrolments since it was enabled. Separately, count the records you believe should have matched. Zero enrolments against a non-zero population is your sign.
What work
Invert the logic into a form both APIs evaluate:
- Build an active list of records that do have the association, using IN_LIST. That form is accepted and evaluated correctly.
- In the workflow, add a list branch on membership of that list.
- Put the action on the DEFAULT path, non-members are the records missing the association.
Two things before you enable it. Verify the branch semantics against real data first: I used two throwaway lists and found 453 of 662 deals had the association, so the default path should produce 209, which it did. And date-bound the enrolment trigger, because switching on a workflow that’s been dead for two years will otherwise notify your team about every historical record the moment it starts working.
If you build this in the UI instead, @karstenkoehler’s and/or-branch approach in the association-label threads does the same job and is worth finding.
Longer write-up with the reasoning: HubSpot Workflow Not Firing? Check This Filter | OpsEthic