At least once a week I wake up and think "NOOOOO, not today" and I come up with a million reasons as to why I should stay in bed an hour or two longer. Then I mentally calculate if I can move anyone around in order to get a longer lie, then I eventually drag myself up and get ready in a mad dash because all that procrastinating cost me 30 minutes when I knew I would have got up and went to work on time anyway. Once I am there and in the flow, I am happy I went.
So to answer the question, I don't cancel. Unless there is something very wrong which limits my ability to work, such as a period or illness. I recently had a terrible issue with a new IUD which left me bleeding for months - extremely heavy for the first week. I explained to my clients that had booked in advance, some were happy to go ahead without sex, others rearranged. And I mainly sponged it for the whole two months.
I work this way now because when I first started and until around the first year mark, I was terrible. I would cancel all the time, or forget to even cancel on clients and have angry messages saying they were standing at my door. It was very unprofessional of me and to be honest, I only got away with it because I was "new" and everyone wanted a piece of me. I was dealing with a lot of personal problems back then so it is surprising I even made it to work consistently.
Now? I don't treat my clients with such disrespect, I value them and I try my damn hardest to keep to my agreements. I'd say I have a good reputation due to this.
Moral of the story - get yourself to work if it's just an off day, you'll feel better for it.