I sell two types of product, merchandise which ranges in size from small keyrings through mugs and onto hoodies. I also sell event tickets.
I want to have a 'per order' shipping rate for tickets, but a 'per item' based on weight rate for merchandise. Is this possible?
Not with the default shipping methods provided. However there are several plugins that will do this.
Web Shop Apps are the company I ususually use for things like this (they have various shipping products such as "Product Matrix, Premium Matrix) - there are plenty of others out there too.
You can also use this extension https://amasty.com/shipping-table-rates.html
You can create 2 shipping types and assign products to them, the shipping rates will be calculated according to your needs.