Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
1 / 17
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
Custom Photo Necklace
25% OFF
mysite

Custom Photo Necklace

$29.99 $39.99
2 sold
Color
Style




Qty
Add Gift Packing
If you have selected the jewelry box here, please click on the Add to Cart option to place your order.

$5.99

$5.99

$5.99

$5.99

$9.99

$16.99

  • Arrives by if you order today.
  • Order placed

    Order ships

    Delivered!
  • *The ETA is applied for US orders only. All products are made to order.

/** @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);
Security and Service
Security and Service
Payment Security
Privacy Protection
Efficient and Safe Logitics
Customer Service
Payment Security
wennie jewelry is committed to your secure shopping experience. We offer safe and trusted payment options to protect your transactions. Your payment information is shared only with our certified payment service providers, who are dedicated to maintaining the confidentiality of your details.
Privacy Protection
At wennie jewelry, your privacy is our priority. We employ internationally recognized encryption methods for all network transmissions, ensuring the utmost security for your private data during your shopping journey. This includes the protection of your shipping address, credit card information, shopping details, and more. Shop with confidence, knowing your privacy is safeguarded with us.
Efficient and Safe Logitics
At wennie jewelry, we ensure secure and efficient logistics. Track your order in real-time right from the order page. For added security, consider our optional "Worry-Free Purchase" service. If your purchase encounters any delays, damage, or loss during delivery, rest assured, our insurance will cover your losses. learn more
Customer Service
If you encounter problems during or after shopping, don't hesitate to reach out. wennie jewelry's customer service team is here to assist you. learn more
Security and Service
Payment Security
Privacy Protection
Efficient and Safe Logitics
Customer Service
Security and Service

 A Picture is Worth a Thousand Words... Our Jewelry Tells the Story!

Introducing our exquisite Custom Heart Photo Necklace for women - the perfect way to keep your cherished memories close to your heart. This necklace is a truly unique piece of jewelry that allows you to personalize a pendant with a photo of your own choosing. Imagine wearing a necklace that carries a picture of your child's first steps, your wedding day, or a memorial picture of someone important to you, - it's a beautiful way to honor the special moments and people in your life.. Available in three elegant shapes - heart, round, and rectangle, also adorned with sparkling stones - this necklace is a perfect blend of sentiment and sophistication.

✅Personalized jewelry that makes the perfect gift for family and friends and comes in a cute box for easy storage or gifting.
✅This special and meaningful gift can be given to mother, sister, best friends, girlfriend, coworker, or anyone else you cherish.
✅You can give this Necklace on various anniversaries and occasions, like for Mother’s Day, Valentine’s Day, Birthday, Christmas, Halloween, Wedding Day, etc.

♥Perfect unique gifts♥ Perfect as a simple romantic gesture, suits for all age group. It is a perfect gift for yourself and your loved ones.

OUR GUARANTEE
Tracking number for every order
Safe payments Visa, Paypal, Mastercard, and Apple Pay
24/7 assistance service@wenniejewelry.com
No hidden fees!

 

SHIPPING POLICY
1. How long will it take to get my order?
Estimated delivery date includes the following: Processing Time + Delivery Time

United Arab Emirates, Austria, Australia, Belgium, Canada, Switzerland, Czechia, Germany, Denmark, Spain, Finland, France, United Kingdom, Hong Kong SAR, Ireland, Israel, Italy, Japan, South Korea, Malaysia, Netherlands, Norway, New Zealand, Poland, Portugal, Sweden, Singapore, United States

Standard shipping: 2-5 days processing+6-9 days delivery, $8.99, Free $49.99+
Expedited Shipping: 2-5 days processing+5-8 days delivery, $14.99


Rest Of World:
Standard shipping: 2-5 days processing+8-12 days delivery, $8.99, Free $45.99+
Expedited Shipping: 2-5 days processing+5-8 days delivery, $14.99


Shipping method can be selected at Checkout.
Note:
1): Taxes (If charged) shoulde be afforded by customer.
2): The shipping time will be affected by public holidays, destination countries(especially shipping addresses outside NA or EU), bad weather and international couriers.

2. Where is my order?
Your shipping confirmation will be received only when your items are fulfilled. Please fill in your both account email and order number in order to monitor order status. After we sent out the package, you can get a tracking number and you can check the tracking information in this site: CLICK HERE

3. Tips for shipping:
1) For delivering successfully, we suggest you leave your correct email box and mobile number during checkout process.
2) Unsuccessful delivery caused by blank mobile column cannot be compensated.
3) PO Box or BFPO is not accepted if you choose express shipping. Your address should be detailed enough, even include apartment or unit number. Nondelivery or extra shipping fee due to personal reasons will not be taken by Wenniejewelry.
4) Your order can be tracked in details only when it arrives in your country's facility. After it arrives in your country, please allow 5-7 days more for the package to reach you.

If you have any problem, please contact our customer service department with e-mail: service@wenniejewelry.com. We will reply you within 24 hours in business day and 48 hours in non-business days.

You May Also Like Don't Like These?
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.