No one has randomly come to my town for ages. I got I think about 16 people and it hovers at 80-82% happiness. I got more than enough beds, food, water, heaps of defence, shops but it isn't helping much.
I have assigned many people to my shops but no one really tends to be the shopkeeper there which is pretty damn annoying. There is always one at the first aid, sometimes at the general but no one ever is at the weapons/ammo one.
I dont think you can actually make them 100% happy