{"id":129,"date":"2026-03-31T09:01:58","date_gmt":"2026-03-31T09:01:58","guid":{"rendered":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/?page_id=129"},"modified":"2026-05-02T15:09:08","modified_gmt":"2026-05-02T15:09:08","slug":"documentation","status":"publish","type":"page","link":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/","title":{"rendered":"Documentation"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.0&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;39px&#8221; module_alignment=&#8221;center&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h1 style=\"text-align: center;\">Documentation<\/h1>\n<p>[\/et_pb_text][et_pb_video src=&#8221;https:\/\/youtu.be\/4Q_WXWzG0pc&#8221; _builder_version=&#8221;4.27.0&#8243; _module_preset=&#8221;default&#8221; max_width=&#8221;50%&#8221; module_alignment=&#8221;center&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;][\/et_pb_video][et_pb_code _builder_version=&#8221;4.27.0&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<div id=\"pps-kb-root\"><!-- [et_pb_line_break_holder] -->  <\/p>\n<style><!-- [et_pb_line_break_holder] -->    #pps-kb-root {<!-- [et_pb_line_break_holder] -->      --kb-bg: #ffffff;<!-- [et_pb_line_break_holder] -->      --kb-surface: #ffffff;<!-- [et_pb_line_break_holder] -->      --kb-border: #e1e3e5;<!-- [et_pb_line_break_holder] -->      --kb-text: #111111;<!-- [et_pb_line_break_holder] -->      --kb-muted: #6b7280;<!-- [et_pb_line_break_holder] -->      --kb-accent-2: #16a34a;<!-- [et_pb_line_break_holder] -->      --kb-brand: #10a57d;<!-- [et_pb_line_break_holder] -->      --kb-brand-strong: #0e8f6d;<!-- [et_pb_line_break_holder] -->      --kb-brand-soft: #e8f7f2;<!-- [et_pb_line_break_holder] -->      --kb-shadow: 0 10px 30px rgba(15,23,42,.08);<!-- [et_pb_line_break_holder] -->      --kb-radius: 14px;<!-- [et_pb_line_break_holder] -->      --kb-radius-sm: 10px;<!-- [et_pb_line_break_holder] -->      --kb-code-bg: #f3f4f6;<!-- [et_pb_line_break_holder] -->      box-sizing: border-box;<!-- [et_pb_line_break_holder] -->      font-family: inherit;<!-- [et_pb_line_break_holder] -->      color: var(--kb-text);<!-- [et_pb_line_break_holder] -->      line-height: 1.45;<!-- [et_pb_line_break_holder] -->      background: var(--kb-bg);<!-- [et_pb_line_break_holder] -->      border-radius: 16px;<!-- [et_pb_line_break_holder] -->      padding: 18px;<!-- [et_pb_line_break_holder] -->      overflow: hidden;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root *, #pps-kb-root *::before, #pps-kb-root *::after{ box-sizing: inherit; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root h1,<!-- [et_pb_line_break_holder] -->    #pps-kb-root h2,<!-- [et_pb_line_break_holder] -->    #pps-kb-root h3,<!-- [et_pb_line_break_holder] -->    #pps-kb-root h4,<!-- [et_pb_line_break_holder] -->    #pps-kb-root h5,<!-- [et_pb_line_break_holder] -->    #pps-kb-root h6,<!-- [et_pb_line_break_holder] -->    #pps-kb-root p,<!-- [et_pb_line_break_holder] -->    #pps-kb-root li,<!-- [et_pb_line_break_holder] -->    #pps-kb-root td,<!-- [et_pb_line_break_holder] -->    #pps-kb-root th,<!-- [et_pb_line_break_holder] -->    #pps-kb-root span,<!-- [et_pb_line_break_holder] -->    #pps-kb-root label,<!-- [et_pb_line_break_holder] -->    #pps-kb-root small,<!-- [et_pb_line_break_holder] -->    #pps-kb-root strong,<!-- [et_pb_line_break_holder] -->    #pps-kb-root b{<!-- [et_pb_line_break_holder] -->      color: var(--kb-text) !important;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root a{<!-- [et_pb_line_break_holder] -->      color: var(--kb-text) !important;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-wrap{ max-width: 1100px; margin: 0 auto; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-header{<!-- [et_pb_line_break_holder] -->      background: linear-gradient(180deg, rgba(17,24,39,.035), rgba(17,24,39,.015));<!-- [et_pb_line_break_holder] -->      border: 1px solid var(--kb-border);<!-- [et_pb_line_break_holder] -->      border-radius: var(--kb-radius);<!-- [et_pb_line_break_holder] -->      box-shadow: var(--kb-shadow);<!-- [et_pb_line_break_holder] -->      padding: 16px;<!-- [et_pb_line_break_holder] -->      margin-bottom: 14px;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-top{ display: flex; gap: 12px; justify-content: space-between; align-items: center; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-actions{ display: flex; gap: 8px; align-items: center; flex-shrink: 0; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-search{<!-- [et_pb_line_break_holder] -->      flex: 1 1 auto;<!-- [et_pb_line_break_holder] -->      min-width: 220px;<!-- [et_pb_line_break_holder] -->      height: 40px;<!-- [et_pb_line_break_holder] -->      padding: 0 12px;<!-- [et_pb_line_break_holder] -->      border: 1px solid var(--kb-border);<!-- [et_pb_line_break_holder] -->      border-radius: 10px;<!-- [et_pb_line_break_holder] -->      background: rgba(17,24,39,.02);<!-- [et_pb_line_break_holder] -->      color: var(--kb-text);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-btn{<!-- [et_pb_line_break_holder] -->      height: 40px;<!-- [et_pb_line_break_holder] -->      border: 1px solid #d1d5db;<!-- [et_pb_line_break_holder] -->      background: #ffffff;<!-- [et_pb_line_break_holder] -->      color: #0f172a;<!-- [et_pb_line_break_holder] -->      border-radius: 999px;<!-- [et_pb_line_break_holder] -->      padding: 0 12px;<!-- [et_pb_line_break_holder] -->      cursor: pointer;<!-- [et_pb_line_break_holder] -->      font-weight: 650;<!-- [et_pb_line_break_holder] -->      transition: all .18s ease;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-btn:hover{<!-- [et_pb_line_break_holder] -->      border-color: #b9c0c9;<!-- [et_pb_line_break_holder] -->      background: #f8fafc;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-btn:focus-visible{<!-- [et_pb_line_break_holder] -->      outline: 2px solid color-mix(in srgb, var(--kb-brand) 40%, white);<!-- [et_pb_line_break_holder] -->      outline-offset: 2px;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-btn.primary{<!-- [et_pb_line_break_holder] -->      border-color: var(--kb-brand);<!-- [et_pb_line_break_holder] -->      background: var(--kb-brand);<!-- [et_pb_line_break_holder] -->      color: #ffffff;<!-- [et_pb_line_break_holder] -->      box-shadow: 0 2px 8px rgba(16,165,125,.22);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-btn.primary:hover{<!-- [et_pb_line_break_holder] -->      border-color: var(--kb-brand-strong);<!-- [et_pb_line_break_holder] -->      background: var(--kb-brand-strong);<!-- [et_pb_line_break_holder] -->      box-shadow: 0 3px 10px rgba(16,165,125,.26);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-grid{ display: grid; grid-template-columns: 260px 1fr; gap: 14px; }<!-- [et_pb_line_break_holder] -->    @media (max-width: 940px){ #pps-kb-root .kb-grid{ grid-template-columns: 1fr; } }<!-- [et_pb_line_break_holder] -->    @media (max-width: 640px){<!-- [et_pb_line_break_holder] -->      #pps-kb-root .kb-top{ flex-wrap: wrap; }<!-- [et_pb_line_break_holder] -->      #pps-kb-root .kb-actions{ width: 100%; justify-content: flex-end; }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-toc{<!-- [et_pb_line_break_holder] -->      border: 1px solid var(--kb-border);<!-- [et_pb_line_break_holder] -->      border-radius: var(--kb-radius);<!-- [et_pb_line_break_holder] -->      background: var(--kb-surface);<!-- [et_pb_line_break_holder] -->      padding: 12px;<!-- [et_pb_line_break_holder] -->      align-self: start;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-toc h3{<!-- [et_pb_line_break_holder] -->      margin: 0 0 8px;<!-- [et_pb_line_break_holder] -->      color: var(--kb-muted);<!-- [et_pb_line_break_holder] -->      font-size: 15px;<!-- [et_pb_line_break_holder] -->      text-transform: uppercase;<!-- [et_pb_line_break_holder] -->      letter-spacing: .04em;<!-- [et_pb_line_break_holder] -->      padding: 7px 9px;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-toc a{<!-- [et_pb_line_break_holder] -->      display: block;<!-- [et_pb_line_break_holder] -->      color: var(--kb-text);<!-- [et_pb_line_break_holder] -->      text-decoration: none;<!-- [et_pb_line_break_holder] -->      padding: 7px 9px;<!-- [et_pb_line_break_holder] -->      border-radius: 8px;<!-- [et_pb_line_break_holder] -->      font-size: 13px;<!-- [et_pb_line_break_holder] -->      border: 1px solid transparent;<!-- [et_pb_line_break_holder] -->      margin-bottom: 6px;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-toc a:hover{ border-color: rgba(17,24,39,.2); background: rgba(17,24,39,.03); }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-card{<!-- [et_pb_line_break_holder] -->      border: 1px solid var(--kb-border);<!-- [et_pb_line_break_holder] -->      border-radius: var(--kb-radius);<!-- [et_pb_line_break_holder] -->      background: var(--kb-surface);<!-- [et_pb_line_break_holder] -->      padding: 12px;<!-- [et_pb_line_break_holder] -->      margin-bottom: 12px;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root details{<!-- [et_pb_line_break_holder] -->      border: none;<!-- [et_pb_line_break_holder] -->      border-radius: var(--kb-radius-sm);<!-- [et_pb_line_break_holder] -->      background: #f8fafc;<!-- [et_pb_line_break_holder] -->      overflow: hidden;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root summary{<!-- [et_pb_line_break_holder] -->      cursor: pointer;<!-- [et_pb_line_break_holder] -->      font-weight: 800;<!-- [et_pb_line_break_holder] -->      padding: 11px 12px;<!-- [et_pb_line_break_holder] -->      list-style: none;<!-- [et_pb_line_break_holder] -->      position: relative;<!-- [et_pb_line_break_holder] -->      font-size: 15px;<!-- [et_pb_line_break_holder] -->      color: var(--kb-brand) !important;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root summary::-webkit-details-marker{ display: none; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root summary::after{<!-- [et_pb_line_break_holder] -->      content: \"\";<!-- [et_pb_line_break_holder] -->      position: absolute;<!-- [et_pb_line_break_holder] -->      right: 12px;<!-- [et_pb_line_break_holder] -->      top: 50%;<!-- [et_pb_line_break_holder] -->      transform: translateY(-50%);<!-- [et_pb_line_break_holder] -->      opacity: .8;<!-- [et_pb_line_break_holder] -->      width: 14px;<!-- [et_pb_line_break_holder] -->      height: 14px;<!-- [et_pb_line_break_holder] -->      background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 20 20' fill='none' stroke='%23111111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 8l4 4 4-4'\/%3E%3C\/svg%3E\");<!-- [et_pb_line_break_holder] -->      background-repeat: no-repeat;<!-- [et_pb_line_break_holder] -->      background-size: contain;<!-- [et_pb_line_break_holder] -->      background-position: center;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root details[open] summary::after{ transform: translateY(-50%) rotate(180deg); }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-body{ padding: 0 12px 12px; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-body p{ margin: 8px 0; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-body ul{ margin: 8px 0 12px 18px; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-body ol{ margin: 8px 0 12px 18px; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-body li{ margin: 6px 0; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-note, #pps-kb-root .kb-tip, #pps-kb-root .kb-warn{<!-- [et_pb_line_break_holder] -->      border-radius: 10px; padding: 10px; margin: 10px 0;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-note{ border: 1px solid rgba(34,197,94,.45); background: rgba(34,197,94,.12); }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-tip{ border: 1px solid rgba(245,158,11,.45); background: rgba(245,158,11,.14); }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-warn{ border: 1px solid rgba(239,68,68,.45); background: rgba(239,68,68,.12); }<!-- [et_pb_line_break_holder] -->    #pps-kb-root code{<!-- [et_pb_line_break_holder] -->      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;<!-- [et_pb_line_break_holder] -->      background: var(--kb-code-bg);<!-- [et_pb_line_break_holder] -->      border: 1px solid rgba(17,24,39,.16);<!-- [et_pb_line_break_holder] -->      border-radius: 7px;<!-- [et_pb_line_break_holder] -->      padding: 2px 6px;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root pre{<!-- [et_pb_line_break_holder] -->      margin: 8px 0;<!-- [et_pb_line_break_holder] -->      padding: 10px;<!-- [et_pb_line_break_holder] -->      background: var(--kb-code-bg);<!-- [et_pb_line_break_holder] -->      border: 1px solid rgba(17,24,39,.14);<!-- [et_pb_line_break_holder] -->      border-radius: 10px;<!-- [et_pb_line_break_holder] -->      overflow: auto;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root table{ width: 100%; border-collapse: collapse; margin-top: 8px; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root th, #pps-kb-root td{<!-- [et_pb_line_break_holder] -->      border: 1px solid var(--kb-border);<!-- [et_pb_line_break_holder] -->      padding: 9px;<!-- [et_pb_line_break_holder] -->      font-size: 13px;<!-- [et_pb_line_break_holder] -->      text-align: left;<!-- [et_pb_line_break_holder] -->      vertical-align: top;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    #pps-kb-root th{ background: rgba(17,24,39,.035); }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-hidden{ display: none !important; }<!-- [et_pb_line_break_holder] -->    #pps-kb-root .kb-footer{ margin-top: 10px; color: var(--kb-muted); font-size: 12px; }<!-- [et_pb_line_break_holder] -->  <\/style>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <\/p>\n<div class=\"kb-wrap\"><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"kb-header\"><!-- [et_pb_line_break_holder] -->      <\/p>\n<div class=\"kb-top\"><!-- [et_pb_line_break_holder] -->        <input class=\"kb-search\" type=\"search\" placeholder=\"Search topics...\" aria-label=\"Search knowledge base\" data-kb-search \/><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"kb-actions\"><!-- [et_pb_line_break_holder] -->          <button class=\"kb-btn primary\" type=\"button\" data-kb-expand>Expand all<\/button><!-- [et_pb_line_break_holder] -->          <button class=\"kb-btn\" type=\"button\" data-kb-collapse>Collapse all<\/button><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->      <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"kb-grid\"><!-- [et_pb_line_break_holder] -->      <\/p>\n<nav class=\"kb-toc\" aria-label=\"Table of contents\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<h3>Topics<\/h3>\n<p><!-- [et_pb_line_break_holder] -->        <a href=\"#kb-onboarding\">Onboarding<\/a><!-- [et_pb_line_break_holder] -->        <a href=\"#kb-rates\">How to add rates<\/a><!-- [et_pb_line_break_holder] -->        <a href=\"#kb-per-product\">How to add per product shipping<\/a><!-- [et_pb_line_break_holder] -->        <a href=\"#kb-per-variant\">How to add per variant<\/a><!-- [et_pb_line_break_holder] -->        <a href=\"#kb-variant-csv\">How to use import csv per variant<\/a><!-- [et_pb_line_break_holder] -->        <a href=\"#kb-troubleshooting\">Troubleshooting<\/a><!-- [et_pb_line_break_holder] -->        <a href=\"#kb-bulk\">How to use bulk import etc<\/a><!-- [et_pb_line_break_holder] -->      <\/nav>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <main><!-- [et_pb_line_break_holder] -->        <\/p>\n<section class=\"kb-card\" id=\"kb-onboarding\" data-title=\"Onboarding\"><!-- [et_pb_line_break_holder] -->          <\/p>\n<details open><!-- [et_pb_line_break_holder] -->            <\/p>\n<summary>Onboarding<\/summary>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"kb-body\"><!-- [et_pb_line_break_holder] -->              <pee><b>Per Product Shipping is currently in ONBOARDING MODE.<\/b> Rates will not be live in checkout until enabled in Shopify Settings.<\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Add Per Product Rule<\/b><\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Add Rate<\/b><\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Register Carrier<\/b><\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] -->              <pee><b>Carrier registration steps<\/b><\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ol><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Open your app and go to <b>Shipping Rules<\/b>.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Scroll to the <b>Per product shipping<\/b> section.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Check status. If it says not registered, click <b>Register carrier<\/b>.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>In Shopify Admin, go to <b>Settings -> Shipping and delivery<\/b>.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Edit the zone you want, then add\/select <b>Per Product Shipping<\/b> as the rate source.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Save the zone and run a checkout test with a product that has per-variant rules configured.<\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ol>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->          <\/details>\n<p><!-- [et_pb_line_break_holder] -->        <\/section>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <\/p>\n<section class=\"kb-card\" id=\"kb-rates\" data-title=\"How to add rates\"><!-- [et_pb_line_break_holder] -->          <\/p>\n<details open><!-- [et_pb_line_break_holder] -->            <\/p>\n<summary>How to add rates<\/summary>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"kb-body\"><!-- [et_pb_line_break_holder] -->              <pee>Go to <b>Shipping Rules<\/b> and click <b>Add rate<\/b>.<\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Flat rate<\/b>: set custom name, optional description, price, and condition.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Per Product Shipping<\/b>: add once; uses per-variant rules you configure in Products.<\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->              <pee><b>Flat rate fields<\/b><\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Custom rate name<\/b>: the checkout-visible name for the flat rate.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Custom delivery description (optional)<\/b>: helper\/marketing text shown under the rate name.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Price ($)<\/b>: amount charged for this rule when matched.<\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->              <pee><b>Flat rate conditions<\/b><\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  <b>Based on order price<\/b>:<!-- [et_pb_line_break_holder] -->                  optional min\/max order thresholds control when this flat rate applies.<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  <b>Based on item weight<\/b>:<!-- [et_pb_line_break_holder] -->                  optional min\/max weight thresholds control when this flat rate applies.<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->              <pee><b>Per Product Shipping defaults (Edit Per Product Shipping rule)<\/b><\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Default service name<\/b>: the shipping method name customers see at checkout (example: Standard Shipping).<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><b>Default service description<\/b>: optional short helper text shown under the service name at checkout.<\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->              <pee><b>When some cart items have no per-variant rule<\/b><\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  <b>Strict &#8211; no rate (hide shipping until all items have rules)<\/b>:<!-- [et_pb_line_break_holder] -->                  returns no per-product shipping rate unless every relevant item has a matching destination rule.<!-- [et_pb_line_break_holder] -->                  Best when you want full control and never want estimated fallbacks.<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  <b>Per-product for configured items + amount for others (one combined rate)<\/b>:<!-- [et_pb_line_break_holder] -->                  adds configured per-product totals, then also adds your fallback amount for items without rules<!-- [et_pb_line_break_holder] -->                  so checkout still shows one combined shipping option.<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  <b>Charge fallback rate only<\/b>:<!-- [et_pb_line_break_holder] -->                  ignores partial per-product totals and returns only the fallback amount when items are missing rules.<!-- [et_pb_line_break_holder] -->                  Useful when you prefer a single predictable backup charge.<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  <b>Try next rule (e.g. use a flat rate below)<\/b>:<!-- [et_pb_line_break_holder] -->                  skips the per-product result and lets the next lower-priority shipping rule decide the rate<!-- [et_pb_line_break_holder] -->                  (commonly a flat rate).<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->              <\/p>\n<div class=\"kb-note\"><b>Priority:<\/b> drag rows to set order; first matching rule is shown at checkout.<\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->          <\/details>\n<p><!-- [et_pb_line_break_holder] -->        <\/section>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <\/p>\n<section class=\"kb-card\" id=\"kb-per-product\" data-title=\"How to add per product shipping\"><!-- [et_pb_line_break_holder] -->          <\/p>\n<details open><!-- [et_pb_line_break_holder] -->            <\/p>\n<summary>How to add per product shipping<\/summary>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"kb-body\"><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>In <b>Shipping Rules<\/b>, register carrier if needed.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>In Shopify, go to <b>Settings -> Shipping and delivery<\/b> and add <b>Per Product Shipping<\/b> to a zone.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Add <b>Per Product Shipping<\/b> once from <b>Add rate<\/b>.<\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] -->              <\/p>\n<div class=\"kb-warn\">If enabled but no per-variant rules exist, carts may receive no rate for this rule.<\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->          <\/details>\n<p><!-- [et_pb_line_break_holder] -->        <\/section>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <\/p>\n<section class=\"kb-card\" id=\"kb-per-variant\" data-title=\"How to add per variant\"><!-- [et_pb_line_break_holder] -->          <\/p>\n<details open><!-- [et_pb_line_break_holder] -->            <\/p>\n<summary>How to add per variant<\/summary>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"kb-body\"><!-- [et_pb_line_break_holder] -->              <pee>Go to <b>Products<\/b>, open a product, select a variant, then add rows in <b>Individual Shipping Rules<\/b>.<\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<table><!-- [et_pb_line_break_holder] -->                <\/p>\n<thead>\n<tr>\n<th>Field<\/th>\n<th>Rule<\/th>\n<\/tr>\n<\/thead>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<tbody><!-- [et_pb_line_break_holder] -->                  <\/p>\n<tr>\n<td>country_code<\/td>\n<td>2-letter code like US or *.<\/td>\n<\/tr>\n<p><!-- [et_pb_line_break_holder] -->                  <\/p>\n<tr>\n<td>state_code<\/td>\n<td>State\/region code or *.<\/td>\n<\/tr>\n<p><!-- [et_pb_line_break_holder] -->                  <\/p>\n<tr>\n<td>postcode<\/td>\n<td>Single code or wildcard like PE*.<\/td>\n<\/tr>\n<p><!-- [et_pb_line_break_holder] -->                  <\/p>\n<tr>\n<td>line_cost<\/td>\n<td>Per line amount.<\/td>\n<\/tr>\n<p><!-- [et_pb_line_break_holder] -->                  <\/p>\n<tr>\n<td>item_cost<\/td>\n<td>Per quantity amount.<\/td>\n<\/tr>\n<p><!-- [et_pb_line_break_holder] -->                <\/tbody>\n<p><!-- [et_pb_line_break_holder] -->              <\/table>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->          <\/details>\n<p><!-- [et_pb_line_break_holder] -->        <\/section>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <\/p>\n<section class=\"kb-card\" id=\"kb-variant-csv\" data-title=\"How to use import csv per variant\"><!-- [et_pb_line_break_holder] -->          <\/p>\n<details open><!-- [et_pb_line_break_holder] -->            <\/p>\n<summary>How to use import csv per variant<\/summary>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"kb-body\"><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Select a variant.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Download variant template.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Upload CSV, click <b>Analyze<\/b>, then <b>Import<\/b>.<\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] -->              <\/p>\n<pre>country_code,state_code,postcode,line_cost,item_cost<\/pre>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->          <\/details>\n<p><!-- [et_pb_line_break_holder] -->        <\/section>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <\/p>\n<section class=\"kb-card\" id=\"kb-troubleshooting\" data-title=\"Troubleshooting\"><!-- [et_pb_line_break_holder] -->          <\/p>\n<details open><!-- [et_pb_line_break_holder] -->            <\/p>\n<summary>Troubleshooting<\/summary>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"kb-body\"><!-- [et_pb_line_break_holder] -->              <pee><!-- [et_pb_line_break_holder] -->                If you don&#8217;t see expected fields (like the country dropdown) or your rates don&#8217;t appear at checkout, try these checks.<!-- [et_pb_line_break_holder] -->              <\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->              <pee><b>Missing \/ empty country code dropdown in per-product shipping<\/b><\/pee><!-- [et_pb_line_break_holder] -->              <pee><!-- [et_pb_line_break_holder] -->                This usually means Shopify did not fully refresh the shipping zone configuration after you enabled or edited the app shipping rate.<!-- [et_pb_line_break_holder] -->                Do the following:<!-- [et_pb_line_break_holder] -->              <\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ol><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  In <b>Shopify Admin<\/b>, go to <b>Settings -> Shipping and delivery<\/b>.<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  Open the <b>shipping profile\/zone<\/b> where you added <b>Per Product Shipping<\/b>.<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  Click <b>Save<\/b> for that zone (even if nothing changed).<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  Wait a few seconds, then refresh the app page where you configure per-product\/per-variant rules.<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ol>\n<p><!-- [et_pb_line_break_holder] -->              <\/p>\n<div class=\"kb-note\"><!-- [et_pb_line_break_holder] -->                After you re-save the zone, Shopify sends updated zone\/rate data back to the storefront, and the app UI should populate the destination controls again.<!-- [et_pb_line_break_holder] -->              <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->              <pee><b>Per Product Shipping enabled but no rate at checkout<\/b><\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Confirm <b>Per Product Shipping<\/b> was added only once in <b>Shipping Rules<\/b>.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Open <b>Products<\/b>, select your product, then configure <b>Individual Shipping Rules<\/b> for each variant.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li><!-- [et_pb_line_break_holder] -->                  If you set the &#8220;missing per-variant&#8221; behavior to <b>Strict (none)<\/b>, customers may not see shipping when a destination has no matching per-variant rule.<!-- [et_pb_line_break_holder] -->                <\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->              <pee><b>Bulk import issues<\/b><\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<ul><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Use required columns: <b>product_id, variant_id, country_code, state_code, postcode<\/b>.<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>Header names must match (including underscores).<\/li>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<li>After fixing your file, run <b>Analyze<\/b> again to locate the rows that failed.<\/li>\n<p><!-- [et_pb_line_break_holder] -->              <\/ul>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->          <\/details>\n<p><!-- [et_pb_line_break_holder] -->        <\/section>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <\/p>\n<section class=\"kb-card\" id=\"kb-bulk\" data-title=\"How to use bulk import etc\"><!-- [et_pb_line_break_holder] -->          <\/p>\n<details open><!-- [et_pb_line_break_holder] -->            <\/p>\n<summary>How to use bulk import etc<\/summary>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"kb-body\"><!-- [et_pb_line_break_holder] -->              <pee>Use bulk page \/app\/import for all products\/variants.<\/pee><!-- [et_pb_line_break_holder] -->              <\/p>\n<pre>Required: product_id,variant_id,country_code,state_code,postcode<!-- [et_pb_line_break_holder] -->Optional: line_cost,item_cost<\/pre>\n<p><!-- [et_pb_line_break_holder] -->              <pee>Analyze first, then import. Optional override replaces existing data for combinations in CSV.<\/pee><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->          <\/details>\n<p><!-- [et_pb_line_break_holder] -->        <\/section>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <\/main><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] -->  <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <script><!-- [et_pb_line_break_holder] -->    (function () {<!-- [et_pb_line_break_holder] -->      var root = document.getElementById(\"pps-kb-root\");<!-- [et_pb_line_break_holder] -->      if (!root) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      var search = root.querySelector(\"[data-kb-search]\");<!-- [et_pb_line_break_holder] -->      var expandBtn = root.querySelector(\"[data-kb-expand]\");<!-- [et_pb_line_break_holder] -->      var collapseBtn = root.querySelector(\"[data-kb-collapse]\");<!-- [et_pb_line_break_holder] -->      var sections = Array.prototype.slice.call(root.querySelectorAll(\".kb-card\"));<!-- [et_pb_line_break_holder] -->      var details = Array.prototype.slice.call(root.querySelectorAll(\"details\"));<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      function normalize(v) { return String(v || \"\").toLowerCase().trim(); }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      if (expandBtn) expandBtn.addEventListener(\"click\", function () {<!-- [et_pb_line_break_holder] -->        details.forEach(function (d) { d.open = true; });<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      if (collapseBtn) collapseBtn.addEventListener(\"click\", function () {<!-- [et_pb_line_break_holder] -->        details.forEach(function (d) { d.open = false; });<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      if (search) search.addEventListener(\"input\", function () {<!-- [et_pb_line_break_holder] -->        var q = normalize(search.value);<!-- [et_pb_line_break_holder] -->        sections.forEach(function (sec) {<!-- [et_pb_line_break_holder] -->          var title = normalize(sec.getAttribute(\"data-title\"));<!-- [et_pb_line_break_holder] -->          var text = normalize(sec.textContent);<!-- [et_pb_line_break_holder] -->          var show = !q || (title + \" \" + text).indexOf(q) > -1;<!-- [et_pb_line_break_holder] -->          sec.classList.toggle(\"kb-hidden\", !show);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    })();<!-- [et_pb_line_break_holder] -->  <\/script><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Documentation<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-129","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Documentation - Per Product Shipping<\/title>\n<meta name=\"description\" content=\"Learn how to set up Shopify per product shipping with step-by-step documentation. Configure custom shipping rates quickly and accurately.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentation - Per Product Shipping\" \/>\n<meta property=\"og:description\" content=\"Learn how to set up Shopify per product shipping with step-by-step documentation. Configure custom shipping rates quickly and accurately.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/\" \/>\n<meta property=\"og:site_name\" content=\"Per Product Shipping\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-02T15:09:08+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/documentation\\\/\",\"url\":\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/documentation\\\/\",\"name\":\"Documentation - Per Product Shipping\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/#website\"},\"datePublished\":\"2026-03-31T09:01:58+00:00\",\"dateModified\":\"2026-05-02T15:09:08+00:00\",\"description\":\"Learn how to set up Shopify per product shipping with step-by-step documentation. Configure custom shipping rates quickly and accurately.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/documentation\\\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/documentation\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/documentation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/#website\",\"url\":\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/\",\"name\":\"Per Product Shipping Shopify\",\"description\":\"Advanced shipping without the complexity\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/innozilla.com\\\/per-product-shipping-innozilla\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Documentation - Per Product Shipping","description":"Learn how to set up Shopify per product shipping with step-by-step documentation. Configure custom shipping rates quickly and accurately.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/","og_locale":"en_US","og_type":"article","og_title":"Documentation - Per Product Shipping","og_description":"Learn how to set up Shopify per product shipping with step-by-step documentation. Configure custom shipping rates quickly and accurately.","og_url":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/","og_site_name":"Per Product Shipping","article_modified_time":"2026-05-02T15:09:08+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/","url":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/","name":"Documentation - Per Product Shipping","isPartOf":{"@id":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/#website"},"datePublished":"2026-03-31T09:01:58+00:00","dateModified":"2026-05-02T15:09:08+00:00","description":"Learn how to set up Shopify per product shipping with step-by-step documentation. Configure custom shipping rates quickly and accurately.","breadcrumb":{"@id":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/documentation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/"},{"@type":"ListItem","position":2,"name":"Documentation"}]},{"@type":"WebSite","@id":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/#website","url":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/","name":"Per Product Shipping Shopify","description":"Advanced shipping without the complexity","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"}]}},"_links":{"self":[{"href":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/wp-json\/wp\/v2\/pages\/129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/wp-json\/wp\/v2\/comments?post=129"}],"version-history":[{"count":19,"href":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/wp-json\/wp\/v2\/pages\/129\/revisions"}],"predecessor-version":[{"id":189,"href":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/wp-json\/wp\/v2\/pages\/129\/revisions\/189"}],"wp:attachment":[{"href":"https:\/\/innozilla.com\/per-product-shipping-innozilla\/wp-json\/wp\/v2\/media?parent=129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}