Docenin™🕊️ Easter Hot Sale🔥 - Handmade Birdhouse And Birdhouse Materials

$8.98
$17.61
Save $8.63
Qty : Buy 1
Quantity
Description

  • 🔥 92.2% Of Customers Are Buying 3 Pcs Or More
  • 😊 You can return items for a refund or exchange within 15 days. 
  • 💯 Payments Via PayPal® and CreditCard.
  • 🚢 Shipping>>Worldwide Express Shipping Available.

🐦Let The Birds Love Your Garden

Our nesting balls are made of natural, hand-woven fibers that are tightly woven together. These nesting balls make your garden more attractive to birds and provide nesting material for birds.

🐦 Summer is here, help the birds build their homes and watch these beautiful birds in action.

🌈Make a house for your bird

This uniquely designed bird nest ball allows birds to build nests naturally.

✨Excellent for Bird lovers

Every few hours, you'll see a little bird frantically filling his beak with fluff on the nesting ball and then flying to his nest, providing a pleasant observation for the little bird.

☔Eco-Friendly

The nest is lined with soft white cotton to provide nesting material for the bird.

👍Safe & Durable

Bird nests are hand-woven from natural rattan for safety and durability. The rattan of the bird's nest holds the nesting material well even in the wind and rain.

Excellent Gift for Birds Lovers

You can help attract them to your yard by providing them with the items they need. This bird nesting material kit will make a great gift for bird lovers, parents and grandparents, birthday and holiday gifts.

USAGE SCENARIOS

  • Backyard, Eaves, Garden, Trees, Windows, Balcony

SPECIFICATIONS

  • Size: 3.7'' × 3.7’‘ × 10’‘
  • Weight: 55G
  • Material: Rattan, Natural Fiber Cotton

PACKAGE INCLUDE

  • 1/3/5/10 * Bird Nesting Materials

NOTES

  • Due to manual measurements, please allow slight measurement deviations.

  • Due to the different display and lighting effects, the actual color of the item may be slightly different from the color displayed in the picture.


😉Please note that shipping is insured. However, you may receive your items earlier. Tracking Numbers will ALWAYS be sent so you can track it every step of the way! Cool things are worth waiting for! 

💐WHY US

  • 🔥Price is always competitive.
  • 😊Awesome Customer Service.
  • 🏆Amazing products along with High Quality.
  • 🍭Read reviews from our lovely customers.

We work directly with manufacturers all over the world to ensure the best quality of our products. We have a Quality Control department which helps us to keep our promise!

🌎 Worldwide Shipping ✈️

Please note that shipping is insured. However, you may receive your items earlier. Tracking Numbers will ALWAYS be sent so you can track it every step of the way! Cool things are worth waiting for! 😉

🔒 100% Risk-Free Purchase 🔥 

If the product you received is damaged, don't worry. Just hit the Contact Us button and send us a message, and we will make it right by offering you a replacement or refund. It 100% Simple and risk-free process.

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.