BVHaving trouble following your last direction. Will I be pasting the coupon codes in twice in the same discount area?
Yes, you'll be creating two discounts using the same list of codes: one for the coupon offer, and one to override free shipping if the buyer's cart total is over $30 and they've applied a coupon code.
And is there a limit to how many codes can be pasted in? (edit: I just read that there's a 5,000 limit. What can we do if we need more than that? We're having a large promotion, and we need 2,500 codes for each geographic area. Initially I need 5,000 codes, but after that each area won't be run at the same time -- approx every month a new geographic area will get the promotion and I'll need to add in another 2,500 codes.)
Hm, that could pose a logistical problem, since you can have only 5000 discounts configured at once, they don't self-delete from Admin once they've been used, and there's no way for you to mass-delete all your discounts from Admin to start over from a clean slate every so often.
Have you considered just offering a single, common coupon code to everyone on your marketing list, rather than issuing each person their own, unique, single-use code? I do a LOT of online shopping, and that's the way almost every online coupon-code mass promotion I've ever personally taken up has been done. In fact, I can't even recall ever using anything that seemed like a personally-unique code. Some buyers might use it more than once or share it with others, but business is business regardless of who's buying, and it sounds like you may be making these time-limited anyway (?), in which case even a coupon that gets out in the wild would only be good for so long anyway before you'd delete it or its expiration date passes.
So in the scenario you've outlined, someone NOT using a code, should not see any difference in their shipping, correct?
Correct, you're granting 100% discount off shipping automatically for orders over $30 by default, but entering a coupon code with a different shipping discount such as 0% should override that.