How do I include product-specific copy in the order confirmation email?

Topic summary

A user encountered an issue where product-specific text stopped displaying in Shopify order confirmation emails. The problematic code used {% if line.title %} conditions to show custom instructions for different products in the email template.

Resolution:
The user resolved the issue independently by switching from title-based conditions to product tags. Instead of checking {% if line.title == 'XXX' %}, they implemented {% if tag == 'XXX' %} to trigger product-specific copy.

Technical Context:
The original code included custom HTML email templates with Liquid syntax for dynamic content. The line.title approach may have been deprecated or the title attribute changed, making tag-based filtering a more reliable solution for conditional content in order notifications.

Summarized with AI on November 13. AI used: claude-sonnet-4-5-20250929.

The code below used to work to display product-specific text in the order confirmation email but it recently stopped working.

The text in the if line.title sections doesn’t appear. The rest of the email does appear.

Can someone tell me what I need to change please?

{% capture email_title %}Hi {{ customer.first_name }}. Thank you for your purchase. Below there are instructions for what to do next. {% endcapture %}

<!DOCTYPE html>
<html lang="en">
  <head>
  <title>{{ email_title }}</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width">
  <link rel="stylesheet" type="text/css" href="/assets/notifications/styles.css">
  <style>
    .button__cell { background: {{ shop.email_accent_color }}; }
    a, a:hover, a:active, a:visited { color: {{ shop.email_accent_color }}; }
  </style>
</head>

  <body>
    <table class="body">
      <tr>
        <td>
          
<table class="header row">
  <tr>
    <td class="header__cell">
      <center>

        <table class="container">
          <tr>
            <td>

              <table class="row">
                <tr>
                  <td class="shop-name__cell">
                    {% if shop.email_logo_url %}
                      <img src="{{shop.email_logo_url}}" alt="{{ shop.name }}" width="{{ shop.email_logo_width }}">
                    {% else %}
                      <h1 class="shop-name__text">
                        <a href="{{shop.url}}">{{ shop.name }}</a>
                      </h1>
                    {% endif %}
                  </td>

                    <td class="order-number__cell">
                      <span class="order-number__text">
                        Order {{ order_name }}
                      </span>
                    </td>
                </tr>
              </table>

            </td>
          </tr>
        </table>

      </center>
    </td>
  </tr>
</table>

          <table class="row content">
  <tr>
    <td class="content__cell">
      <center>
        <table class="container">
          <tr>
            <td>
              
            <h2>{{ email_title }}</h2>
            <p>{{ email_body }}</p>
            {% if order_status_url %}
              <table class="row actions">
  <tr>
    <td class="actions__cell">
      <table class="button main-action-cell">
        <tr>

        </tr>
      </table>
      {% if shop.url %}
    <table class="link secondary-action-cell">
      <tr>
        <td class="link__cell"><a href="{{ shop.url }}" class="link__text"><span class='or'>or</span> Visit our store</a></td>
      </tr>
    </table>
{% endif %}

    </td>
  </tr>
</table>

            {% else %}
              {% if shop.url %}
    <table class="row actions">
      <tr>
        <td class="actions__cell">
          <table class="button main-action-cell">
            <tr>
              <td class="button__cell"><a href="{{ shop.url }}" class="button__text">Visit our store</a></td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
{% endif %}

            {% endif %}

            </td>
          </tr>
        </table>
      </center>
    </td>
  </tr>
</table>

          <table class="row section">
  <tr>
    <td class="section__cell">
      <center>
        <table class="container">
          <tr>
            <td>
              <!--<h3>Order summary</h3>-->
            </td>
          </tr>
        </table>
        <table class="container">
          <tr>
            <td>
              
            
{% if line.title == 'Arabic Reading Course - Full Course' %}
<p>You can now access the full course using this link - http://arabicreadingcourse.com</p>
<p> </p>
<p>You'll need to use this link every time you use the course, so it's a good idea to bookmark it.</p>
<p> </p>
{% endif %}

{% if line.title == 'Arabic Pronunciation Course' %}
<p>You can now access the full course using this link - http://arabicreadingcourse.com</p>
<p> </p>
<p>You'll need to use this link every time you use the course, so it's a good idea to bookmark it.</p>
<p> </p>
{% endif %}

  {% if item_count == 1 %}
    {% assign columnWrapperClass = 'order-list__item--single' %}
  {% elsif forloop.first == true %}
    {% assign columnWrapperClass = 'order-list__item--first' %}
  {% elsif forloop.last == true %}
    {% assign columnWrapperClass = 'order-list__item--last' %}
  {% else %}
    {% assign columnWrapperClass = '' %}
  {% endif %}
  <tr class="order-list__item {{columnWrapperClass}}">
    <td class="order-list__item__cell">
      <table>
        <td>
          {% if line.image %}
            <img src="{{ line | img_url: 'compact_cropped' }}" align="left" width="60" height="60" class="order-list__product-image"/>
          {% endif %}
        </td>
        <td class="order-list__product-description-cell">
          {% if line.product.title %}
            {% assign line_title = line.product.title %}
          {% else %}
            {% assign line_title = line.title %}
          {% endif %}
          <span class="order-list__item-title">{{ line_title }} × {{ line.quantity }}</span><br/>
          {% if line.variant.title != 'Default Title' %}
            <span class="order-list__item-variant">{{ line.variant.title }}</span>
          {% endif %}
        </td>
          <td class="order-list__price-cell">
            {% if line.original_line_price != line.line_price %}
              <del class="order-list__item-original-price">{{ line.original_line_price | money }}</del>
            {% endif %}
            <p class="order-list__item-price">{{ line.line_price | money }}</p>
          </td>
      </table>
    </td>
  </tr>
</table>

            <table class="row subtotal-lines">
  <tr>
    <td class="subtotal-spacer"></td>
    <td>
      <table class="row subtotal-table">
        {% if discounts %}
          {% capture discount_title %}Discount {% if discounts.first.code %}({{ discounts.first.code }}){% endif %}{% endcapture %}
          
<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>{{ discount_title }}</span>
    </p>
  </td>
  <td class="subtotal-line__value">
    <strong>{{ discounts_savings | money }}</strong>
  </td>
</tr>

        {% endif %}

        
<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>Subtotal</span>
    </p>
  </td>
  <td class="subtotal-line__value">
    <strong>{{ subtotal_price | money }}</strong>
  </td>
</tr>

        
<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>Shipping</span>
    </p>
  </td>
  <td class="subtotal-line__value">
    <strong>{{ shipping_price | money }}</strong>
  </td>
</tr>

        {% for line in tax_lines %}
          
<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>{{ line.title }}</span>
    </p>
  </td>
  <td class="subtotal-line__value">
    <strong>{{ line.price | money }}</strong>
  </td>
</tr>

        {% endfor %}
      </table>
      <table class="row subtotal-table subtotal-table--total">
        
<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>Total</span>
    </p>
  </td>
  <td class="subtotal-line__value">
    <strong>{{ total_price | money_with_currency }}</strong>
  </td>
</tr>

      </table>

      {% assign transaction_size = 0 %}
      {% for transaction in transactions %}
        {% unless transaction.kind == "capture" or transaction.kind == "void" %}
          {% assign transaction_size = transaction_size | plus: 1 %}
        {% endunless %}
      {% endfor %}

      {% if transaction_size > 1 %}
        <table class="row subtotal-table">
          <tr><td colspan="2" class="subtotal-table__line"></td></tr>
          <tr><td colspan="2" class="subtotal-table__small-space"></td></tr>

          {% for transaction in transactions %}
            {% if (transaction.status == "success") and (transaction.kind == "authorization" or transaction.kind == "sale") %}
              {% if transaction.payment_details.credit_card_company %}
                {% capture transaction_name %}{{ transaction.payment_details.credit_card_company }} (ending in {{ transaction.payment_details.credit_card_last_four_digits }}){% endcapture %}
              {% else %}
                {% capture transaction_name %}{{ transaction.gateway | replace: "_", " " | capitalize }}{% endcapture %}
              {% endif %}

              
<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>{{transaction_name}}</span>
    </p>
  </td>
  <td class="subtotal-line__value">
    <strong>{{ transaction.amount | money }}</strong>
  </td>
</tr>

            {% endif %}
            {% if transaction.kind == 'refund' %}
              {% if transaction.payment_details.credit_card_company %}
                {% assign refund_method_title = transaction.payment_details.credit_card_company %}
              {% else %}
                {% assign refund_method_title = transaction.gateway %}
              {% endif %}

              
<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>Refund</span>
        <br>
        <small>{{ refund_method_title | capitalize }}</small>
    </p>
  </td>
  <td class="subtotal-line__value">
    <strong>- {{ transaction.amount | money }}</strong>
  </td>
</tr>

            {% endif %}
          {% endfor %}
        </table>
      {% endif %}
    </td>
  </tr>
</table>

            </td>
          </tr>
        </table>
      </center>
    </td>
  </tr>
</table>

          <table class="row section">
  <tr>
    <td class="section__cell">
      <center>
        <table class="container">
          <tr>

          </tr>
        </table>
        <table class="container">
          <tr>

              
              </tr>
            </table>
            <table class="row">
              <tr>
                
              </tr>
            </table>

            </td>
          </tr>
        </table>
      </center>
    </td>
  </tr>
</table>

          <table class="row footer">
  <tr>
    <td class="footer__cell">
      <center>
        <table class="container">
          <tr>
            <td>
              <p class="disclaimer__subtext">If you have any questions, reply to this email or contact us at <a href="mailto:{{ shop.email }}">{{ shop.email }}</a></p>
            </td>
          </tr>
        </table>
      </center>
    </td>
  </tr>
</table>

<img src="{{ 'notifications/spacer.png' | shopify_asset_url }}" class="spacer" height="1" />

        </td>
      </tr>
    </table>
  </body>
</html>

I solved this myself by creating product tags and using {% if tag == ‘XXX’ %} instead of {% if line.title == ‘XXX’ %}

Maybe the line.title tag has been retired.

1 Like