If you hear them at the door, leg it upstairs and throw a towel on and oretend you were just getting into the shower and say 'gosh, sorry, I was just getting into the shower. Give me a text next time so I know to expect you'. Then send them to the kettle to sort themselves while you go shower to make them really feel bad and definitely text next time.
My in laws have started doing this. It pisses me off. They know it does and still do it. Last week we were having our dinner and they turned up. There is always manipulation added to it. Oh we bought you a gift from this trip or that trip. We don't care, it's not a reason to turn up!
I feel you OP! I've always made sure I say in front of people that I don't like unannounced visitors generally and that I find just turning up really rude. Just in conversation.
Whenever I say it (I've had to say it more frequently to some than others!) my DM says 'well yes but there are exceptions like me, obviously'. No, there are no exceptions! Unless it's an emergency, don't come to mine unless you call or text first.
Also, now that everyone knows how I feel about it, I ignore the door. If it was an emergency whoever it was would soon ring me.
Get a hat! I had a great Aunt who always put a hat on before answering the door. If it was someone she wanted to see, she had only just got in and hadn't had time to take her hat off yet. If it was someone she didn't want to see, she was just on her way out!
If it's too hard to say it, you should be able to re-train them by being out, putting your coat on (as though you're about to go out) or answering in a towel from an upstairs window. From there, it's easy to say, 'It's probably best to always call beforehand' or something like that.
This is why I don’t answer the door, ever, no exceptions. Unless I am expecting someone round there is no reason to answer the door.
I also turn my phone to do not disturb and unplug the home phone after 9pm, as have had relatives phone in the middle of the night to tell me some mundane “news” that really could wait until the morning. People are so bloody selfish I can’t stand it. I wouldn’t dream of pulling any of this shit.
I found a great way around this problem. OP you need to move over 100 miles away from them and get a house with a 10ft gate at the bottom of the driveway. Throw in a "dogs running loose" sign for good measure and bobs your uncle, they'll start booking visits well in advance! 😂