Learn how to control exactly where upload fields appear on your product pages using Manual Position Mode.
Manual Position Mode gives you complete control over where upload fields appear on your product pages. Instead of relying on automatic positioning, you can place them exactly where you want by adding a simple code snippet to your theme.
Follow these two simple steps to enable manual positioning:
Now you need to add a code snippet to your theme where you want the upload fields to appear.
Option A: From Theme Customizer (Recommended)
Option B: From Shopify Admin
For most modern Shopify themes, you'll want to edit:
sections/main-product.liquid - Main product page sectionsnippets/product-form.liquid - Product form snippet (if your theme uses it)Copy and paste this code where you want upload fields to appear (typically before the "Add to Cart" button):
<!-- UploadsPro - Manual Position -->
<div id="uploads-pro-manual-position" style="margin: 20px 0;">
<div id="uploads-pro-manual-content"></div>
</div>
<script>
(function(){function i(){const s=window.uprosettingsembed;if(!s){setTimeout(i,100);return}if(s.embedSettings?.positionMode==='manual'){const m=document.getElementById('uploads-pro-manual-position'),e=document.getElementById('uploads-pro-embed-container'),t=document.getElementById('uploads-pro-manual-content');if(m&&e&&t){const c=e.querySelector('#qsmzupglobalcontainer-embed');if(c){t.appendChild(c.cloneNode(true));const cl=t.querySelector('#qsmzupglobalcontainer-embed');if(cl)cl.id='qsmzupglobalcontainer';m.style.display='block';e.style.display='none';console.log('✅ UploadsPro: Manual positioning applied')}}}}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',()=>setTimeout(i,200))}else{setTimeout(i,200)}})();
</script>
Most common placement - shows upload fields just before the purchase button:
<div class="product-form__quantity">
<input type="number" name="quantity" value="1" min="1">
</div>
<!-- Upload fields here -->
<div id="uploads-pro-manual-position" style="margin: 20px 0;">
<div id="uploads-pro-manual-content"></div>
</div>
<script>...</script>
<button type="submit" name="add">Add to Cart</button>
Shows upload fields right after customers select their product variant:
<variant-selector>
<select name="id">
{% for variant in product.variants %}
<option value="{{ variant.id }}">{{ variant.title }}</option>
{% endfor %}
</select>
</variant-selector>
<!-- Upload fields here -->
<div id="uploads-pro-manual-position" style="margin: 20px 0;">
<div id="uploads-pro-manual-content"></div>
</div>
<script>...</script>
Create a dedicated customization section:
<div class="product-customization-section">
<h3>Customize Your Product</h3>
<p>Upload your design files below</p>
<!-- Upload fields here -->
<div id="uploads-pro-manual-position" style="margin: 20px 0;">
<div id="uploads-pro-manual-content"></div>
</div>
<script>...</script>
</div>
After adding the snippet, verify it's working correctly:
✅ UploadsPro: Manual positioning applied
If you see duplicate upload fields:
Change the margin value to adjust spacing around upload fields:
<!-- More spacing -->
<div id="uploads-pro-manual-position" style="margin: 30px 0;">
<!-- Less spacing -->
<div id="uploads-pro-manual-position" style="margin: 10px 0;">
<!-- Custom spacing (top/bottom, left/right) -->
<div id="uploads-pro-manual-position" style="margin: 25px 15px;">
Add a custom class for advanced styling:
<div id="uploads-pro-manual-position"
class="my-custom-upload-section"
style="margin: 20px 0;">
<div id="uploads-pro-manual-content"></div>
</div>
Then add CSS in your theme's stylesheet:
.my-custom-upload-section {
background: #f9f9f9;
padding: 20px;
border-radius: 8px;
border: 1px solid #e0e0e0;
}
No, use only one snippet per product page. Using multiple snippets may cause conflicts.
Yes! This snippet works with all Shopify themes, including modern Shopify 2.0 themes and older legacy themes.
The fields will automatically revert to auto-positioning. The snippet will be ignored, so you don't need to remove it from your theme.
Yes! You can add custom CSS to style the #uploads-pro-manual-position container or add your own CSS classes.
No, the script is lightweight (~1KB minified) and only runs when manual mode is enabled.
If you update your theme, you'll need to re-add the snippet. Consider documenting where you placed it for easy reference.
If you're having trouble with manual positioning: