Setting a coupon code for one product in an order

Hello!

I want to enable my customers to select one free product from a collection.

Even though I’ve restricted the coupon code to be used only once, a customer can still add two products to the cart and then apply the coupon code to the entire order. How can this issue be resolved?

Each customer should be able to choose one product from a collection of four, and this selected product should be free, without allowing the customer to apply the coupon code to more than one product.

Thank you for replying, the first solution seems great!

How can I set a cart rule to be met in order for a discount to be applied? Is it possible for example to set a rule that a coupon is only available for use if there is only one product in the cart?