
I can tell you what we've done and has worked for us! This is going to be long, but hopefully helpful!
First off, your 12 week old puppy is still a baby. So I always advise people to keep that in mind. Just like babies, they have very short attention spans - so don't be surprised if five minutes is all a puppy can handle before they get distracted by butterflies, ants, grass, the air ... It's best to break training sessions down into lots of little snippets than try to cram it all into one marathon.
Imagine for a minute you came to my apartment. I told you we were going to play a game, but I wasn't going to tell you the rules. You can learn them as we go. You take a step forward, I jab you with my elbow. Okay, you won't do that. You turn around. I jab you again. Hm, not that either. You sit down, I give your hiney a kick. Now you have no idea what-so-ever what I want. Playing the game without knowing the rules sucks and you're definitely losing!
This is essentially what happens when we punish/correct a puppy. They don't know "the game" of heel yet, they don't know the rules, the objective, anything. We have to teach them the game first, then, once we're sure they know the rules, we can think about ways to discourage breaking the rules. Learning takes lots of repetition, think of how many times you had to practice before riding a bike became natural, or playing bridge didn't require a guidebook. Your puppy would appreciate the same courtesy being extended to his learning too

Very few people can ride a bike their first try, very few puppies learn to walk politely on a leash the first time.
Let's go back to the original example of you at my apartment. Eventually, if I kept poking and prodding you, you would probably figure out to walk next to me is the point of the game. Afterall, you're not braindead! But, do you think you would offer a lot of behaviors in the future of games at my house? The next time we play what are you going to do? You would do the least amount required to avoid my punishment. I don't want my puppies (or friends lol) working like that. I like to see behaviors offered, as that's a super easy way to train - and I don't want my dog working for me just to avoid an undesirable consequence. I want them working for me because they know offering up things I deem desirable will lead to good things. (See:
101 Things to do with a Box) This makes training future things easier!
If I were to take you into a new room now you'd probably sit and wait for me to force you to do something, that's a sure way to avoid my elbow jabs and boot to hiney. That's fine if I want to teach you to lay down, I'll just shove you down and you'll learn that way. But what if I wanted you to pick up my phone when I drop it? You're not going near that thing because I didn't tell you to - so how will I force you to grab it? My puppy might go investigate it, I could reward that and work up to being specific to putting it in its mouth and carrying it to me.
Now, back to the walking on a leash thing! You're doing great luring with food, that's perfect to teach the puppy where he or she belongs. One game that we play is "catch me." When puppy starts to get distracted, get your voice high-pitched, get super excited ("Oh puppy, puppy, puppy!! Comeon comeon comeon!!") and go off the other direction. Once they get to you treat them and go back to heeling. You need to be the most interesting, coolest, tastiest thing in the yard. Which brings me to another point! Train in one spot with very minimal distractions to begin with. As puppy learns what is expected you can challenge them in the future - but we want to set them up for success at the start!
Like you've done, I've had good success with just stopping when puppy pulls. Once they stop (and this might be a while, wait it out) call them to you, reward for coming, and off you go again! This will take *a lot* of repetition, but it will be worth it in the end just like riding a bike is super sweet on a nice day

As for training collars and devices, I restrict those to use on adult dogs that know what I want. For instance, once my Jake got so big he could pull me down a hill after squirrels, we got an easy-walk harness. He understood what "heel" meant, so I felt comfortable using something like that on him. He knew the game and the rules - and I need to not fall over if a squirrel darts out in front of us! The only training collar I would use on a puppy under 6 months is a martingale so they can't slip out if they're wont to do that. Jake also competes in obedience, and has titles - so, so far I don't think I've ruined him.
One of the first things we teach before heel is "watch me." Have you worked on that? I'll explain what we do just in case you haven't. Get puppy interested in you and some treats. Standing, put treats in your hand and make sure puppy knows they're there. Stand with your arms away from your sides. The puppy will look at your hands, where the food is. The second they look at your eyes, say "Yes!" (or whatever quick, short praise word you choose) and give the treat. Keep doing this over and over. Puppy will quickly learn the way to make food rain from the sky is to look in your eyes. Then, begin cuing "watch me" as the puppy looks at you.
This makes it so much easier to deal with distractions when you're training heeling! If puppy gets distracted by a lint ball on the carpet you can just say "watch me!" give them a reward for watching you, and start over. I have never ever seen a dog conniving enough to get intentionally distracted just so they can be issued a watch command and get a treat - but lots of owners worry about that

Lastly, I don't make my dogs heel all the time. When we walk to go potty, they know not to pull on the leash, but do they have to walk right with their shoulder even with my leg? No. When we go to the park they are on long leashes to enjoy *their* time out. Seeking behavior (smelling, exploring etc.) is very important to the development of dogs (once they get their vaccines of course), and it's important they have the opportunity to do that. When I say heel (actually, our command is "with me," heel to Jake is a specific command to move from in front of me to my left side and sit) Jake will come back and walk beside me, but he doesn't heel every time he's on a leash and I don't expect him to either. As a puppy, if he pulled like a sled dog (and boy did he try!) I would stop, "be a tree" and not move, and once he let up the tension we'd head off again.
I hope that helps! Have fun training your puppy! It is so much fun to watch them learn and now is an awesome time to teach them so many things

ETA: This site
has lots of good info!