Commerce 2: Custom product fields not showing up in order I've created a dropdown field for my users to select from on each of my products, but if the user was to select an option from the dropdown and click 'add to cart' , it doesn't show up in their order once it's all gone through. 

What I currently have on my products page is:

&lt;form method="POST" name="main"&gt;
    &lt;input type="hidden" name="action" value="commerce/cart/update-cart"&gt;
    &lt;input type="hidden" name="paymentCurrency" value="{{ currency }}"&gt;

    {{ redirectInput('cart') }}
    &lt;input type="hidden" name="qty" value="1"&gt;
    {{ csrfInput() }}

    {% set max = product.max %} 
    {% set i = 0 %}

    &lt;select name="options[max]"&gt;
        {% for i in 1..max %}
            &lt;option value="{{ i }}"&gt;{{ i }}&lt;/option&gt;
        {% endfor %} 
    &lt;/select&gt;

    {%- for purchasable in product.getVariants() -%}
        {% if purchasable.isAvailable %}
            &lt;input type="hidden" name="purchasables[0][id]" value="{{ purchasable.id }}" /&gt;
            &lt;input type="hidden" name="purchasables[0][qty]" value="1" /&gt;
        {% endif %}
    {%- endfor -%}

    {%- for purchasable in product.getVariants() -%}
        {{ purchasable|currencySalePrice('' ~ currency ~ '') }}
    {%- endfor -%}

    &lt;input type="submit" value="{{ "Add to cart"|t }}" class="button"/&gt;
&lt;/form&gt;


Any reason why 'add to cart' wouldn't update this info and show it in the customers order?
First you need to figure out which one you are using. 

LineItem Options:
Here is the doc for it. 
https://docs.craftcms.com/commerce/v2/adding-to-and-updating-the-cart.html#line-item-options-and-notes

One thing worth to mention is that options store in lineItem, which is one set of options for each purchasable/variant. So in your form you should put the options in your for loop of the product.getVariants().
And have the loop index in front just like the purchasable. e.g. 

&lt;select name="options[0][max]"&gt;
        {% for i in 1..max %}
            &lt;option value="{{ i }}"&gt;{{ i }}&lt;/option&gt;
        {% endfor %} 
&lt;/select&gt;


Same with your "qty" it needs to have loop index in front as well.
See the documentation link for example: 
https://docs.craftcms.com/commerce/v2/adding-to-and-updating-the-cart.html#adding-multiple-purchasables-to-the-cart

Order Field:
Didn't find documentation for it in craft CMS commerce 2 docs.
Order field stores with order object. One order has one value for a unique field handle. 
You can use &lt;input type="your-choice" name="fields[customFieldHandle]"/&gt; in "commerce/cart/update-cart" action.
You can retrieve it by calling order.customFieldHandle.

Before you use one custom field in the twig template you need to go your control panel and create a custom field first. "http://your-site.com/admin/commerce/settings/ordersettings". Find the "order fields" (name maybe different due to the version of craft, I don't think P&amp;T have ever changed it since beginning.) tab, and create a field just like you would create a field for entry.

Try this form:

&lt;form method="POST" name="main"&gt;
    &lt;input type="hidden" name="action" value="commerce/cart/update-cart"&gt;
    &lt;input type="hidden" name="paymentCurrency" value="{{ currency }}"&gt;

    {{ redirectInput('cart') }}
    {{ csrfInput() }}

    {% set max = product.max %}

    {%- for purchasable in product.getVariants() -%}
        {% if purchasable.isAvailable %}
            &lt;input type="hidden" name="purchasables[{{loop.index}}][id]" value="{{ purchasable.id }}" /&gt;
            &lt;select name="options[{{loop.index}}][max]"&gt;
             {% for i in 1..max %}
                &lt;option value="{{ i }}"&gt;{{ i }}&lt;/option&gt;
             {% endfor %} 
            &lt;/select&gt;
            &lt;input type="hidden" name="purchasables[{{loop.index}}][qty]" value="1"/&gt;
        {% endif %}
    {%- endfor -%}

    {%- for purchasable in product.getVariants() -%}
        {{ purchasable|currencySalePrice('' ~ currency ~ '') }}
    {%- endfor -%}

    &lt;input type="submit" value="{{ "Add to cart"|t }}" class="button"/&gt;
&lt;/form&gt;



If you want customer to choose one options and apply for all the purchasables.

Just put a hidden input in the for loop and then use JavaScript function to update options in the loop on change.