I'd suggest that the next time she is more than 30 minutes late, you pack up your son and head out and do something with him. Don't call or text her, and don't leave her a note.

She'll eventually text you with an "I just got here -- where are you guys??" Ignore that for 2 hours, then give her a "Oh, I just saw this. We've been busy. I'll have him back by 6" (or whatever).

When you come back with him, tell her (out of your son's earshot) that "I have decided that I will no longer allow (son) to be kept waiting, disappointed, because his mother can't seem to make him a priority in his life. Next time, I'll expect the courtesy of a call, and for you to be on time for him, or else I will take him to do something he enjoys."

END OF DISCUSSION.

Puppy