This is a highly underappreciated concept and I see a lot of small businesses do themselves a lot of harm by not managing expectations properly. They want the sale so they promise the sun and the moon and end up being the reason they disappointed their own clients.
It’s much better to under-promise and overdeliver. If your customer is ready for the worst case scenario (“We can have that special order item here in about three weeks for you.”) then they’re okay when the worst case scenario happens. Even better, when it goes better more often than not, then you get to pleasantly surprise them (“Good news, that item actually came in already even though it’s only been a week!”). They’re either happy or even happier with you. If you told them the item would get there in a week and they don’t get it for three weeks, they’re not going to come back and you will have earned a negative review (and genuinely so, it was your fault after all).
This goes for employees too. If you run an ad for $15-20 per hour and then try to hire them for $13-15, they’re going to pass (and you wasted your time and theirs). But if you promise $18-20 and offer $21 to the outstanding candidate, you’re all but guaranteed they’ll accept. The same applies to their raises, duties, ability to move up (we’ve all heard about the opportunity to grow within the company and found out later there was no opportunity at all). There’s no point in lying to employees, they’ll figure it out sooner or later and when they do, they have no reason to keep getting their paycheck from you when there are other opportunities out there for them.
So be honest and when in doubt, under-promise and overdeliver.