Adding multiple line item properties to one product template

Topic summary

Issue: Adding multiple line item properties to a Shopify product template causes the product to not remove from the cart properly. With only one property, removal works as expected.

Context: The product page includes custom inputs for multiple line item properties via HTML/Liquid. Code snippets (central to understanding) show an “Options” radio group and two text fields: “First Name” and “Birthday Number,” each mapped to properties[…] names.

Suggestion offered: Avoid special characters (e.g., asterisks) in the property names. Keep warnings like “8 characters only” in the label text, while the property name remains clean (e.g., properties[First Name]). This aims to prevent potential conflicts and keep checkout labels tidy.

Update: The original poster removed asterisks from property names per advice but the cart removal issue persisted. They shared updated code reflecting this change.

Status: No confirmed fix or root cause identified. Another participant asked if a solution was found, indicating the thread remains open with the key question unresolved (why cart removal fails when multiple properties are present).

Summarized with AI on March 3. AI used: gpt-5.

I’m trying to add multiple line item properties to one product template and while they do show in the cart once added the product won’t remove from the cart properly. When there is just one line item property in the template I can remove the product properly but when there is more than one there is an issue. How do I fix this so I can have multiple line item properties? My website is https://wackytropics.com and the product I’m trying to fix is this stuffed tiger. The majority of the code for the section template is below ( the code I added is highlighted in red) Thanks in advance

{% comment %} Get first variant, or deep linked one {% endcomment %} {%- assign current_variant = product.selected_or_first_available_variant -%} {%- assign product_image_zoom_size = '1024x1024' -%} {%- assign product_image_scale = '2' -%} {%- assign enable_image_zoom = section.settings.enable_image_zoom -%} {%- assign compare_at_price = current_variant.compare_at_price -%} {%- assign price = current_variant.price -%}

{% case section.settings.media_size %}
{% when ‘small’ %}
{%- assign product_media_width = ‘medium-up–one-third’ -%}
{%- assign product_description_width = ‘medium-up–two-thirds’ -%}
{%- assign height = 345 -%}
{% when ‘medium’ %}
{%- assign product_media_width = ‘medium-up–one-half’ -%}
{%- assign product_description_width = ‘medium-up–one-half’ -%}
{%- assign height = 530 -%}
{% when ‘large’ %}
{%- assign product_media_width = ‘medium-up–two-thirds’ -%}
{%- assign product_description_width = ‘medium-up–one-third’ -%}
{%- assign height = 720 -%}
{% when ‘full’ %}
{%- assign product_media_width = ‘’ -%}
{%- assign product_description_width = ‘’ -%}
{%- assign height = 1090 -%}
{%- assign enable_image_zoom = false -%}
{% endcase %}

{%- assign featured_media = product.selected_or_first_available_variant.featured_media | default: product.featured_media -%}

{%- for media in product.media -%}
{% include ‘media’, media: media, featured_media: featured_media, height: height, enable_image_zoom: enable_image_zoom, image_zoom_size: product_image_zoom_size, image_scale: product_image_scale %}
{%- endfor -%}

{% capture product_image_size %}{{ height }}x{% endcapture %} {{ featured_media.alt }}

{% assign first_3d_model = product.media | where: “media_type”, “model” | first %}

{%- if first_3d_model -%}
<button
aria-label=“{{ ‘products.product.view_in_space_label’ | t }}”
class=“product-single__view-in-space”
data-shopify-xr
data-shopify-model3d-id=“{{ first_3d_model.id }}”
data-shopify-title=“{{ product.title | escape }}”
data-shopify-xr-hidden

{% include ‘icon-3d-badge-full-color’ %}{{ ‘products.product.view_in_space’ | t }}

{%- endif -%}

{% if product.media.size > 1 %}
{% if product.media.size > 4 %}
{%- assign enable_thumbnail_slides = true -%}
{% endif %}

{% if enable_thumbnail_slides == true %} {% include 'icon-chevron-left' %} {{ 'sections.slideshow.previous_slide' | t }} {% endif %} {% if enable_thumbnail_slides == true %} {% include 'icon-chevron-right' %} {{ 'sections.slideshow.next_slide' | t }} {% endif %}
{% endif %}

{{ product.title }}

{% comment %}Start automatically added Judge.me widget{% endcomment %} {% render 'judgeme_widgets', widget_type: 'judgeme_preview_badge', concierge_install: true, product: product %} {% comment %}End automatically added Judge.me widget{% endcomment %}
{% include 'product-price', variant: current_variant, show_vendor: section.settings.show_vendor %}

{%- if shop.taxes_included or shop.shipping_policy.body != blank -%}

{%- if shop.taxes_included -%} {{ 'products.product.include_taxes' | t }} {%- endif -%} {%- if shop.shipping_policy.body != blank -%} {{ 'products.product.shipping_policy_html' | t: link: shop.shipping_policy.url }} {%- endif -%}
{%- endif -%}

{% capture “form_classes” -%}
product-form product-form-{{ section.id }}
{%- if section.settings.enable_payment_button and product.has_only_default_variant %} product-form–payment-button-no-variants {%- endif -%}
{%- if current_variant.available == false %} product-form–variant-sold-out {%- endif -%}
{%- endcapture %}

{% form ‘product’, product, class:form_classes, data-product-form: ‘’ %}
{% unless product.has_only_default_variant %}

{% for option in product.options_with_values %}
{{ option.name }}
{% endfor %}
{% endunless %}

Options
Phrase Only
Name & Phrase
Name & Birthday Number

First Name *8 characters only*

Birthday Number *2 characters only*

{% if section.settings.show_quantity_selector %}

{{ 'products.product.quantity' | t }}
{% endif %}
{{ 'general.accessibility.error' | t }} {% include 'icon-error' %} {{ 'products.product.quantity_minimum_message' | t }}
{% unless current_variant.available %} {{ 'products.product.sold_out' | t }} {% else %} {{ 'products.product.add_to_cart' | t }} {% endunless %} {% include 'icon-spinner' %} {% if section.settings.enable_payment_button %} {{ form | payment_button }} {% endif %}
{% endform %}

{%- comment -%}
Live region for announcing updated price and availability to screen readers
{%- endcomment -%}

{%- comment -%}
Live region for announcing that the product form has been submitted and the
product is in the process being added to the cart
{%- endcomment -%}

{{ 'products.product.loader_label' | t }}

{{ product.description }}

{% if section.settings.show_share_buttons %}
{% include ‘social-sharing’, share_title: product.title, share_permalink: product.url, share_image: product.featured_media %}
{% endif %}

{% comment %}Start automatically added Judge.me widget{% endcomment %}
{% render ‘judgeme_widgets’, widget_type: ‘judgeme_review_widget’, concierge_install: true, product: product %}
{% comment %}End automatically added Judge.me widget{% endcomment %}

{% unless product == empty %}

{% endunless %}

{% schema %}

Show More

Maybe the asterisk in the property name is causing an issue?

Show More

You don’t need the property name itself to have the warning of 8 characters, as long as the label does. So I would go with:

Show More
Show More
Show More

For example. Same with the other property.

Show More

Will also be neater at checkout, as the label will just say “First Name”.

Show More

See if that helps.

Thank you for replying. Unfortunately I tried it on all of the properties I inputed and it still didn’t work. I don’t know if I did something incorrectly but the code I changed is down below.

Options
Phrase Only
Name & Phrase
Name & Birthday Number
First Name *8 characters only*
Birthday Number *2 characters only*

Hey @WackyT , did you find any solution to this?