Custom Family Portrait Embroidered Sweatshirt

$29.90
$59.90
Save $30.00

Produced in the US,the UK,and AU

Fast turnaround

Style : T-shirt
Size : XS
Global delivery
Free Shipping Over $49!
Sustainably made
Quantity
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
Description

💖 Transform Your Favorite Photo into Timeless Wearable Art!(The ideal gift for Mother's Day)

Create a unique and meaningful gift with our Custom Embroidered Portrait Sweatshirt. Whether it's a beloved pet, family member, or a special moment, our personalized embroidered design lets you carry your memories wherever you go. Choose a detailed embroidered portrait, and add a special date or message with Roman numerals to make it even more personal.

(Detailed Embroidery)

Why Choose Our Custom Embroidered Sweatshirt?

A Personal Touch for Every Occasion

  • Custom Embroidery Options: Upload your favorite photo, and we’ll turn it into an embroidered portrait that’s as unique as your memories.

    • Detailed Embroidery: A lifelike portrait with all facial features, perfect for capturing a realistic likeness.
  • Roman Numerals & Custom Text: Add a meaningful date or milestone in Roman numerals to commemorate a special moment, or choose custom text on the sleeve for an extra personal touch.

Perfect for: Anniversaries, birthdays, holidays, pet lovers, family celebrations, and more!

How It Works: Simple 3-Step Process

1.Step 1: Upload Your Photo
Choose the style you want (detailed or simplified), and upload your photo. You can also add a custom message or Roman numerals.

2.Step 2: Hand-Draw Your Photo
Our design team meticulously hand-draws your photo with great attention to detail to ensure your memories are captured beautifully.

3.Step 3: Custom Embroidery
We use state-of-the-art computerized embroidery machines to produce a precise and high-quality embroidered portrait that will last for years.

Product Features

  • Premium Embroidery: High-quality stitching to create a detailed and durable design.
  • Soft & Comfortable: Made with a cozy blend of 70% cotton and 30% polyester, perfect for all seasons.
  • Unisex Fit: Available in a unisex fit, making it suitable for everyone.
  • Customizable Text: Add a personal touch with Roman numerals, dates, or custom text on the sleeves for a unique look.

Why People Love Our Custom Embroidered Sweatshirt

Perfect Gift: The personalized embroidered sweatshirt makes a thoughtful gift for any occasion—birthday, anniversary, or just because.
A Keepsake for Life: The high-quality embroidery ensures that your custom sweatshirt will be treasured for years to come.
Statement-Making Design: Whether you choose the detailed or simplified version, the embroidery makes a bold and sentimental statement.
Customizable to Your Taste: We offer a variety of colors and styles to match your personal style and preferences.

Customer Guarantee

We stand behind our product. If you're not completely satisfied with your order, contact us, and we’ll ensure your concerns are addressed. We're dedicated to providing exceptional customer service and making you smile!

Order Now & Create a Cherished Memory!

🎉 Limited Time Offer – Don’t miss out on the chance to create a truly unique and sentimental gift. Order your Custom Embroidered Portrait Sweatshirt today and celebrate your favorite memories in style.

Customer Support

📧 24/7 Support: service@forlovergift.com
(Note: Refunds and returns are not accepted, but we offer FREE replacements if eligible.)

Shipping & Return

How It Works

1 - Production (2 to 5 days): After we receive your order, we shift into production mode. During busy seasons, the process typically takes 1-2 days longer. Please understand.

2 - Shipping (7-14 Days or Faster): Want to get your item faster? Select the 'Expedited VIP' option after adding your product to the cart for the fastest shipping method we can provide. There are also different shipping options available at checkout.

Delivery

Please note that it is the customer's responsibility to provide us with a correct and complete shipping address. If your shipping address is different from your billing address, please specify this during checkout.

After we begin to deliver your order, we will send you a Shipping Notification email, including the information of your Order ID and Tracking Shipping Number. You can check the status of your order online by logging into the Track My Order page with your Order ID and email.

Please Note: If you do not receive our order notification email, please check your spam box, or please contact us to provide the email address you used to place your order. If you have any other questions regarding shipping, please contact our Customer Service Representatives.

  • The above time frame is only applicable for orders to the US with standard shipping methods.

  • International orders: It may take 2-5 days longer due to the customs clearance process.

*Due to unpredictable postal service delays, specified delivery dates are not guaranteed.

  • For more information about Shipping and Delivery, visit here.

  • Learn more about Returns and Refunds here.

Satisfaction Guarantee

We want you to be satisfied with the products you buy from us. 

We have 24/7/365 ticket and email support. Please contact us at service@forlovergift.com if you need any assistance.

Customer Reviews
Here are what our customers say.
Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.