There are a few KEY things to note when buying from the States:
1. UPS and FedEx charge brokerage. (for the cheaper options.) That is, they charge a fee for bringing things across the border. And they usually don't tell you when you accept the package, they'll send you a bill for $50 for a $200 item a month later.
2. USPS and Canada Post don't charge brokerage. When possible, always try to get your items shipped by USPS. (Or if they do charge it, it's only like $5 flat rate)
3. If you buy from a reputable online store, they usually will NOT declare an item as a gift for you. They will say it is merchandise, which almost always gets taxed/dutied.
4. Depending on the item you're buying, you might get just taxed (GST + PST) or dutied on top of that with an extra percentage.
5. There are limits for how much a gift can be valued before the government starts charging duties. For Canada, the limit is usually $60. I've gotten away with $200 though. For items brought into the USA, the limit is typically $200, but the US seems to be more lenient.
6. If you live close to the border, try finding a shipping depot that will accept packages. A lot of depots make money near the border by doing this. For example, near Vancouver we have Point Roberts (which is only about 40 minutes away from downtown and is actually disconnected from the USA mainland, and the only people that go there are people picking up an item from a shipping depot or to sail their boat.
7. When you're bringing something across the border, border guards are usually pretty strict on big ticket items. (Now this is technically illegal) but you can usually get around this in a few ways. Buy two items. The "real" item and a cheap item. And when you cross the border show them the real receipt for the cheap item and say it's what you came here to get, and a lot of times because you're being "honest" and actually declaring something, they'll just let you go on through.
So if you're buying something from the States:
1. Ship by USPS.
2. Declare it as a gift.
3. Declare it at as low a value as possible (but not being ridiculous, because if it's opened and checked then you could get busted.)