Last active
August 13, 2024 05:22
-
-
Save raselupm/af177f5475cb7dff2f71cfcfef5e09f0 to your computer and use it in GitHub Desktop.
BV checkout scripts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script> | |
window.dataLayer = window.dataLayer || []; | |
</script> | |
<script> | |
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({"gtm.start": | |
new Date().getTime(),event:"gtm.js"});var f=d.getElementsByTagName(s)[0], | |
j=d.createElement(s),dl=l!="dataLayer"?"&l="+l:"";j.async=true;j.src= | |
"https://www.googletagmanager.com/gtm.js?id="+i+dl;f.parentNode.insertBefore(j,f); | |
})(window,document,"script","dataLayer","GTM-NQ49BKQ"); | |
</script> | |
<!-- End Google Tag Manager --> | |
<script id="elevar-gtm-suite-config" type="application/json">{"gtm_id": "GTM-NQ49BKQ", "event_config": {"cart_reconcile": true, "cart_view": true, "checkout_complete": true, "checkout_step": true, "collection_view": true, "product_add_to_cart": false, "product_add_to_cart_ajax": true, "product_remove_from_cart": true, "product_select": true, "product_view": true, "search_results_view": true, "user": true, "save_order_notes": true}, "gtm_suite_script": "https://cdn.shopify.com/s/files/1/0667/4766/2632/files/Shopify_Datalayer.js", "consent_enabled": false}</script> | |
{% if first_time_accessed %} | |
<script> | |
(() => { | |
const configElement = document.getElementById("elevar-gtm-suite-config"); | |
if (!configElement) { | |
console.error("Elevar Data Layer: Config element not found"); | |
return; | |
} | |
const config = JSON.parse(configElement.textContent); | |
const script = document.createElement("script"); | |
script.type = "text/javascript"; | |
script.src = config.gtm_suite_script; | |
script.onerror = () => { | |
console.error("Elevar Data Layer: JS script failed to load"); | |
}; | |
script.onload = async () => { | |
if (!window.ElevarGtmSuite) { | |
console.error("Elevar Data Layer: `ElevarGtmSuite` is not defined"); | |
return; | |
} | |
const cartData = { | |
attributes: {{- cart.attributes | json -}}, | |
cartTotal: "{{- cart.total_price | times: 0.01 | json -}}", | |
currencyCode: {{- cart.currency.iso_code | json -}}, | |
items: [ | |
{%- for line_item in cart.items -%} | |
{ | |
{%- if line_item.sku != blank -%} | |
id: {{- line_item.sku | json -}}, | |
{%- else -%} | |
id: "{{- line_item.product_id | json -}}", | |
{%- endif -%} | |
name: {{- line_item.product.title | json -}}, | |
brand: {{- line_item.vendor | json -}}, | |
category: {{- line_item.product.type | json -}}, | |
variant: {{- line_item.variant.title | json -}}, | |
price: "{{- line_item.final_price | times: 0.01 | json -}}", | |
position: {{- forloop.index0 -}}, | |
quantity: "{{- line_item.quantity | json -}}", | |
productId: "{{- line_item.product_id | json -}}", | |
variantId: "{{- line_item.variant_id -}}", | |
compareAtPrice: "{{- line_item.variant.compare_at_price | times: 0.01 | json -}}", | |
image: "{{- line_item.image | img_url -}}" | |
}, | |
{%- endfor -%} | |
] | |
} | |
; | |
await window.ElevarGtmSuite.handlers.cartAttributesReconcile( | |
cartData, | |
config.event_config.save_order_notes, | |
config.consent_enabled | |
); | |
if (config.event_config.user) { | |
const data = { | |
{%- if checkout -%} | |
cartTotal: "{{- checkout.total_price | times: 0.01 | json -}}", | |
currencyCode: {{- checkout.currency | json -}}, | |
{%- else -%} | |
cartTotal: "{{- cart.total_price | times: 0.01 | json -}}", | |
currencyCode: {{- cart.currency.iso_code | json -}}, | |
{%- endif -%} | |
{%- if customer -%} | |
customer: { | |
id: "{{- customer.id | json -}}", | |
email: {{- customer.email | json -}}, | |
firstName: {{- customer.first_name | json -}}, | |
lastName: {{- customer.last_name | json -}}, | |
phone: {{- customer.phone | json -}}, | |
city: {{- customer.default_address.city | json -}}, | |
zip: {{- customer.default_address.zip | json -}}, | |
address1: {{- customer.default_address.address1 | json -}}, | |
address2: {{- customer.default_address.address2 | json -}}, | |
country: {{- customer.default_address.country | json -}}, | |
province: {{- customer.default_address.province | json -}}, | |
provinceCode: {{- customer.default_address.province_code | json -}}, | |
orderCount: "{{- customer.orders_count | json -}}", | |
totalSpent: "{{- customer.total_spent | times: 0.01 | json -}}", | |
tags: {{- customer.tags | join: ', ' | json -}} | |
} | |
{%- endif -%} | |
}; | |
window.ElevarGtmSuite.handlers.user(data); | |
} | |
{%- if checkout -%} | |
{%- if checkout.attributes["_elevar_visitor_info"] == blank -%} | |
if (config.event_config.save_order_notes) { | |
const data = {%- if checkout -%} | |
{ | |
checkoutId: {{- checkout.id | json -}} | |
} | |
{%- endif -%} | |
; | |
window.ElevarGtmSuite.handlers.storeOrderNotesOffsite(data); | |
} | |
{%- endif -%} | |
if (config.event_config.checkout_complete) { | |
const data = {%- if checkout -%} | |
{ | |
currencyCode: {{- checkout.currency | json -}}, | |
actionField: { | |
{%- if order.id -%} | |
id: {{- order.id | json -}}, | |
{%- else -%} | |
id: {{- checkout.id | json -}}, | |
{%- endif -%} | |
{%- if order.name -%} | |
order_name: {{- order.name | json -}}, | |
{%- endif -%} | |
affiliation: {{- shop.name | json -}}, | |
revenue: "{{- checkout.total_price | times: 0.01 | json -}}", | |
tax: "{{- checkout.tax_price | times: 0.01 | json -}}", | |
shipping: "{{- checkout.shipping_price | times: 0.01 | json -}}", | |
{% if checkout.discount_applications %} | |
coupon: {{ checkout.discount_applications[0].title | json }}, | |
{% endif %} | |
{%- if order.subtotal_price -%} | |
subTotal: "{{- order.subtotal_price | times: 0.01 | json -}}", | |
{%- elsif checkout.subtotal_price -%} | |
subTotal: "{{- checkout.subtotal_price | times: 0.01 | json -}}", | |
{%- endif -%} | |
productSubTotal: "{{- checkout.line_items_subtotal_price | times: 0.01 | json -}}", | |
discountAmount: "{{- checkout.discounts_amount | times: 0.01 | json -}}" | |
}, | |
{%- if checkout.customer -%} | |
customer: { | |
id: "{{- checkout.customer.id | json -}}", | |
email: {{- checkout.email | json -}}, | |
firstName: {{- checkout.billing_address.first_name | json -}}, | |
lastName: {{- checkout.billing_address.last_name | json -}}, | |
{%- if checkout.customer.phone -%} | |
phone: {{- checkout.customer.phone | json -}}, | |
{%- elsif checkout.billing_address.phone -%} | |
phone: {{- checkout.billing_address.phone | json -}}, | |
{%- else -%} | |
phone: {{- checkout.shipping_address.phone | json -}}, | |
{%- endif -%} | |
city: {{- checkout.billing_address.city | json -}}, | |
zip: {{- checkout.billing_address.zip | json -}}, | |
address1: {{- checkout.billing_address.address1 | json -}}, | |
address2: {{- checkout.billing_address.address2 | json -}}, | |
country: {{- checkout.billing_address.country | json -}}, | |
province: {{- checkout.billing_address.province | json -}}, | |
provinceCode: {{- checkout.billing_address.province_code | json -}}, | |
orderCount: "{{- checkout.customer.orders_count | json -}}", | |
totalSpent: "{{- checkout.customer.total_spent | times: 0.01 | json -}}", | |
tags: {{- checkout.customer.tags | json -}} | |
}, | |
{%- endif -%} | |
items: [ | |
{%- for line_item in checkout.line_items -%} | |
{ | |
id: {{- line_item.sku | json -}}, | |
name: {{- line_item.product.title | json -}}, | |
brand: {{- line_item.vendor | json -}}, | |
category: {{- line_item.product.type | json -}}, | |
variant: {{- line_item.variant.title | json -}}, | |
price: "{{- line_item.final_price | times: 0.01 | json -}}", | |
quantity: "{{- line_item.quantity | json -}}", | |
productId: "{{- line_item.product_id | json -}}", | |
variantId: "{{- line_item.variant_id -}}", | |
image: "{{- line_item.image | img_url -}}" | |
}, | |
{%- endfor -%} | |
], | |
landingSite: {{- checkout.landing_site | json -}} | |
} | |
{%- endif -%} | |
; | |
window.ElevarGtmSuite.handlers.checkoutComplete(data); | |
} | |
{%- endif -%} | |
}; | |
document.body.appendChild(script); | |
})(); | |
</script> | |
{% endif %} | |
<!-- Google Tag Manager (noscript) --> | |
<noscript> | |
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NQ49BKQ" height="0" width="0" style="display:none;visibility:hidden"></iframe> | |
</noscript> | |
<!-- End Google Tag Manager (noscript) --> | |
<!-- Entaice order-processing script --> | |
<script type="text/javascript"> | |
window.addEventListener('load', function() { | |
window.dataLayer = window.dataLayer || []; | |
function getThemeDetails() { | |
{% if theme %} | |
return [{{ theme.id }}, "{{ theme.name | escape }}"]; | |
{% else %} | |
return [-1, "no name"]; | |
{% endif %} | |
} | |
function getCustomerDetails() { | |
{% if customer %} | |
return [{{ customer.id }}, "{{ customer.email | escape }}"]; | |
{% else %} | |
return [-1, "no email"]; | |
{% endif %} | |
} | |
var themeDetails = getThemeDetails(); | |
var customerDetails = getCustomerDetails(); | |
window.dataLayer.push({ | |
entaice_gen: { | |
shop_domain: {% if shop.permanent_domain %} "{{ shop.permanent_domain | escape }}" {% else %} "" {% endif %}, | |
theme_id: themeDetails[0], | |
theme_name: themeDetails[1], | |
page_type: "Thank You Page", | |
customer_id: customerDetails[0], | |
customer_email: customerDetails[1] | |
} | |
}); | |
{% if order %} | |
var lineItems = {{ order.line_items | json }}.map(function(item, idx) { | |
return { | |
id: item.id, | |
product_id: item.product.id, | |
product_title: (item.product.title || "").toString(), | |
variant_id: item.variant_id, | |
variant_title: (item.variant.title || "").toString(), | |
sku: (item.sku || "").toString(), | |
quantity: item.quantity, | |
price: item.line_price * 0.01, | |
properties: (("properties" in item ? item.properties : []) || []), | |
option_1: (item.variant.option1 || "").toString(), | |
option_2: (item.variant.option2 || "").toString(), | |
option_3: (item.variant.option3 || "").toString(), | |
inventory_quantity: item.variant.inventory_quantity, | |
discounts: item.applied_discounts | |
}; | |
}); | |
window.dataLayer.push({ | |
entaice_order: { | |
has_data: 1, | |
id: {{ order.order_number }}, | |
created_at: "{{ order.created_at }}", | |
email: "{{ order.email }}", | |
subtotal_price: {{ order.subtotal_price | times: 0.01 }}, | |
shipping_price: {{ order.shipping_price | times: 0.01 }}, | |
tax_price: {{ order.tax_price | times: 0.01 }}, | |
line_items: JSON.stringify(lineItems) | |
}, | |
event: "entaice_order" | |
}); | |
{% else %} | |
window.dataLayer.push({ | |
entaice_order: { | |
has_data: 0 | |
}, | |
event: "entaice_order" | |
}); | |
{% endif %} | |
}, false); | |
</script> | |
<!-- End Entaice order-processing script --> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment