maybe you could implement a different kind of coupon?
an automatic one, where there is actually a 'code'..
Here's my idea:
Each time a person buys a product, they receive a special, unique 'one-time' coupon code, and the discount depends on how much they paid. So if they pay a lot, they get a big discount for their next product that they buy. They can give the code to anybody they want, but once it's been used, then it's gone forever. If they buy something with a coupon, then they don't receive another coupon code
Or, maybe you could give them a coupon code only if they buy a certain product, or make the coupon code work only for a certain product
I think this would be a nice implementation, but it might be very hard :/
I would definitely use this though, as I don't mind giving people discounts