{"is_no_track":0,"product":"","config":{"track_setting":{"track_link":["a","tracking"],"user_id":22517,"hide_setting":[{"origin":"{china_cities}","hide_type":0,"replace_type":0,"replace":"","sort":1},{"origin":"{dropshipping_couriers}","hide_type":0,"replace_type":0,"replace":"","sort":2}],"track_url":"\/a\/tracking","api_track_url":"https:\/\/tms.trackingmore.net\/track_page\/index","api_url":"https:\/\/tms.trackingmore.net\/track-page\/recommend_product","track_seo":{"seo_title":"Track order status - Giftago","seo_desc":"Track delivery status of your packages - Giftago.co"},"shipping_time":{"cal_type":0,"switch":true,"date_format":0,"time_format":0},"show_copy_right":false},"theme_setting":{"settings":{"google_translate":false,"general":{"width":1200,"font":"","estimated_show":2,"order_lookup":true,"progress_bar":true,"tracking_history":true,"detail_info":true,"map":true,"featured_products":false},"order_lookup":{"order":true,"number":false,"button_color":"","text_above":"","text_below":"","border_coder":"","color":"","input_color":"","placeholder":true},"progress_bar":{"date_format":0,"time_format":0,"color":"#008000"},"tracking_history":{"date_format":0,"time_format":0,"background_color":"#ffffff","color":"#000000"},"detail_info":{"courier":false,"number":true,"line_items":true,"note":false},"map":{"location":false,"destination":true},"featured_products":{"before_tracking":{"collection":0,"selected":0,"open":false},"after_tracking":{"collection":0,"selected":0,"open":true,"position":2}}},"translation":{"track_your_order":"Track Your Order","order":"Order","status":"Status","may_like":"You may also like...","order_number":"Order Number","track_number":"Tracking Number","email":"Email","track":"Track","or":"OR","enter_your_order":"Please enter your order number","enter_your_tracking_number":"Please enter your tracking number","enter_your_email":"Please enter your email","incorrect_email":"Incorrect Email","ordered":"Ordered","order_ready":"Order Ready","transit":"In Transit","pickup":"Out for Delivery","delivered":"Delivered","pending":"Pending","expired":"Expired","undelivered":"Failed Attempt","exception":"Exception","info_receive":"Info Received","order_not_found":"Could Not Find Order","waiting_update":"Waiting for carrier to update tracking information, please try again later.","not_yet_shipped":"These items have not yet shipped.","carrier":"Carrier","product":"Product","note":"Note","expected_delivery_date":"Expected Delivery Date","shipping_to":"Shipping To","current_location":"Current Location"},"custom_style":".tm_tracking_title {\n  font-size: 30px;\n  letter-spacing: 0;\n}\n\n.tm_tracking_span {\n  display: block;\n  text-align: left;\n  font-size: 16px;\n  line-height: 24px;\n  margin-bottom: 4px;\n  color: #222;\n  font-weight: 500;\n}\n\n.tm_tracking_form {\n  width: calc(100% - 28px);\n  max-width: 512px;\n  margin: 0 auto;\n}\n\n.tm_tracking_input input {\n  width: 100% !important;\n}\n\n.tm_tracking_alert {\n  text-align: left;\n}\n\n.tm_tracking_button button {\n  height: 48px;\n  border-radius: 6px;\n  width: 100%;\n  color: #fff;\n  background-color: rgba(224,75,111,1);\n}","top_html":"","bottom_html":"<style>\n      .faq-title {\n        font-size: 16px;\n        padding-top: 32px;\n        margin-bottom: 12px;\n        font-weight: 500;\n      }\n      .faq {\n        margin-bottom: 10px;\n        border-radius: 6px;\n        box-shadow: 0 3px 10px #0d0c222b;\n      }\n      .faq-button {\n        width: 100%;\n        background: #ffffff;\n        color: #1b2631;\n        padding: 16px;\n        font-size: 16px;\n        text-align: left;\n        background-color: white;\n        cursor: pointer;\n        width: 100%;\n        border: none;\n        outline: none;\n        transition: 0.2s;\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n      }\n\n      .faq-button::after {\n        content: '\\203A';\n        transform: rotate(90deg) scale(1.5);\n        transition: content 0.2s ease-out;\n      }\n\n      .faq-active .faq-button,\n      .faq-button:hover {\n        color: rgba(224, 75, 111, 1);\n      }\n\n      .faq-active .faq-button::after {\n        content: '\\2039';\n      }\n\n      .faq-panel {\n        font-size: 14px;\n        text-transform: none;\n        color: #1b2631;\n        line-height: 1.6em;\n        border-top: 1px dashed #e5e5ea;\n        background-color: white;\n        max-height: 0;\n        overflow: hidden;\n        transition: max-height 0.5s ease-out;\n      }\n      .lookup-title {\n        text-decoration: underline;\n        padding: 10px 0;\n        display: block;\n        cursor: pointer;\n        font-size: 14px;\n      }\n      .lookup-title:hover {\n        color: rgba(224, 75, 111, 1);\n      }\n      .lookup-overlay {\n        position: fixed;\n        top: 0;\n        left: 0;\n        width: 100vw;\n        height: 100vh;\n        background: rgba(43, 46, 56, 0.9);\n        z-index: 2000;\n        padding: 16px;\n        display: none;\n        justify-content: center;\n        align-items: center;\n      }\n      .lookup-popup {\n        background: white;\n        border-radius: 10px;\n        padding: 32px;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        gap: 24px;\n        position: relative;\n      }\n\n      .lookup-popup img {\n        max-width: 100%;\n      }\n\n      .lookup-popup > button {\n        padding: 12px 32px;\n        border-radius: 3px;\n        border: none;\n        background: black;\n        color: white;\n        cursor: pointer;\n      }\n\n      .lookup-popup > span {\n        position: absolute;\n        top: 4px;\n        right: 4px;\n        width: 36px;\n        cursor: pointer;\n      }\n\n      .empty-result {\n        margin-top: 80px;\n        text-align: center;\n        float: none !important;\n      }\n\n      .tm_tracking_result ~ .faq-title {\n        border-top: 2px solid #aaa;\n      }\n    <\/style>\n\n    <script>\n      const faqItems = [\n        {\n          q: 'Can I modify or cancel my order after it has been placed?',\n          a: 'We strive to process orders promptly and they are typically fulfilled within <b>6 hours<\/b> of confirmation. If you need to make any changes or cancel your order, please contact us within this time frame to ensure that we can accommodate your request.',\n        },\n        {\n          q: 'When will my order ship?',\n          a: \"We'll send you an email confirmation as soon as we receive your order. Your order will be processed 2 hours after payment has been successfully completed, and we anticipate that order processing will take between 5-7 business days. Once your order has been shipped, you'll receive email notifications that include real-time tracking information. If your order is shipped in multiple parcels, you'll receive multiple emails with different tracking numbers.\",\n        },\n        {\n          q: 'My order never got to me, what do I do?',\n          a: \"If it's been marked delivered and it's only been one day-sit tight! Sometimes the carriers scan it before it gets to you. Keep an eye out for the next few hours! If the tracking hasn\u2019t been updated in an unusually long time or if it was never updated since it was made, chances are it was lost in transit. Please file a claim with the carrier. If there is no conclusion after two weeks, please let us know and we will look into replacing or crediting you for your order.\",\n        },\n      ];\n      const addFaqs = function () {\n        const formElement = document.querySelector('form.tm_tracking_form');\n\n        const faqFoundElement = document.querySelector('.faq');\n        if (!formElement || faqFoundElement) return;\n\n        const faqTitle = document.createElement('div');\n        faqTitle.innerHTML =\n          '<h3 class=\"tm_tracking_form hi\">Tracking FAQ<\/h3>';\n        faqTitle.classList.add('faq-title');\n\n        const faqs = document.createElement('div');\n        faqs.classList.add('faqs', 'tm_tracking_form');\n\n        faqItems.forEach(function (item, index) {\n          const faqItem = document.createElement('div');\n          faqItem.classList.add('faq');\n\n          const faqButton = document.createElement('button');\n          faqButton.classList.add('faq-button');\n          faqButton.innerHTML = `<span style=\"margin-right: 36px;\">${item.q}<\/span>`;\n\n          const faqPanel = document.createElement('div');\n          faqPanel.classList.add('faq-panel');\n          faqPanel.innerHTML = `<div style=\"padding: 16px;\">${item.a}<\/div>`;\n\n          faqButton.addEventListener('click', function () {\n            faqItem.classList.toggle('faq-active');\n            if (faqPanel.style.maxHeight) {\n              faqPanel.style.maxHeight = null;\n            } else {\n              console.log(1, faqPanel.scrollHeight);\n              faqPanel.style.maxHeight = faqPanel.scrollHeight + 'px';\n            }\n          });\n\n          faqItem.appendChild(faqButton);\n          faqItem.appendChild(faqPanel);\n\n          faqs.appendChild(faqItem);\n        });\n\n        formElement.insertAdjacentElement('afterend', faqs);\n        formElement.insertAdjacentElement('afterend', faqTitle);\n      };\n\n      const addLookup = function () {\n        const formElement = document.querySelector('form.tm_tracking_form');\n        const lookupElement = document.querySelector('.lookup-title');\n\n        if (!formElement || lookupElement) return;\n\n        const triggerElement = document.createElement('p');\n        triggerElement.innerHTML = 'I do not know my order number';\n        triggerElement.classList.add('lookup-title', 'tm_tracking_form');\n\n        const overlayElement = document.createElement('div');\n        overlayElement.classList.add('lookup-overlay');\n\n        const popupElement = document.createElement('div');\n        popupElement.classList.add('lookup-popup');\n\n        const image = document.createElement('img');\n        const isMobile = document.body.clientWidth < 768;\n        image.setAttribute(\n          'src',\n          isMobile\n            ? 'https:\/\/cdn.shopify.com\/s\/files\/1\/0640\/1861\/2460\/files\/find_order_mobile.png'\n            : 'https:\/\/cdn.shopify.com\/s\/files\/1\/0640\/1861\/2460\/files\/find_order_1d.png'\n        );\n\n        const buttonElement = document.createElement('button');\n        buttonElement.innerHTML = 'Contact Us';\n        buttonElement.addEventListener('click', function () {\n          window.open('\/pages\/contact');\n        });\n\n        const xElement = document.createElement('span');\n        xElement.innerHTML =\n          '<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1\" viewBox=\"0 0 24 24\"><path d=\"M13 12l5-5-1-1-5 5-5-5-1 1 5 5-5 5 1 1 5-5 5 5 1-1z\"><\/path><\/svg>';\n\n        const close = function (e) {\n          if (\n            e.currentTarget !== e.target &&\n            e.target.closest('span') !== xElement\n          )\n            return;\n          document.body.style.overflow = '';\n          overlayElement.style.display = 'none';\n        };\n\n        const open = function () {\n          document.body.style.overflow = '';\n          overlayElement.style.display = 'flex';\n        };\n        xElement.addEventListener('click', close);\n        xElement.addEventListener('touchstart', close);\n        overlayElement.addEventListener('click', close);\n        overlayElement.addEventListener('touchstart', close);\n        triggerElement.addEventListener('click', open);\n        triggerElement.addEventListener('touchstart', open);\n\n        popupElement.appendChild(image);\n        popupElement.appendChild(buttonElement);\n        popupElement.appendChild(xElement);\n\n        overlayElement.appendChild(popupElement);\n\n        formElement.insertAdjacentElement('afterend', triggerElement);\n        document.body.appendChild(overlayElement);\n      };\n\n      const overwriteEmptyResult = function () {\n        const resultTitleElement = document.querySelector(\n          '.tm_tracking_result_title'\n        );\n        const resultElement = document.querySelector('.tm_tracking_result');\n\n        if (resultTitleElement && !resultElement) {\n          if (document.querySelector('.empty-result')) return;\n\n          const emptyElement = document.createElement('div');\n          emptyElement.classList.add('tm_tracking_result', 'empty-result');\n          emptyElement.innerHTML = `\n        <h1>Your delivery status is not available<\/h1>\n        <p>Please contact our customer service to help resolve this issue<\/p>\n      `;\n          resultTitleElement.insertAdjacentElement('afterend', emptyElement);\n        }\n\n        if (resultTitleElement) {\n          const faqTitle = document.querySelector('.faq-title');\n          const faq = document.querySelector('.faqs');\n          const content = document.querySelector('.tm_tracking_content');\n\n          if (!faqTitle || !faq || !content) return;\n          if (content.lastChild === faq) return;\n\n          content.appendChild(faqTitle);\n          content.appendChild(faq);\n        }\n      };\n\n      window.addEventListener('DOMContentLoaded', function () {\n        setInterval(() => {\n          addFaqs();\n          addLookup();\n          overwriteEmptyResult();\n        }, 500);\n      });\n    <\/script>","theme_code":"classic"},"status_config":{"blank":{"en_status":"","cn_status":"","status":"","img":"\/\/tms.trackingmore.net\/static\/images\/deliver_status\/blank.png"},"pending":{"status":0,"status_name":"Pending","img":"\/\/tms.trackingmore.net\/static\/images\/deliver_status\/pending.png"},"info_received":{"status":1,"status_name":"Info Received","img":"\/\/tms.trackingmore.net\/static\/images\/deliver_status\/info_received.png"},"transit":{"status":2,"status_name":"In Transit","img":"\/\/tms.trackingmore.net\/static\/images\/deliver_status\/transit.png"},"pickup":{"status":3,"status_name":"Out for Delivery","img":"\/\/tms.trackingmore.net\/static\/images\/deliver_status\/pickup.png"},"delivered":{"status":4,"status_name":"Delivered","img":"\/\/tms.trackingmore.net\/static\/images\/deliver_status\/delivered.png"},"expired":{"status":5,"status_name":"Expired","img":"\/\/tms.trackingmore.net\/static\/images\/deliver_status\/expired.png"},"undelivered":{"status":6,"status_name":"Failed Attempt","img":"\/\/tms.trackingmore.net\/static\/images\/deliver_status\/undelivered.png"},"exception":{"status":7,"status_name":"Exception","img":"\/\/tms.trackingmore.net\/static\/images\/deliver_status\/exception.png"}},"shop":"giftago-pod.myshopify.com","status_key_arr":[1001,1100],"themeArr":{"Dawn":{"class":{"button":"","input":"field__input tr_Dawn_input","a":"tr_a_style1"}}},"ModCss":"\/* Dawn theme css online *\/\r\n.tr_Dawn_input {padding: .8rem 1.5rem !important;}\r\n.tr_a_style1 {color: inherit;text-decoration: none;}"},"tracking":[]}