First of all - I don't think it's a good idea to have multiple promos on one item at all. This will make another point in the funnel where user will need to decide which promo is better. Usually, the promo says "Hey, it's a bargain. Come on, buy me now." and as such should be used as another decisive argument for impulsive decision. If user needs to think which promo is better, he may actually abandon the idea of buying a product, which would lead to lower conversion. And this decision may be quite hard to make, as, after all, these promos offer him similar level of 'bonus satisfaction', e.g.:
- you can get another product for half a price or get the first one with 20% discount. While the second is quite straightforward, the first one needs him to find a complimentary product, and during this process he may actually decide not to buy anything.
- same with bundles: "Ok, I may take it, I don't need it, but it's a nice offer... but wait, maybe discount is better... I don't know, I need to think about it."
And if user leaves the funnel, he may never come back again.
If you need to present multiple promos, though, follow these rules:
avoid offers that are not uniquely attractive for users (at least try to minimize their number) - when user will not see clear advantage of one above the other (it's ok to show multiple offers targeted at different user groups, where for a specific user one will always be more attractive than another). If promos fight each other, user will most probably drop the ordering process.
try to offer them at different levels of the funnel - put optional upsell in the basket, for example, display 20% off in the product card and treat free shipment as something that appears when user is close to some minimal value of the basket.
think about how a promo influences further user actions - does he need to look through the product list again? Do users buy them together usually? Try to avoid these promos that require much involvement from the user and (from the analytical point of view) are usually not completed.
try to personalize promos - based on user profile, behavior, purchase history - you should extract this data from analytics,
use urgency and scarcity rules to make users finish the ordering process.