You've been given some great advice but the one thing I haven't seen anyone mention that worked wonders for us was bell training. We literally had Moab housebroken in a month doing this and most accidents he had were when he rang the bell and we simply didn't get there fast enough to let him out. We may have been extremely lucky, but if all else fails, you could always try this.
We bought a large bird bell at petsmart and hung it from a string on the door where we would be taking him outside to potty. Every time we'd take him to the door when he was little, we'd ring the bell ourselves, then take him outside. After a few days, we started putting a treat on the bell or a bit of peanut butter on it when we'd take him to the door so that he'd ring it himself, then we'd praise the heck out of him and take him outside. If he went potty outside, more praise and treats. It didn't take him long at all to figure out that if he rang the bell he got treats and a trip outside. If he went potty outside, he got even more treats. What we didn't do was let him go outside and play when he rang the bell ... only potty. If he didn't go potty after a minute or so, we simply picked him up and went back inside. Like I said, most of his accidents occurred in front of the door right after he'd rung the bell. We NEVER scolded him for this because he'd done his best to let us know he needed to potty. It was our fault if we didn't get him outside in time.
Moab's now almost 3 years old and we still have the bell on the back door. Its his way of telling us when he needs out any time of the day or night. We went though a period where he'd ring it when he wanted to go out to play as well or just wanted attention but we just had to be disciplned, not give in to that behavior and it stopped.
Best of luck to you and hopefully, you'll have a housebroken puppy very soon!