# 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

1. In BigCommerce, go to **Storefront → Script Manager**.
2. 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:

```html
<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

1. Open your storefront in a new tab (not logged into admin).
2. Hard-refresh the page.
3. 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.

```html
<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>
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.zigpoll.com/integrations/bigcommerce.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
