Shipping costs should already be collected from your customer on the Shopify end because there are 2 transactions - one that you collect from your customer and the second one when you pay Printful. You should collect enough for shipping to be able to cover the real shipping costs that we've indicated on our products page under tab “Shipping” for each product category such as in here for t-shirts.
Of course you can choose to offer lower shipping costs to your customer, but that will take a chunk from your profit. Mega online retailers are able to offer low shipping prices because they're so big, and as a result consumers have gotten used to it. Most online retailers take a hit to their profit to offer lower shipping rates, just to make customers happy.