If your bread is not already stale, spread the cubes on a baking sheet and toast them at 300°F for about 15 minutes. I do this step a day ahead whenever I can, since slightly dried bread soaks up the broth without turning into mush. Fresh, soft bread is the number one reason stuffing comes out soggy, so don't skip this part.
In a large skillet, melt the butter over medium heat, then add the onion and celery. I let them cook for about 8 minutes, stirring occasionally, until they turn soft and slightly golden. Add the garlic during the last minute so it doesn't burn, then stir in the sage, thyme, and rosemary to toast the herbs briefly.
Place your dried bread cubes in a very large mixing bowl, then pour the buttery vegetable mixture over the top. In a separate bowl, whisk the broth with the beaten eggs, then pour that over the bread as well. I gently toss everything together until every cube is moistened but not falling apart.
Lightly grease your crockpot insert, then spoon the stuffing mixture in and spread it out evenly. I like to press it down just slightly so it cooks evenly, but I don't pack it too tight since the stuffing needs room to steam properly.
Cover and cook on low for about 4 hours, or until the top looks set and the edges turn golden. I usually lift the lid once around the 3-hour mark, wipe off the condensation, and give everything a gentle stir so it cooks evenly throughout.
Once the cooking time is up, I let the stuffing sit for about 5 minutes with the lid off before serving. This little rest helps it firm up just enough to hold its shape on the plate while still staying soft and moist inside.