Bigcommerce
Add Zigpoll to BigCommerce with Script Manager
Want Zigpoll running on your BigCommerce store without installing an app? Use BigCommerce’s built-in Script Manager to paste a small embed snippet. This takes 5–10 minutes and works across any Stencil theme.
What you’ll need
Your Zigpoll Account ID (find it in Zigpoll → Settings → Installation).
BigCommerce store admin access.
Step 1: Open Script Manager
In BigCommerce, go to Storefront → Script Manager.
Click Create a Script.
Step 2: Configure the script
Fill the form like this:
Name:
Zigpoll Embed
Description:
Loads Zigpoll widget on site
(optional)Location on page: Footer (recommended)
Select pages where script will be added:
All Pages for a sitewide survey/prompt, or
Order Confirmation Page for post-purchase surveys only
Script type: Script (the “script contents” option, not a URL)
Step 3: Paste the Zigpoll embed code
In Script, paste:
<script type='application/javascript'>
;(function () {
window.Zigpoll = {
accountId: 'YOUR_ACCOUNT_ID'
};
var script = document.createElement("script");
script.type = "text/javascript";
script.charset = "utf-8";
script.src = "//cdn.zigpoll.com/static/js/main.js";
script.async = true;
document.head.appendChild(script);
}());
</script>
Click Save.
Step 4: Verify on your storefront
Open your storefront in a new tab (not logged into admin).
Hard-refresh the page.
You should see your Zigpoll survey according to how you’ve targeted it (sitewide or post-purchase).
Targeting options (what to choose)
All Pages: Great for on-site polls (exit intent, timed popups, specific pages).
Order Confirmation Page: Ideal for post-purchase NPS/CSAT, product-fit, or attribution surveys. (Choose this page in Script Manager to avoid showing surveys to non-buyers.)
Tip: You can create multiple scripts if you want separate behavior (e.g., one sitewide + one order confirmation).
(Optional) Pass order info on the confirmation page
If you install the script only on the Order Confirmation Page, you can attach touch metadata that’s commonly present without depending on a specific theme. This information helps segment responses in Zigpoll and provides additional data for future analysis.
<script>
// Fetch API to get product, order and customer details
var orderId = '{{ checkout.order.id }}';
var api = '/api/storefront/orders/'+ orderId;
fetch(api)
.then((res) => res.json())
.then((order)=>{
var orderValue = order.orderAmount;
var email = order.billingAddress.email;
var phone = order.billingAddress.phone;
var firstName = order.billingAddress.firstName;
var lastName = order.billingAddress.lastName;
var city = order.billingAddress.city;
var region = order.billingAddress.stateOrProvince;
var country = order.billingAddress.country;
var countryCode = order.billingAddress.countryCode;
var address = order.billingAddress.address1+' '+order.billingAddress.address2;
var postalCode = order.billingAddress.postalCode;
var lineItems = [];
if (order.lineItems) {
Object.keys(lineItems).forEach(function (key) {
lineItems[key].forEach(function (items) {
items.forEach(function (item) {
lineItems.push(item.name);
})
})
})
if (lineItems.length) {
lineItems = lineItems.join(', ');
}
}
// Prepare Zigpoll Variables
var accountId = 'YOUR_ACCOUNT_ID';
window.Zigpoll = {
accountId: accountId
};
window.Zigpoll.user = {
id: email,
metadata: {
email: email,
phone: phone,
name: [firstName, lastName].join(' ').trim(),
city: city,
region: region,
country: country,
countryCode: countryCode,
address: address,
postalCode: postalCode
}
}
window.Zigpoll.metadata = {
orderValue: orderValue,
orderId: orderId,
lineItems: lineItems
}
var precursorEvent = window.Zigpoll.precursorEvent || {};
precursorEvent.type = 'bigcommerce-order-placed';
precursorEvent.uniqueId = ''+orderId;
// Load Zigpoll Script
var script = document.createElement("script");
script.type = "text/javascript";
script.charset = "utf-8";
script.src = '//cdn.zigpoll.com/static/js/main.js';
document.head.appendChild(script);
});
</script>
Last updated