> I'm sure there is also a "cleaner" TeX way, but I'm not experienced enough for that.

I think you misunderstood my issue: your Lua way does the same thing than my TeX way: it displays:

ONE Cool
2 Cat
3 Mouse

but that is NOT what I want. What I want is:

1 Cool
2 Cat
3 Mouse

So I need to check if the chapter label has been set empty or not by the user, because it is not empty (let's say the user chose the string "CHAPTER~" for the chapter label) I want to display this:

CHAPTER ONE Cool
CHAPTER 2 Cat
CHAPTER 3 Mouse

The way to do that is to check if the variable \currentstructurelabel is empty, so the code must be:

\define[1] \MyCommand{\doifelse{\currentsectioncountervalue}{1}{\doifnotemptyelse{\currentstructurelabel}{ONE}{#1}}{#1}}
\setuphead[chapter][deepnumbercommand=\MyCommand]

\starttext
    \setuplabeltext[chapter=CHAPTER~]
        \chapter{Cool}
        \chapter{Cat}
        \chapter{Mouse}
\stoptext

\starttext
    \setuplabeltext[chapter=]
        \chapter{Cool}
        \chapter{Cat}
        \chapter{Mouse}
\stoptext

But the problem is that in the second case, even if the chapter label is set empty the command \doifnotemptyelse{\currentstructurelabel} thinks the variable \currentstructurelabel is not empty. So there must be something invisible in it, like a strut or something.