Even if you're not planning to charge for shipping, you still need to setup your shipping settings. There are two parts to setting up your shipping settings: shipping zones and shipping rates.
To edit your shipping settings:
Go to your Shopify admin > Settings > Shipping and Delivery.
At the top of the page, it will list your shipping rates, arranged by "profile". There will only be one profile by default, which will apply to all products in your store.
If you need different shipping rates, based on the product (for example, rates for large products, then rates for everything else), then you'll want to create a new profile via the link under "custom shipping rates".
The bulk of the settings you need to set will be under "Manage Rates", next to the shipping profile(s) you have.
You will want to have a minimum of two separate shipping zones: one for Domestic (set to the country you're based out of) and one for Rest of the World (set to all other countries you ship to). If you are only selling domestically, then you can get away with having just one zone (but this will mean customers from outside of your country will be unable to place an order).
You can definitely have more than two zones -- some merchants set up a separate zone for each country they ship to (especially if you're based out of Europe). If you need to add a zone, click the blue link for "Create Shipping Zone." You will need to name the zone: I recommend naming it the same as the country in the zone, or the region of countries you've chosen (ie. if the zone is for Canada, then name the zone Canada, or if the zone is for Canada + USA + Mexico, then name the zone North America).
For the rates, you have three options to work with: by weight, by price, or carrier-calculated. The most important thing you will need to keep in mind when setting shipping rates is that the rates you choose are inclusive. What I mean by this is that no matter what combination of products a customer chooses to purchase, there will be a shipping rate for them. If your rates are not inclusive, then a shipping rate may not show up for the customer, and if a rate doesn't show up, the customer won't be able to checkout and this could result in the loss of a sale.
'By weight' works well if all of your products have accurate weights already setup, otherwise, you will need to go through each of your products (and their respective variants) and add weights, which can take a lot of time.
'By price' is the most commonly used shipping setting, as all of your products will definitely have prices, and you can setup your shipping rates to scale as the value of the customer's order increases. You can also easily setup flat-rates via the by price feature. For example: $0-100 is $15 shipping, and $100+ is free shipping (which would cover all possible checkout scenarios). See below for an example of inclusive price-based shipping rates.
'Carrier-calculated' is the newest addition to the shipping settings, and is definitely the way to go if you're not drop-shipping, and have accurate product weights set. This feature can integrate with Canada Post, UPS, USPS, and/or FedEx to offer custom shipping rates to your customers, based on the total weight of the products in their order, as well as where the customer needs the products shipped to.
There are also options available for Local Delivery and Local Pickup, but I won't go into detail on those as they aren't necessary for online-only stores. For more details on those, please see the links below.
Further down the main "Shipping settings" page, you'll find settings for your "Packages" (you'll want to add all of your standard box sizes and weights here, for easy access when you're printing shipping labels. Note: you can only have one default -- I recommend choosing the box you use most frequently for this.
Lastly, there are the Packing Slips and Carrier Accounts settings. If you're familiar with liquid coding, then you can manually edit the coding for your packing slip template. There are services and apps available for purchasing pre-made templates for the packing slip, as well as Shopify Experts who can make you custom ones from scratch ... but I don't have a specific service to recommend for this, so I'll leave it to you to research and decide on -- if this is something you think you need. The default packing slip does the trick for most stores. For the Carrier Accounts settings, you only need to set these up if you have custom rates already negotiated with a given carrier. Click the "manage integrations" link, then click the "connect carrier account" button on the next page to load the activation wizard. There is an option on to add a fulfillment service -- but this is only needed if you're wanting to send automatic fulfillment request emails to third-party dropshippers (that you're using, not via Shopify apps). There's a "learn more" link next to the settings -- you'll want to click that if you're interested in this.
Pro tip: If you're using weight-based shipping rates - not Carrier Calculated Rates - and you notice that the shipping fees are not being assigned correctly during checkout (usually this means that it's charging customers the next tier up, ie. a more expensive rate than you have set for that amount) then check your package settings.
Make sure the default package's weight is set to 0 kg/lb, and that should solve the issue for you.
Need more help with this step? Check out Shopify's help docs for shipping settings by clicking here.