Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace
Personalized Birth Flower & Birthstone Necklace

Personalized Birth Flower & Birthstone Necklace

$36.99
$56.99
Month
Please select a month
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = '69d13bfa-a191-4411-90f0-98a2e451860a'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = 'd5f1b933-51e2-4a6e-9808-8d3f1d9617ab'; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == 'd5f1b933-51e2-4a6e-9808-8d3f1d9617ab' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = 'd5f1b933-51e2-4a6e-9808-8d3f1d9617ab'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() { // 同一页可能有多个 block 各自渲染本 snippet,导致逻辑元素 spz-custom-discount-toast(#appsAddCartToastFunc) 重复。 // 仅保留 DOM 中第一个实例,其余重复实例移除自身,保证逻辑元素及其 action 引用(appsAddCartToastFunc)唯一。 const funcs = document.querySelectorAll('#appsAddCartToastFunc'); if (funcs.length > 1 && this.element !== funcs[0]) { this.element.remove(); return; } // 全局折扣 toast 的弹出点分散在多个模板/组件里(含声明式 @atcError),无法逐一在弹出前前置, // 故挂载时幂等地去重并挂到 body;加购 toast 改为弹出前按需去重(见 showAddToCartToast) this.ensureSingleToastInBody_('cart_match_discount_toast_wrap'); } unmountCallback() {} // 同一页面可能有多个 block 各自渲染本 toast snippet(如商详的 discount_automatic + 购物车抽屉里的折扣横幅), // 导致 toast 外层出现重复 id。重复 id 下 getElementById/querySelector 及 SPZ 动作引用都只命中第一个, // 且被关进抽屉的那份会被抽屉的 transform/overflow 裁剪/错位。这里在挂载时幂等去重: // 只保留一份、移除多余的,并把保留的挂到 body(body 是 position:fixed 最安全的落点,避免被任何祖先裁剪)。可反复调用。 ensureSingleToastInBody_(id) { const els = Array.from(document.querySelectorAll('#' + id)); if (!els.length) return; els.slice(1).forEach((el) => el.remove()); const keep = els[0]; if (keep.parentNode !== document.body) { document.body.appendChild(keep); } } // 主题购物车抽屉是否打开 isInCartDrawer_() { return !!document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); } setupAction_() { this.registerAction('showAddToCartToast', () => { // 抽屉内加购:主题本就不会有加购效果,统一弹插件自己的 toast // 非抽屉:主题有加购代理则沿用主题加购效果,否则插件兜底 const proxyEl = document.getElementById('add-cart-event-proxy'); const inDrawer = this.isInCartDrawer_(); if (!inDrawer && proxyEl) { return; } // 弹出前按需去重并挂到 body(幂等),避免重复 id 命中错对象或被抽屉裁剪/错位 this.ensureSingleToastInBody_('apps_add_cart_toast_wrap'); const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
Quantity
Shipping

Personalized Birth Flower & Birthstone Necklace

"Words carry power, and symbols carry history."

Celebrate your unique story or honor a loved one with a piece that goes beyond simple aesthetics. Combining the timeless Victorian language of flowers with the protective energy of brilliant birthstones, this custom engraved disc pendant is a wearable autobiography.

✨ Why You'll Love It

  • 🌿 Meaningful Design: Exquisite, hand-drawn botanical line art of your chosen birth month flower, perfectly paired with a smooth, snag-free bezel-set birthstone.
  • 💧 100% Waterproof & Hypoallergenic: Crafted with premium Surgical-Grade 316L Stainless Steel and thick 18K Gold PVD plating. It will never fade or turn your skin green.
  • 🎁 Premium Unboxing Experience: Arrives in our signature elegant orange presentation box with a built-in LED light, making the unboxing moment truly magical.

📏 Product Specifications

  • Pendant Size: 0.63" (16mm) dainty engraved disc.
  • Chain Length: 16" with a 2" adjustable extender chain (Fits 16" to 18" perfectly along the collarbone).
  • Fastening: Secure lobster clasp.
  • Engraving: Permanent high-precision laser engraving.

📝 How to Customize

Step 1: Select your Birth Month (this determines the specific flower engraving and birthstone).

Step 2: Enter your custom name or short text to be engraved on the pendant (Max 12 characters).

🌸 Flower & Stone Guide

Jan: Snowdrop & Garnet
Feb: Violet & Amethyst
Mar: Daffodil & Aquamarine
Apr: Daisy & Diamond (Clear)
May: Lily of the Valley & Emerald
Jun: Rose & Pearl/Alexandrite
Jul: Water Lily & Ruby
Aug: Poppy & Peridot
Sep: Morning Glory & Sapphire
Oct: Marigold & Opal
Nov: Chrysanthemum & Topaz
Dec: Poinsettia & Turquoise

🚚 Fast USA Fulfillment

In a rush for a gift? We've got you covered! Proudly personalized, assembled, and shipped directly from our USA-based workshop. Most custom orders are meticulously crafted and ready to ship within 24-48 hours. Buy with absolute confidence!

free shipping of bling painting

Our worldwide shipping is FREE for orders above $69, with metal signs over $78.

  • US / Canada  Standard Shipping 7-14 business days
  • UK / Germany   Standard Shipping 7-12 business days
  • Australia   Standard Shipping 9-15 business days
  • Japan   Standard Shipping 7-12 business days 
  • Worldwide  Standard Shipping 9-22 business days
  • US / Canada  Expedited Shipping 3-5 business days (FedEx)

1. Please allow us to process your standard order within 1-2 business days, and your custom order within 3-5 business days.
2. Please email us (support@blingpainting.com)  for Expedited Shipping.

Free Remake Guarantee

Our customized products come with a Free Remake Guarantee which means if your first order doesn’t fit like you think it should, we’ll make you a new one free of charge.

How To Initiate A Return

Please email us include:
1) Your order number (you can find this in your order confirmation email/Message, if you have not received the confirmation email, you are welcome to register to check the shipping status anytime)
2) The photo of the package you just received. A member of our Customer Service team will reply to your message within 24 hours.
*Please include a printout of your order confirmation email in the package for identification purposes. Alternatively, write your order # on the outside of the package in large, clear print (or print out a label).

If you need to cancel the order, please feel free to contact us within 24 hours after your purchase. Usually, we will start to customize and produce your product within 24 hours after you place your order. Once your order is shipped, it cannot be canceled or refunded.
For these cases, please contact us to send you the replacement package for free.
1) Damaged package
2) The Wrong item in the package BlingPainting will provide a pre-paid return shipping label in cases where items have arrived in damaged condition or are confirmed
by a BlingPainting representative to be defective.

For all other cases, return shipping costs are the responsibility of the customer.
Under no circumstance does BlingPainting reimburse (or provide credit) for return shipping costs incurred by the customer. If a product is damaged or defective, the recipient must make arrangements with BlingPainting support as to how the return should be handled before placing the items back in transit to BlingPainting. Please email us 30 days from the purchase date.

*Unfortunately, we DO NOT offer full refunds for the following situations:

1) Partially/Fully completed Diamond Paintings kits
2) Partially/Fully completed Painting by Numbers kits
3) More than 30 days from the purchase date
4) Photo Custom kits
5) Custom Metal Sign & Metal Clock
6) Orders that are shown delivered on the shipping carriers' official websites, such as USPS or FedEx.

Full Refunds

We offer you a refund for those following situations, except for 9.57% of the transaction charge. returning funds usually take 7-21 days to appear in the account used to make the purchase (depending on the processing speed of the bank that issued the funds):
1) Email us to cancel the order within 24 hours from the purchase date.
2) Shipping carriers lost the package.

Partial Refunds

We will provide you with a partial refund if the customer wants to return the package without any damage when you get it(such as changing your mind).
The details are as follows:
1) Full refund of the product value.
2) Shipping costs cannot be canceled or refunded

Help Center

Send us a Text Message: +1 (302) 688-7316