How can I let a user select my Drupal Commerce product to either be shipped or downloaded?
Required steps

Step 1

Create a taxonomy, let's say it's called "Delivery methods", with terms "Shipable" and "Download".

Step 2

For each product type, add a field like "Delivery method", which is a field "term reference" (and refer to the "Delivery methods" taxonomy).

Attentionn: make sure to check the option "attribute field settings" (enables this field to function as an attribute field on the add-to-cart-form).

Step 3

Use store / products / add product to add individual products, with a specific SKU, and for which you pick the right values for the Delivery methods taxonomy.

Video tutorials

For a more detailed video tutorial of the steps described above, refer to Drupal Commerce - Pruduct Attributes (16:13).

Before doing so, you may want to first view these related videos:


Drupal Commerce - Pruduct Types (9:11).
Drupal Commerce - Pruduct Displays (11:36).


By only reviewing/studying these 3 videos (total time = about 37 mins), you'll have a very good foundation to get started with the fundamentals of Drupal Commerce.

Commerce Backoffice

Managing products (and orders) can be confusing. However, the Commerce Backoffice module helps with that. For more details about that module, refer to my answer to the question about
Correct way for Attributes in Commerce.