We waited until Jacob turned 3 to potty train him and had him trained in underwear within days. He caught on really quickly and would say, "MOMMY! I have to go POTTY!" Then he would run to the bathroom. Crazy enough, he hasn't had an accident since... not even in his bed. So we were waiting until Gavin turned 3 so hopefully, he would follow in the footsteps of his big brother.
Apparently, while we were in Hawaii, my mom decided to get a head start with the process. (Although Gavin will be three on March 9th, so we would've started pretty soon) She bought him Diego pull-ups, so if they got wet, the soccer balls on the front of the diaper would disappear. She kept asking him all day long if his soccer balls were dry. :) That, along with a song after going on the potty, was all he needed for motivation. My mom made up this song way back when his cousin Maddie was potty-training. When you plug in his name, it goes, "Hooray for Gavin! Hooray for Gavin! He's a big boy, hooray for Gavin!" He loves it.
When we brought him home, we went straight to big boy underwear simply because... well, that's what we did with Jacob. However, Jacob would tell us when he had to go potty and Gavin doesn't. We soon realized this makes a huge difference when it comes to potty training. Once Gavin pooped in his underwear and it took us almost an hour to clean everything up, he was immediately back in pull-ups! He's doing a pretty good job keeping his soccer balls dry though. We just have to keep on top of taking him to the potty every few hours... otherwise, he will just go in his pull-up. A totally different experience, a totally different kid. Hopefully, he will catch on soon!