Years ago, when my oldest kids were in preschool, they had a splash pad so we sent towels with them. I had the iron on labels and they stayed on (we still have the towels as old pool towels and the labels are still on). Now, these are cheapie towels - not thick lofty ones. These are the kind that are very thin and not fluffy - so not sure if that makes a difference.
I have used sew on labels and found those to be a pain (not on towels mind you). I can't sew worth beans though so perhaps it was my technique - but for me, they frayed along the edges where I sewed, and looked terrible not long after they were washed.
I cannot remember where I purchased them, but it was online. It was the kind you could write on (didn't come monogramed).
Good luck :)