# Live Shopping Source: https://docs.videowise.com/custom-events-ls The Videowise Live Shopping now supports interception and tracking of custom events. This provides customers with a more comprehensive view of user interactions with video content To intercept and handle these custom events, customers can utilize the `window.addEventListener` method. Below is an example of how to listen for these events: ```javascript Code Block Example window.addEventListener("videowiseLiveOnInteraction", (event) => { console.log(event.detail.interactionType); // for example mute_player console.log(event.detail); // return Data from event }); ``` ## Events ### videowiseLiveOnPlay Triggered when the live stream is playing. * `clientTS` * `currentTime` * `device` * `eventType` * `interactionType = resume_player` * `isLive` * `lsId` * `organisationId` * `siteId` * `uid` * `url` * `videoElapsedMinutes` * `videoElapsedSeconds` ### videowiseLiveOnStop Triggered when the live stream is closed. * `clientTS` * `currentTime` * `device` * `eventType` * `interactionType = close_player` * `isLive` * `lsId` * `organisationId` * `siteId` * `uid` * `url` * `videoElapsedMinutes` * `videoElapsedSeconds` ### videowiseLiveOnInteraction Triggered when a user executes a specific interaction during the live stream. * `clientTS` * `currentTime` * `device` * `eventType` * `interactionType` * `isLive` * `lsId` * `organisationId` * `siteId` * `uid` * `url` * `videoElapsedMinutes` * `videoElapsedSeconds` The interactonType can be: * `mute_player` * `unmute_player` * `pause_player` * `resume_player` * `like_reaction` * `share` * `add_to_calendar` * `send_chat` * `minimize_player` * `maximize_player` * `show_product_list` * `hide_product_list` * `product_click` * `add_to_cart` * `checkout` * `show_cart` * `hide_cart` * `replay` * `progress` If `interactionType = share` then the event will contain in addition: * `socialShare` If `interactionType = product_click | add_to_cart` then the event will contain in addition: * `item` (which is data about product from the live stream) # Widgets Source: https://docs.videowise.com/custom-events-widget The Videowise Widget now supports interception and tracking of custom events. This provides customers with a more comprehensive view of user interactions with video content To intercept and handle these custom events, customers can utilize the `window.addEventListener` method. Below is an example of how to listen for these events: ```javascript Code Block Example window.addEventListener("videowiseVideoClick", (event) => { // Your code here }); ``` ```javascript Code Block Example window.addEventListener("videowiseVideoClick", (event) => { console.log("videowiseVideoClick executed"); console.log(event.detail); // return Data from event }); ``` ## Events ### videowiseProductAddToCart Triggered when a user adds a product to the cart. * productName * productId * variantId * qty * price * currencyCode * videoTitle * videoId * widgetId * deviceType * url ### videowiseVideoClick Triggered when a user clicks on a video. * videoTitle * videoId * widgetId * deviceType * url ### videowiseVideoStart Triggered when a video played more than 3 seconds. * videoTitle * videoId * widgetId * deviceType * url ### videowiseVideoFull Triggered when played more than 80% of the video. * videoTitle * videoId * widgetId * deviceType * url ### videowiseVideoSwipe Triggered when a user swipes a video. * videoTitle * videoId * widgetId * deviceType * url ### videowisePlayerClose Triggered when a user closes the player. * videoTitle * videoId * widgetId * deviceType * url ### videowiseVideoSoundOn Triggered when a user turns on the sound of the video. * videoTitle * videoId * widgetId * deviceType * url ### videowiseVideoSoundOff Triggered when a user turns off the sound of the video. * videoTitle * videoId * widgetId * deviceType * url ### videowiseProductClick Triggered when a user clicks on a shoppable product. * productId * productName * videoTitle * videoId * widgetId * deviceType * url ### videowiseProductBuyNow Triggered when a user clicks on the buy now button of a shoppable product. * productId * productName * variantId * qty * price * currencyCode * videoTitle * videoId * widgetId * deviceType * url ### videowiseVideoBounce Triggered when a user close/swipe the video without playing it, noted video played less than 3 seconds. * videoTitle * videoId * widgetId * deviceType * url ### videowiseDataReady Triggered when the widget has all the necessary data and is ready for rendering * widgetIds * deviceType * url ### videowiseCampaignReady Triggered after campaign rendered * campaignId * deviceType * url ### videowiseCampaignCheckout Triggered before redirecting the user to the Shopify checkout page * campaignId * deviceType * url * items \[array] * productName * productId * qty * price * currencyCode ### videowiseCtaClick Triggered when a user clicks on a call to action button. * videoTitle * videoId * widgetId * deviceType * buttonClicked (text in the button) * url # Widget re-rendering Source: https://docs.videowise.com/init How to manually trigger the rendering of widgets. ### Rendering floating widgets (quizes, founder videos, etc) This applies to all types of widgets that don't require a HTML container. ```js Floating widgets initVideowise(); ``` ### Rendering inline widgets (stories, carousels, grids, etc) This applies to all types of widgets that do require a HTML container. #### Widgets on a product page ```js Inline widgets on product page initVideowiseBulk({ shop: 'your-store.myshopify.com'; widgetIds: ['widget-id']; productId: 'shopify product id'; device: 'DESKTOP' | 'MOBILE'; //optional }) ``` #### Widgets on a non-product page ```js Inline widgets on non-product page initVideowiseBulk({ shop: 'your-store.myshopify.com'; widgetIds: ['widget-id']; url: 'https://your-store.myshopify.com/your/url'; device: 'DESKTOP' | 'MOBILE'; //optional }) ``` # Installation Source: https://docs.videowise.com/installation Learn how to install the Videowise Widget on your site. ### Videowise Widget Code Add the following script at the head on your site: ```html Code Block Example ``` For Shopify v2 users the script is added automatically using Videowise app. # Live stream rendering Source: https://docs.videowise.com/live-stream-rendering How to manually trigger the live stream pop-up. ### Opening the live stream player with Videowise's global helper function Videowise provides a helper function, available in the global window object, that allows the opening of the live stream player from any page on your website. The function can be attached to onClick events and receives a single parameter, the live stream ID, which can be copied from the Videowise application. ```js Launch live stream window.videowiseLaunchLive("live-stream-id-here"); ``` ### Auto-launching the live stream player via URL parameter You can now automatically open the Videowise live stream player using the `vwLsId` query parameter. When this parameter is present in the page URL and contains a valid live stream ID, the player will launch automatically without requiring any user interaction. This makes it easy to share direct links that trigger live playback on load. ```js Auto-launching https://example.com/?vwLsId=68026acfc5be1a0058e6ce0a ``` #### 1. Go to live shopping ![Go to live shopping](https://mintlify.s3.us-west-1.amazonaws.com/videowise/images/image-1.png) #### 2. Open the live show ![Open the live show](https://mintlify.s3.us-west-1.amazonaws.com/videowise/images/image-2.png) #### 3. Copy the ID from the URL ![Copy the ID from the URL](https://mintlify.s3.us-west-1.amazonaws.com/videowise/images/image-3.png) # Shopify Source: https://docs.videowise.com/pixel Learn how to install the Videowise Widget on your site. ### Customer Events Pixel Code If your Shopify version supports web pixels go to "Settings -> Customer events" and click the "Add custom pixel". Give the new pixel a name like "Videowise Pixel" and add the following pixel code:
```js Customer Events Pixel Code // VIDEOWISE TRACKING PIXEL const PIXEL_VERSION = "1.7"; const UID_COOKIE_NAME = "reeview_uid"; const CAMPAIGN_COOKIE_NAME = "reeview_campaign"; const LS_COOKIE_NAME = "reeview_lsid"; const REFERRAL_COOKIE_NAME = "reeview_referral"; const WIDGET_EXPERIMENT_COOKIE_NAME = "REEVIEW_SESSION"; function setSessionCookie(name, value) { document.cookie = `${name}=${value}; path=/`; } function getCookie(name) { let cookieArr = document.cookie.split(";"); for (let i = 0; i < cookieArr.length; i++) { let cookiePair = cookieArr[i].split("="); if (name === cookiePair[0].trim()) { return decodeURIComponent(cookiePair[1]); } } return null; } function deleteCookie(name) { document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; } function objectToQueryString(obj) { let result = ""; const keys = Object.keys(obj); for (let i = 0; i < keys.length; i++) { const key = keys[i]; result += `${key}=${obj[key]}`; if (i < keys.length - 1) { result += "&"; } } return result; } const getDeviceType = () => { const size = 1024; const isDesktop = window.screen.width > size; return isDesktop ? "DESKTOP" : "MOBILE"; }; function VW(orderId, orderTotal, orderCurrency, orderItems, shop) { if (getCookie(UID_COOKIE_NAME) && shop && orderId && orderTotal) { const params = { uid: getCookie(UID_COOKIE_NAME), deviceType: getDeviceType(), orderId, shop, checkout_type: "SHOPIFY", order_total: orderTotal, currency: orderCurrency, order_items: orderItems, campaignId: getCookie(CAMPAIGN_COOKIE_NAME), lsId: getCookie(LS_COOKIE_NAME), clientTs: new Date().toISOString(), experiment: getCookie(WIDGET_EXPERIMENT_COOKIE_NAME), referral: getCookie(REFERRAL_COOKIE_NAME), }; const trackingUrl = `https://api.videowise.com/tracking/pixel?${objectToQueryString( params )}`; fetch(trackingUrl).then((res) => { console.log( `Videowise pixel -- order -- (version: ${PIXEL_VERSION}) executed correctly` ); deleteCookie(CAMPAIGN_COOKIE_NAME); }); } } analytics.subscribe("checkout_completed", (event) => { const checkout = event.data.checkout; VW( checkout.order.id, checkout.totalPrice.amount, checkout.currencyCode, checkout.lineItems.length, event.context.window.location.host ); }); analytics.subscribe("product_added_to_cart", (event) => { const productRefId = event.data.cartLine.merchandise.product.id; const shop = event.context.window.location.host; const referral = getCookie(REFERRAL_COOKIE_NAME); if (!referral) return; // const params = { uid: getCookie(UID_COOKIE_NAME), deviceType: getDeviceType(), shop, campaignId: getCookie(CAMPAIGN_COOKIE_NAME), lsId: getCookie(LS_COOKIE_NAME), clientTs: new Date().toISOString(), experiment: getCookie(WIDGET_EXPERIMENT_COOKIE_NAME), referral: referral, productRefId: productRefId, }; const trackingUrl = `https://api.videowise.com/tracking/cart/pixel?${objectToQueryString( params )}`; fetch(trackingUrl).then((res) => { console.log( `Videowise pixel -- cart -- (version: ${PIXEL_VERSION}) executed correctly` ); }); }); analytics.subscribe("page_viewed", (event) => { if (!event.context.window.location.search.includes("videowise_campaign_id")) { console.log("Videowise no campaign cookie detected"); return; } const vars = new URLSearchParams(event.context.window.location.search); const campaignId = vars.get("videowise_campaign_id"); if (campaignId) { setSessionCookie(CAMPAIGN_COOKIE_NAME, campaignId); } }); ``` You don't need to create a custom pixel if the Videowise Pixel was automatically created and shows as "Connected" ### Checkout Page Pixel Code If your Shopify version does not support web pixels, you have to add the following code in the "Settings -> Checkout -> Order status page"
If your Shopify store uses a headless theme, you should execute the pixel code after the orderCreate mutation. ```js Order status / Headless implementation pixel code ``` Make sure that the variables needed for the pixel are set correctly, before the function is invoked. orderId (String): your order id {" "} orderTotal (Number): the total order amount, including taxes and shipping (for Shopify stores, the order total should be divided by 100){" "} orderCurrency (String): the order currency, 3 letters ISO code (USD,GBP,JPY,etc) orderItems (Number): number of items in the order shop (String): your shops domain (mystore.myshopify.com) # Magento Source: https://docs.videowise.com/pixel/magento Learn how to install the Videowise Order Tracking Pixel on your Magento store. # Pixel Integration for Magento ## Introduction This document provides instructions on how to integrate Order Tracking Pixel with Magento. Our Magento implementation includes the Order Tracking Pixel pre-installed on the default Thank you page. If you are utilizing the default Thank you page, no further action is required. ## Prerequisites * Magento 2.x installed * Admin access to your Magento backend files * Videowise Pixel Tracking activated from Videowise Application ## Integration Options There are two options to integrate the Order Tracking Pixel on other pages in your Magento store: ### Option 1: Using Magento XML Frontend Extensions You can add our already defined PHTML block to your preferred location using Magento XML frontend extensions. This method involves updating your layout XML file to include the tracking pixel block. Here is an example: ```xml ``` Replace `your-container-name` with the appropriate container name where you want the tracking pixel to be placed. ## Option 2: Adding Custom JavaScript Code Alternatively, you can add custom JavaScript code to your preferred location after a successful order. You will need to complete the necessary fields in the script. Here is an example: ```JavaScript ``` Make sure to replace the placeholders (`{{ ... }}`) with the actual values from your Magento store. All actual values can be retrieved manually with custom code or using our PHP public method `getOrderData` from `Videowise\VideowiseApp\Block\VideowiseTrackingPixel` which will return the following array: ```PHP [ 'orderId' => 123, // Last Order ID from User Session 'orderTotal' => 123, // Order Total 'orderCurrency' => 'USD', // Order Currency 'orderItemsTotal' => 2, // Number of Order Products 'storeId' => 1, // Order Store ID ] ``` ## Conclusion You have successfully integrated Pixel with your Magento store. For further customization and advanced features, refer to our [FAQ page](https://videowise.com/faq). # Overview Source: https://docs.videowise.com/pixel/overview Overview This page provides an overview of the Order Tracking Pixel for various e-commerce platforms. Click on the links below to learn more about the implementation for each platform. * [Shopify](/pixel) * [Magento](/pixel/magento) * [SFCC](/pixel/sfcc) # Salesforce Commerce Cloud Source: https://docs.videowise.com/pixel/sfcc Learn how to install the Videowise Order Tracking Pixel on your SFCC instance. # Pixel Integration for SFCC ## Introduction This document provides instructions on how to integrate Order Tracking Pixel with SFCC. Our Salesforce Commerce Cloud implementation includes the Tracking Pixel pre-installed on the default Order Confirmation Page. If you are utilizing the default Order Confirmation Page, no further action is required. ## Prerequisites * Salesforce Commerce Cloud instance * Admin access to your Salesforce Commerce Cloud instance * Videowise Pixel Tracking activated from Videowise Application * Videowise Cartridge in your Business Manager Cartridge path ## Integration Options There are two options to integrate the Order Tracking Pixel on other pages on your SFCC instance: ### Option 1: Adding our pre-defined ISML code to your files You can add our already pre-defined ISML code to your preferred location. This method involves updating your ISML file to include our code. For example let's modify the `template/default/checkout/confirmation/confirmation.isml`: `dw.order.Order` object must be present in the PipelineDictionary (pdict) as key `order` 1. You will need to add our `` to the top of the file right under your decorate template (``) ```HTML Videowise SFCC var shouldTrackPurchase = dw.system.Site.getCurrent().getCustomPreferenceValue('videoWiseEnabled'); var trackingAPIUrl = dw.system.Site.getCurrent().getCustomPreferenceValue('videowiseTrackingApiUrl'); if (shouldTrackPurchase) { assets.addJs('/js/videowisePurchaseTracking.js'); } ``` 2. Add our `` right before decorator ends ```HTML ``` Order Tracking Pixel should now be available after the next successful order. ## Option 2: Adding Custom JavaScript Code Alternatively, you can add custom JavaScript code to your preferred location after a successful order. You will need to complete the necessary fields in the script. Here is an example: ```JavaScript ``` Make sure to replace the placeholders (`{{ ... }}`) with the actual values from your SFCC instance. All actual values can be retrieved manually with custom code or using our Javascript Helper public method `getTrackingPixelData` from `cartridge/scripts/helpers/videoWiseHelpers.js` which will return the following object: ```JavaScript { grandTotal: 123, // Order Grand total orderNumber: 'ODEV-123', // Order Number productQuantityTotal: 5, // Order Total products quantity currency: 'USD', // Order Currency Code shop: 'https://instanceURL.com' // Order Instance URL } ``` Order Tracking Pixel should now be available after the next successful order. ## Conclusion You have successfully integrated Pixel with your SFCC instance. For further customization and advanced features, refer to our [FAQ page](https://videowise.com/faq). # Authentication Source: https://docs.videowise.com/product-api/authentication Learn how to authenticate with the Product API. All endpoints in the **Product API** require authentication via an access token, your site ID and your site type. This token must be included in the headers of every request. *** ## How to get your X-Videowise-Access-Token ## How to Authenticate 1. Obtain your access token from your Videowise account settings. Go to Settings -> Stores -> Click **View license key** 2. Obtain your siteId from Settings -> Stores -> Click **Edit** on your store and copy your siteId 3. Choose one of the site types which are **`Salesforce`** , **`Magento`** and **Custom** 4. Include the token in the `X-Videowise-Access-Token` header of your request. 5. Include `siteId` and `siteType` in your request body. Example: ```plaintext X-Videowise-Access-Token: ``` ## Error Responses If the token is missing or invalid, the API will return a **401 Unauthorized** error: ```JavaScript { "message": "Missing X-Videowise-Access-Token header" } ``` If siteId or siteType is missing, the API will return a **400 Bad Request** with one of the following errors error: ```JavaScript { "message": "Missing siteId in request body" } ``` ```JavaScript { "message": "Missing siteType in request body" } ``` # Endpoints Source: https://docs.videowise.com/product-api/endpoints This API handles operations related to importing, retrieving, and deleting products in bulk or individually. ## Base URL `https://api.videowise.com` *** ### Bulk Product Import #### **POST** `/external/product/v1/bulk` Imports or modifies list of products into the system. #### Headers | Key | Type | Required | Description | | -------------------------- | ------ | -------- | -------------------------------------- | | `X-Videowise-Access-Token` | String | Yes | Access token to authorize the request. | #### Request Body * **siteId** (string, required): The site ID to associate with the products. * **siteType** (string, required): The type of site to associate with the products. * **products** (array of **Product Object**, required): List of products to be imported. **Product Object**: | Field | Type | Required | Description | | ---------------- | --------- | -------- | ------------------------------------- | | `id` | String | Yes | The unique identifier of the product. | | `sku` | String | Yes | The SKU of the product. | | `title` | String | Yes | The name of the product. | | `description` | String | No | The description of the product. | | `price` | Number | No | The price of the product. | | `price_min` | Number | No | The minimum price of the product. | | `price_max` | Number | No | The maximum price of the product. | | `available` | Boolean | Yes | Whether the product is available. | | `images` | \[String] | No | List of image URLs for the product. | | `featured_image` | String | Yes | The image URL of the product. | | `url` | String | Yes | The URL of the product. | #### Example Request ```json { "siteId": "YourSiteID", "siteType": "Salesforce", "products": [ { "id": "008884303989", "sku": "008884303989", "title": "Platinum Blue Stripes Easy Care Fitted Shirt", "description": "An elegant fitted shirt with blue stripes.", "price": 35, "price_min": 35, "price_max": 35, "available": true, "images": ["https://example.com/image1.jpg"], "featured_image": "https://example.com/image1.jpg", "url": "https://example.com/product1" }, { "id": "008884303990", "sku": "008884303990", "title": "Test Shirt", "description": "A test product.", "price": 60, "available": true, "featured_image": "https://example.com/image2.jpg", "url": "https://example.com/product2" } ] } ``` #### Response | Status | Description | | ------ | ------------------------------- | | `200` | Products imported successfully. | | `400` | Bad request or site not found. | | `401` | Unauthorized access. | *** ### Bulk Product Import CSV #### **POST** `/external/product/v1/bulk/csv` Imports or modifies list of products into the system. #### Headers | Key | Type | Required | Description | | -------------------------- | ------ | -------- | -------------------------------------- | | `X-Videowise-Access-Token` | String | Yes | Access token to authorize the request. | #### Request Body * **siteId** (string, required): The site ID to associate with the products. * **siteType** (string, required): The type of site to associate with the products. * **csvContent** (string, required): CSV Content. **CSV Content**: The CSV content should be formatted as follows: * **First row**: Headers containing the field names (id, sku, title, description, price, price\_min, price\_max, available, images, featured\_image, url) * **Following rows**: Product data corresponding to each **Product Object** field **CSV Format**: ``` id,sku,title,description,price,price_min,price_max,available,images,featured_image,url 008884303989,008884303989,Platinum Blue Stripes Easy Care Fitted Shirt,An elegant fitted shirt with blue stripes,35,35,35,true,https://example.com/image1.jpg,https://example.com/image1.jpg,https://example.com/product1 008884303990,008884303990,Test Shirt,A test product.,60,60,60,true,["https://example.com/image1.jpg","https://example.com/image2.jpg"],https://example.com/image1.jpg,https://example.com/product2 ``` **Field Requirements**: Same as the **Product Object** defined in the [Bulk Product Import](#bulk-product-import) section. **Notes**: * For single images use string format * For multiple images, use JSON array format: `[\"url1\",\"url2\"]` * Boolean values should be `true` or `false` * Ensure proper CSV escaping for fields containing commas or quotes #### Example Request ```json { "siteId": "YourSiteID", "siteType": "Salesforce", "csvContent": "id,sku,title,description,price,price_min,price_max,available,images,featured_image,url\n008884303989,008884303989,Platinum Blue Stripes Easy Care Fitted Shirt,An elegant fitted shirt with blue stripes,35,35,35,true,https://example.com/image1.jpg,https://example.com/image1.jpg,https://example.com/product1\n008884303990,008884303990,Test Shirt,A test product.,60,60,60,true,[\"https://example.com/image1.jpg\",\"https://example.com/image2.jpg\"],https://example.com/image1.jpg,https://example.com/product2" } ``` #### Response | Status | Description | | ------ | ------------------------------- | | `200` | Products imported successfully. | | `400` | Bad request or site not found. | | `401` | Unauthorized access. | *** ### Single Product Import #### **POST** `/external/product/v1` Imports or modifies single product into the system. #### Headers | Key | Type | Required | Description | | -------------------------- | ------ | -------- | -------------------------------------- | | `X-Videowise-Access-Token` | String | Yes | Access token to authorize the request. | #### Request Body * **siteId** (string, required): The site ID to associate with the product. * **siteType** (string, required): The type of site to associate with the product. * **product** (**Product Object**, required): The product to be imported. **Product Object**: Same as defined in the [Bulk Product Import](#bulk-product-import) section. #### Example Request ```json { "siteId": "YourSiteID", "siteType": "Magento", "product": { "id": "008884303989", "sku": "008884303989", "title": "Platinum Blue Stripes Easy Care Fitted Shirt", "description": "An elegant fitted shirt with blue stripes.", "price": 35, "price_min": 35, "price_max": 35, "available": true, "images": ["https://example.com/image1.jpg"], "featured_image": "https://example.com/image1.jpg", "url": "https://example.com/product1" } } ``` #### Response | Status | Description | | ------ | ------------------------------ | | `200` | Product imported successfully. | | `400` | Bad request or site not found. | | `401` | Unauthorized access. | *** ### Retrieve Product #### **GET** `/external/product/v1/:productId` Retrieves a product by its reference ID or SKU. #### Headers | Key | Type | Required | Description | | -------------------------- | ------ | -------- | -------------------------------------- | | `X-Videowise-Access-Token` | String | Yes | Access token to authorize the request. | #### Query Parameters | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------- | | `siteId` | String | Yes | The site ID to search for. | | `siteType` | String | Yes | The site type to search for. | #### Example Request ```bash GET /product/008884303989?siteId=YourSiteID&siteType=Salesforce ``` #### Response | Field | Type | Description | | ---------------- | ------ | ------------------------------------- | | `id` | String | The unique identifier of the product. | | `sku` | String | The SKU of the product. | | `title` | String | The name of the product. | | `featured_image` | String | The image URL of the product. | | `url` | String | The URL of the product. | ```json { "id": "008884303989", "sku": "008884303989", "title": "Platinum Blue Stripes Easy Care Fitted Shirt", "featured_image": "https://example.com/image1.jpg", "url": "https://example.com/product1" } ``` | Status | Description | | ------ | --------------------------------- | | `200` | Product retrieved successfully. | | `400` | Bad request or product not found. | | `401` | Unauthorized access. | *** ### Delete Product #### **DELETE** `/external/product/v1/:productId` Deletes a product by its reference ID or SKU. #### Headers | Key | Type | Required | Description | | -------------------------- | ------ | -------- | -------------------------------------- | | `X-Videowise-Access-Token` | String | Yes | Access token to authorize the request. | #### Query Parameters | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------- | | `siteId` | String | Yes | The site ID to search for. | | `siteType` | String | Yes | The site type to search for. | #### Example Request ```bash DELETE /product/008884303989?siteId=YourSiteID&siteType=Salesforce ``` #### Response | Field | Type | Description | | --------- | ------ | --------------------------------- | | `message` | String | Confirmation of product deletion. | ```json { "message": "Product deleted successfully." } ``` | Status | Description | | ------ | -------------------------------------------- | | `200` | Product deleted successfully. | | `400` | Bad request or product could not be deleted. | | `401` | Unauthorized access. | *** ## Error Codes | Status | Description | | ------ | ----------------------------------------------------------------------------- | | `400` | Bad request. This occurs when required parameters or body fields are missing. | | `401` | Unauthorized. Access token is missing or invalid. | | `404` | Resource not found. Site or product does not exist. | *** # Overview Source: https://docs.videowise.com/product-api/overview A high-level overview of the Product API. The **Product API** allows you to interact with a system to import, retrieve, and delete products. It supports the following operations: * **Bulk Import**: Import multiple products in a single request. * **Single Import**: Import or modify single product. * **Retrieve Product**: Fetch product details by reference ID or SKU. * **Delete Product**: Delete a product by its reference ID or SKU. *** ## Key Features * **Bulk Operations**: Efficiently import multiple products at once. * **Flexible Product Data**: Supports optional fields like `price`, `price_min`, `price_max`, and `images`. * **Secure Authentication**: Requires an access token for all requests. *** ## Base URL All API requests are made to the following base URL: ## Limitations * **Product Limit**: The API supports a maximum of 10000 products per request. * **Rate Limit**: The API enforces a rate limit of 100 requests per minute. ## Recommendations * **Chunking**: Even if Product API supports a maximum of 10000 products per request, it is recommended to send requests in smaller chunks to avoid timeouts. * **Product Requests**: Use bulk operations for importing multiple products and avoid making multiple single import requests. ```plaintext https://api.videowise.com ``` # Welcome Source: https://docs.videowise.com/welcome Use our documentation to seamlessly integrate with Videowise and unlock a world of possibilities. Whether you want to create new interactive video experiences, upload and manage your video content effortlessly, or enhance your site's engagement and conversions, Videowise API has got you covered. We're thrilled for you to harness the power of Videowise to innovate and elevate your app or service! For detailed instructions on installation and interaction with our API, please refer to our comprehensive documentation available on our website. Install Videowise easily with step-by-step instructions. Extend app functionality with custom events for enhanced user interaction. Easy setup instructions included.