top of page

How to Sync your Inventory from Square POS to Wix


Who is our client and what problem did they want to solve?


Our client owns a store that sells disc golf products from their physical store and on-demand at different events.


They needed a way to sync inventory levels between products sold in their brick-and-mortar store through their Square Point of Sales system to their product inventory in Wix.



What solution did we provide?


To do this, we imported their products from Wix into Square, then took the resulting catalog and imported it into a content manager database containing the Square Product ID, the Wix Inventory Item ID, and the Wix Product ID. Then we created a webhook within Square to send data to the Wix site whenever inventory was updated within Square.



What is a webhook?


Webhooks are a service many software providers offer to allow for custom integrations. Essentially, when a specific event happens in their system, they send the data from that event to a URL you provide where you can have code set to receive data from that URL.


For this specific client, whenever the webhook fires, it tells us which Square product has an inventory update and we can look it up in the content manager database to find out which Wix Product it correlates to and then use the 'incrementInventory' or 'decrementInventory' API from the 'wix-stores-backend' module to make the inventory adjustment.



Check out the code we used below:



import { ok, badRequest } from 'wix-http-functions';

import wixData from 'wix-data';
import wixStoresBackend from 'wix-stores-backend';

export async function post_inventoryUpdate(request) {
    const body = await request.body.json();

    const objectData = body.data.object.inventory_counts[0];

    const squareId = objectData.catalog_object_id;
    const quantity = objectData.quantity;


    const squareProduct = await wixData.query("SquareProducts").eq("squareId", squareId).find({ suppressAuth: true }).then(results => results.items[0]).catch(err => err);

    const wixProduct = await wixData.query("Stores/Products").eq("_id", squareProduct.productId).find({ suppressAuth: true }).then(results => results.items[0]).catch(err => err);
    

    const amountToChange = Math.abs(quantity - wixProduct.quantityInStock);
    if (quantity > wixProduct.quantityInStock) {
        // increment inventory
        console.log("Incrementing inventory");
        const incrementInfo = { productId: squareProduct.productId, variantId: squareProduct.variantId, incrementBy: amountToChange, inventoryId: squareProduct.inventoryId }
        wixStoresBackend.incrementInventory([incrementInfo]).then(() => {
          console.log("Inventory incremented by " + amountToChange)
          return ok();
        }).catch(err => console.log(err));;
    } else {
        // decrement inventory
        console.log("Decrementing inventory");
        const decrementInfo = { productId: squareProduct.productId, variantId: squareProduct.variantId, decrementBy: amountToChange, inventoryId: squareProduct.inventoryId }
        wixStoresBackend.decrementInventory([decrementInfo]).then(() => {
          console.log("Inventory decremented by " + amountToChange)
          return ok();
        }).catch(err => console.log(err));
    }

    return badRequest({body: 'Invalid request'});
}
    


Need help syncing your inventory or something else? Contact us at 225-250-1888 or email robert@roberthebertmedia.com.



About our company


RHM specializes in helping businesses of all sizes and across all industries achieve their digital and web marketing needs. Whether you are designing a new website, building an app, performing custom development, or running Google Ads, our goal is to showcase how you are the best at what you do and help people connect with you. Contact us at 225-250-1888 to get started!





 
 
 

8 Comments


Rat Mans
Rat Mans
May 22

Financial and tax software services are expected to simplify complicated processes, which is why users become frustrated quickly when technical issues interrupt important deadlines. Browsing Intuit customer service number, many customers focus on account access, billing management, and support responsiveness because reliability becomes extremely important during tax preparation or financial reporting periods.

Like

wehutam
May 09

Good breakdown of website structuring tips https://theshelfking.com simple but effective advice. Very practical for beginners. I also saw similar guidance on.

Like

wehutam
May 08

Very interesting read with a good flow of ideas from start to finish. I liked how each section felt purposeful and not just filler. I recently https://www.coversinplay.com checked a review blog as well, and it offered a comparable level of clarity in presentation.

Like

Very informative and professionally explained post. Syncing inventory between platforms can be confusing for many store owners, so your step-by-step breakdown makes the process much easier to understand. I especially liked how practical and user-friendly the advice was. I recently came across a similar discussion on a review blog, where fake college diploma was mentioned while talking about online business management and digital credibility, and it offered an interesting perspective as well. Thank you for sharing such useful content.

Like

The closer your guess is to the real spot, the more points you earn. A full game typically consists of multiple rounds, GeoGuessr Free and your total score reflects your overall accuracy.

Edited
Like
bottom of page