Updating the return approved email notification for exchanges

If your store uses customized notification templates, then you might need to update your Return approved email notification manually to ensure that it works when you add exchange items to a return.

These changes require familiarity with the code that's used in Shopify's notification templates. If your templates are highly customized and you're not sure how to apply the necessary changes, then contact the developer that made the changes or click Revert to default to restore your template to its original state. When you revert to default, all your customizations are removed, but the default template ensures that you have the most current template version.

Update the Return approved email notification

You can update the Return approved notification to include the following changes:

  • For net payable exchanges, a customer can now receive a payment action (Pay now button) in their return email. This includes updates to the instructions portion of the email to reflect the outstanding balance a customer can owe and the instructions are moved to the top of the email.
  • A new section that displays exchange items under the heading of Items you’ll receive and renames the Returned items section to Items to return.
  • A financial summary is included as a part of the return email with the cost of the return and exchange items, and applicable return fees.

Steps:

  1. From your Shopify admin, go to Settings > Notifications.

  2. Click Customer notifications.

  3. In the Returns section, click Return request approved.

  4. Click Edit code.

  5. Update the subtitle to include logic for shipping and the order's balance:

    1. Locate the first {% if has_label_attached %} code line.
    2. Replace the existing code block with the following code block:
  {% if has_label_attached %}
    Print your return shipping label and attach it to the package containing your return items.
  {% else %}
    {% if return_delivery_first.type == 'shopify_label' and return.order_total_outstanding > 0 %}
      Your return was approved and a balance is due. Pay the outstanding balance, and once you receive your return shipping label, follow the instructions to complete your return.
    {% else %}
      We will send you additional information to complete the return.
    {% endif %}
  {% endif %}
  1. Update the Return Shipping instructions:
    1. Locate the <p class="return-approved__body">...</p> code line.
    2. Add the following code block after the code line:
{% if has_label_attached or has_tracking_number %}
<table class="row section">
  <tr>
    <td class="section__cell">
      <center>
        <table class="container">
          <tr>
            <td>
              <h3>Instructions</h3>
            </td>
          </tr>
        </table>
        <table class="container">
          <tr>
            <td>
              <ol class="return-approved__instructions">
                <li class="return-approved__instruction-step">Pack the items you're returning.</li>
                {% if return.checkout_payment_collection_url %}
                  <li class="return-approved__instruction-step">Pay the outstanding balance.</li>
                {% endif %}
                <li class="return-approved__instruction-step">Print your return label and attach it to the package. Cover or remove any old shipping labels.</li>
                <li class="return-approved__instruction-step">
                  {% if return_delivery_first.carrier_name %}
                    Give the package to {{ return_delivery_first.carrier_name }}.
                  {% else %}
                    Give the package to the carrier identified on the label.
                  {% endif %}
                </li>
                {% if has_tracking_number %}
                  <li class="return-approved__instruction-step">Track your return to make sure we get it.</li>
                {% endif %}
              </ol>
              {% if has_tracking_number %}
                <p class="return-approved__tracking-number">
                  {% if return_delivery_first.carrier_name %}
                      {{ return_delivery_first.carrier_name }} tracking number: <a target="_blank" href="{{ return_delivery_first.tracking_url) }}">{{ return_delivery_first.tracking_number) }}</a>
                  {% else %}
                      Tracking number: <a target="_blank" href="{{ return_delivery_first.tracking_url) }}">{{ return_delivery_first.tracking_number) }}</a>
                  {% endif %}
                </p>
              {% endif %}
            </td>
          </tr>
        </table>
      </center>
    </td>
  </tr>
</table>
{% endif %}
  1. Update the call-to-action to include the Pay now logic:
    1. Locate the <table class="row actions">...</table> code line.
    2. Replace the existing code block with the following code block:
{% if has_label_attached %}
  {% capture url_primary %}{{ public_file_url }}{% endcapture %}
  {% capture text_primary %}Print return label{% endcapture %}
  {% capture url_secondary %}{{ return.checkout_payment_collection_url }}{% endcapture %}
  {% capture text_secondary %}Pay now{% endcapture %}

  <table class="row actions">
    <tr>
      <td class="empty-line">&nbsp;</td>
    </tr>
    <tr>
      <td class="actions__cell">
        {% if url_primary != blank or url_secondary != blank %}
          {% if url_primary != blank %}
        <table class="button main-action-cell">
          <tr>
            <td class="button__cell">
              <a href="{{ url_primary }}" class="button__text">{{ text_primary }}</a>
            </td>
          </tr>
        </table>
          {% endif %}
          {% if url_secondary != blank %}
        <table class="button return__mobile-padding main-action-cell">
          <tr>
            <td class="button__cell">
              <a href="{{ url_secondary }}" class="button__text return__main-button">{{ text_secondary }}</a>
            </td>
          </tr>
        </table>
          {% endif %}
        <table class="link secondary-action-cell">
          <tr>
            <td class="link__cell">or <a target="_blank" href="{{ order.order_status_url }}">View your order</a></td>
          </tr>
        </table>
        {% else %}
        <table class="button main-action-cell">
          <tr>
            <td class="button__cell">
              <a href="{{ order.order_status_url }}" class="button__text">View your order</a>
            </td>
          </tr>
        </table>
        {% endif %}
      </td>
    </tr>
  </table>

{% else %}
  {% capture url_primary %}{{ return.checkout_payment_collection_url }}{% endcapture %}
  {% capture text_primary %}Pay now{% endcapture %}
  {% capture url_secondary %}{% endcapture %}
  {% capture text_secondary %}{% endcapture %}

  <table class="row actions">
    <tr>
      <td class="empty-line">&nbsp;</td>
    </tr>
    <tr>
      <td class="actions__cell">
        {% if url_primary != blank or url_secondary != blank %}
          {% if url_primary != blank %}
        <table class="button main-action-cell">
          <tr>
            <td class="button__cell">
              <a href="{{ url_primary }}" class="button__text">{{ text_primary }}</a>
            </td>
          </tr>
        </table>
          {% endif %}
          {% if url_secondary != blank %}
        <table class="button return__mobile-padding main-action-cell">
          <tr>
            <td class="button__cell">
              <a href="{{ url_secondary }}" class="button__text return__main-button">{{ text_secondary }}</a>
            </td>
          </tr>
        </table>
          {% endif %}
        <table class="link secondary-action-cell">
          <tr>
            <td class="link__cell">or <a target="_blank" href="{{ order.order_status_url }}">View your order</a></td>
          </tr>
        </table>
        {% else %}
        <table class="button main-action-cell">
          <tr>
            <td class="button__cell">
              <a href="{{ order.order_status_url }}" class="button__text">View your order</a>
            </td>
          </tr>
        </table>
        {% endif %}
      </td>
    </tr>
  </table>

{% endif %}
  1. Remove old instructions at the bottom of the notification:
    1. Locate <h3>Instructions</h3> code line.
    2. Locate and remove the whole code block of <table class="row section">...</table>.
  2. Add exchange line items and update return items title:
    1. Locate the <h3>Return summary</h3> tag.
    2. Replace the outer table matching <table class="row section"> with the following block:
{%- if return.line_items.size > 0 -%}
<table class="row section">
  <tr>
    <td class="section__cell">
      <center>
        <table class="container">
          <tr>
            <td>
              <h3>Items to return</h3>
            </td>
          </tr>
        </table>
        <table class="container">
          <tr>
            <td>

<table class="row">
  {% for line_item in return.line_items %}
  <tr class="order-list__item">
    <td class="order-list__item__cell">
      <table>
        <td>
          {% if line_item.image %}
            <img src="{{ line_item | img_url: 'compact_cropped' }}" align="left" width="60" height="60" class="order-list__product-image"/>
          {% endif %}
        </td>
        <td class="order-list__product-description-cell">
          {% assign line_display = line_item.quantity  %}

          <span class="order-list__item-title">{{ line_item.title_without_variant }}&nbsp;&times;&nbsp;{{ line_display }}</span><br/>

          {% if line_item.variant.title != 'Default Title' %}
            <span class="order-list__item-variant">{{ line_item.variant.title }}</span><br/>
          {% endif %}

          {% if line_item.discount_allocations %}
            {% for discount_allocation in line_item.discount_allocations %}
              {% if discount_allocation.amount > 0 %}
              <p>
                <span class="order-list__item-discount-allocation">
                  <img src="{{ 'notifications/discounttag.png' | shopify_asset_url }}" width="18" height="18" class="discount-tag-icon" />
                  <span>
                    {{ discount_allocation.discount_application.title | upcase }}
                    (-{{ discount_allocation.amount | money }})
                  </span>
                </span>
              </p>
              {% endif %}
            {% endfor %}
          {% endif %}
        </td>

        <td class="order-list__price-cell">
          {% if line_item.original_line_price != line_item.final_line_price %}
            <del class="order-list__item-original-price">{{ line_item.original_line_price | money }}</del>
          {% endif %}
          <p class="order-list__item-price">
            {% if line_item.final_line_price > 0 %}
              {% capture final_line_price %}
                  {{ line_item.final_line_price | money }}
              {% endcapture %}
              {{ final_line_price }}
            {% else %}
              Free
            {% endif %}
          </p>
        </td>
      </table>
    </td>
  </tr>
  {% endfor %}
</table>


            </td>
          </tr>
        </table>
      </center>
    </td>
  </tr>
</table>
        {%- endif -%}

        {%- if return.exchange_line_items.size > 0 -%}
          <table class="row section">
  <tr>
    <td class="section__cell">
      <center>
        <table class="container">
          <tr>
            <td>
              <h3>Items you'll receive</h3>
            </td>
          </tr>
        </table>
        <table class="container">
          <tr>
            <td>


<table class="row">
  {% for line_item in return.exchange_line_items %}
  <tr class="order-list__item">
    <td class="order-list__item__cell">
      <table>
        <td>
          {% if line_item.image %}
            <img src="{{ line_item | img_url: 'compact_cropped' }}" align="left" width="60" height="60" class="order-list__product-image"/>
          {% endif %}
        </td>
        <td class="order-list__product-description-cell">
          {% assign line_display = line_item.quantity  %}

          <span class="order-list__item-title">{{ line_item.title_without_variant }}&nbsp;&times;&nbsp;{{ line_display }}</span><br/>

          {% if line_item.variant.title != 'Default Title' %}
            <span class="order-list__item-variant">{{ line_item.variant.title }}</span><br/>
          {% endif %}

          {% if line_item.discount_allocations %}
            {% for discount_allocation in line_item.discount_allocations %}
              {% if discount_allocation.amount > 0 %}
              <p>
                <span class="order-list__item-discount-allocation">
                  <img src="{{ 'notifications/discounttag.png' | shopify_asset_url }}" width="18" height="18" class="discount-tag-icon" />
                  <span>
                    {{ discount_allocation.discount_application.title | upcase }}
                    (-{{ discount_allocation.amount | money }})
                  </span>
                </span>
              </p>
              {% endif %}
            {% endfor %}
          {% endif %}
        </td>

        <td class="order-list__price-cell">
          {% if line_item.original_line_price != line_item.final_line_price %}
            <del class="order-list__item-original-price">{{ line_item.original_line_price | money }}</del>
          {% endif %}
          <p class="order-list__item-price">
            {% if line_item.final_line_price > 0 %}
              {% capture final_line_price %}
                  {{ line_item.final_line_price | money }}
              {% endcapture %}
              {{ final_line_price }}
            {% else %}
              Free
            {% endif %}
          </p>
        </td>
      </table>
    </td>
  </tr>
  {% endfor %}
</table>


            </td>
          </tr>
        </table>
      </center>
    </td>
  </tr>
</table>
{%- endif -%}
  1. Introduce financials and return fees. Add the following block after the changes from the previous step or add the block before the <table class="row footer"> code line:
<table class="row">
  {% for line_item in return.exchange_line_items %}
  <tr class="order-list__item">
    <td class="order-list__item__cell">
      <table>
        <td>
          {% if line_item.image %}
            <img src="{{ line_item | img_url: 'compact_cropped' }}" align="left" width="60" height="60" class="order-list__product-image"/>
          {% endif %}
        </td>
        <td class="order-list__product-description-cell">
          {% assign line_display = line_item.quantity  %}

          <span class="order-list__item-title">{{ line_item.title_without_variant }}&nbsp;&times;&nbsp;{{ line_display }}</span><br/>

          {% if line_item.variant.title != 'Default Title' %}
            <span class="order-list__item-variant">{{ line_item.variant.title }}</span><br/>
          {% endif %}

          {% if line_item.discount_allocations %}
            {% for discount_allocation in line_item.discount_allocations %}
              {% if discount_allocation.amount > 0 %}
              <p>
                <span class="order-list__item-discount-allocation">
                  <img src="{{ 'notifications/discounttag.png' | shopify_asset_url }}" width="18" height="18" class="discount-tag-icon" />
                  <span>
                    {{ discount_allocation.discount_application.title | upcase }}
                    (-{{ discount_allocation.amount | money }})
                  </span>
                </span>
              </p>
              {% endif %}
            {% endfor %}
          {% endif %}
        </td>

        <td class="order-list__price-cell">
          {% if line_item.original_line_price != line_item.final_line_price %}
            <del class="order-list__item-original-price">{{ line_item.original_line_price | money }}</del>
          {% endif %}
          <p class="order-list__item-price">
            {% if line_item.final_line_price > 0 %}
              {% capture final_line_price %}
                  {{ line_item.final_line_price | money }}
              {% endcapture %}
              {{ final_line_price }}
            {% else %}
              Free
            {% endif %}
          </p>
        </td>
      </table>
    </td>
  </tr>
  {% endfor %}
</table>


            </td>
          </tr>
        </table>
      </center>
    </td>
  </tr>
</table>
        {%- endif -%}

        <table class="row content">
  <tr>
    <td class="content__cell">
      <center>
        <table class="container">
          <tr>
            <td>

          <table class="row subtotal-lines">
  <tr>
    <td class="subtotal-spacer"></td>
    <td>
      <table class="row subtotal-table">

        {% capture line_items_subtotal_price %}
          {% if return.line_items_subtotal_price < 0 %}
            -{{ return.line_items_subtotal_price  | abs | money }}
          {% else %}
            {{ return.line_items_subtotal_price | money }}
          {% endif %}
        {% endcapture %}


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


        {% assign fees = return.fees %}
        {% for fee in fees %}

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

{% endfor %}


        {% if return.total_tax_price %}
          {% capture total_tax_price %}
            {% if return.total_tax_price < 0 %}
              -{{ return.total_tax_price | abs | money }}
            {% else %}
              {{ return.total_tax_price | money }}
            {% endif %}
          {% endcapture %}

<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>Estimated taxes</span>
    </p>
  </td>
  <td class="subtotal-line__value">
      <strong>{{ total_tax_price }}</strong>
  </td>
</tr>

        {% endif %}

        {% if return.total_price > 0 %}
        <table class="row subtotal-table subtotal-table--total">

<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>Amount to pay</span>
    </p>
  </td>
  <td class="subtotal-line__value">
      <strong>{{ return.total_price | money_with_currency }}</strong>
  </td>
</tr>

        </table>
        {% elsif return.total_price <= 0 %}
        <table class="row subtotal-table subtotal-table--total">

<tr class="subtotal-line">
  <td class="subtotal-line__title">
    <p>
      <span>Estimated refund</span>
    </p>
  </td>
  <td class="subtotal-line__value">
      <strong>{{ return.total_price | abs | money_with_currency }}</strong>
  </td>
</tr>

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


            </td>
          </tr>
        </table>
      </center>
    </td>
  </tr>
</table>
  1. Click Save.
Can’t find the answers you’re looking for? We’re here to help.