1) create a recordset that will return the free items on the initial shop landing page. Then use the Get contents from recrodset behavior to populate the cart.
in the server behaviors panel, click the plus button, and select eCart -> add to Cart -> Get Contents From recordset.
use an if statement around the checkout button on the cart page so it will only show if the grand total is above a certain amount:
<?php if($eCart1->GrandTotal() > 20) { ?>
<checkout button>
<?php } else { ?>
Minimum of $20 required to checkout
<?php } ?>