Shopify Inventory Tracker Documentation
Introduction
Welcome to the documentation for Sopify Inventory Tracker
Shopify Inventory Tracker is a specialized tool designed for managing and optimizing inventory for the easytouchstore.myshopify.com Shopify store. This app provides real-time inventory syncing, sales tracking, and efficient purchase order management, helping store owners streamline their operations and make data-driven decisions.
Key Features
- Dashboard: Monitor today’s sales with quick access to product details and sales graphs, enabling real-time inventory management.
- Product List: View products based on current inventory levels, all products, or top-selling items since January 1st, 2024, to prioritize stock management.
- Graphs: Visualize sales and inventory trends with interactive graphs for top-selling products and all sold products, aiding in strategic planning.
- Purchase Lists & Orders: Create and manage purchase lists and combine them into bulk purchase orders for efficient inventory replenishment.
- Inventory Count: Conduct accurate inventory counts with barcode scanning, ensuring precise stock levels and reducing discrepancies.
This app is exclusively integrated with your Shopify store, offering a seamless experience for managing inventory and sales data. Let’s dive in to explore each feature in detail!
Quick Start Guide
User Guide
The user guide will walk you through the basic steps to start using the Shopify Inventory Tracker for managing your Shopify store’s inventory and sales data.
1. Accessing the Application
- Open your web browser and navigate to shopify.mustafaemresahin.com.
- You will be directed to the Dashboard page, which displays today’s sales data and inventory overview.
2. Navigating the Dashboard
- Today’s Sales List: View a list of all products sold today, including their titles, IDs, inventory levels, and sales numbers.
- Product Page Access: Click on any product in the sales list to access its dedicated product page, where you can see detailed inventory, order, and sales graphs for that specific product.
- View Graphs of Today’s Sales: Use the button on the dashboard to view inventory level graphs for all products sold today. You can click on individual graphs to navigate to each product’s page.
3. Exploring the Product List Page
- Navigate to the Product List page from the top menu.
- Non-Zero Inventory Tab: Shows products with inventory levels above zero. Use this to keep track of items in stock.
- All Products Tab: Displays a comprehensive list of all products in your store, regardless of their inventory levels.
- Top Selling Tab: View the top 20 best-selling products based on sales data since January 1st, 2024. This tab also features an "Update All Total Orders" button to refresh the sales data.
4. Analyzing Data with Graphs
- Navigate to the Graphs page to analyze sales and inventory trends.
- Top Selling Products Tab: Shows inventory level graphs for the top 20 products. These graphs are dynamically updated based on sales data.
- Sold Products Since January 1st, 2024 Tab: View sales graphs for all products sold at least once since the start of the year. Click on any graph to go to that product’s page for more details.
5. Managing Purchase Lists and Orders
- Go to the Purchase Lists page to create and manage purchase lists for different platforms (Amazon, Shopify, Walmart).
- Add a Purchase List: Click "Add Purchase List" to create a new list. Enter a name, select a platform, and add products with the desired quantities.
- Edit Purchase Lists: Use the "Edit" button to modify product quantities, add new items, or delete existing entries in the list.
- Create Purchase Orders: Navigate to the Purchase Orders page to combine multiple purchase lists into a single order for efficient bulk purchasing.
6. Performing Inventory Counts
- Navigate to the Inventory Count page to manage inventory count sessions.
- Create a New Inventory Count Session: Click "Create New Session," enter a name, and start scanning products using a barcode scanner.
- Update Inventory Levels: Scan products to update their inventory counts in real-time. Audio feedback confirms successful scans or alerts to issues.
Developer Setup
The developer guide provides instructions to set up the Shopify Inventory Tracker locally for development purposes.
1. Clone the Repositories
- Clone the frontend and backend repositories to your local machine:
git clone https://github.com/yourusername/shopify-inventory-tracker.git git clone https://github.com/yourusername/shopify-inventory-tracker-backend.git
2. Install Node Modules
- Install the necessary dependencies for both the backend and frontend:
# Backend cd shopify-inventory-tracker-backend npm install # Frontend cd ../shopify-inventory-tracker/client npm install
3. Set Up Environment Variables
- Create a
.envfile in the root directory of your backend repository (shopify-inventory-tracker-backend) with the following content:MONGO_URI=mongodb+srv://mustafaemresahin3:Sx1nmYCBnFMArWcB@easytouchinventory.re3ue.mongodb.net/?retryWrites=true&w=majority&appName=easytouchinventory SHOPIFY_STORE_URL=easytouchstore.myshopify.com SHOPIFY_ACCESS_TOKEN=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
- Ensure the
.envfile contains all required environment variables for connecting to MongoDB and accessing Shopify's API.
4. Start the Backend Server
- Use Nodemon to start the backend server, which automatically restarts on changes:
cd shopify-inventory-tracker-backend nodemon server.js
5. Start the React Frontend
- Run the frontend React application to launch the user interface:
cd ../shopify-inventory-tracker/client npm start
6. Access the Application Locally
- Once both the backend and frontend are running, open your browser and navigate to
http://localhost:3000to access the app locally.
7. Development Tips
- Testing API Endpoints: Use tools like Postman or Insomnia to test the backend API endpoints.
- Debugging: Use browser developer tools for frontend debugging and
console.log()for server-side debugging.
- Code Changes: Any changes made to the backend should restart automatically if Nodemon is running. For the frontend, make sure
npm startis running to see real-time changes.
By following these steps, you will be able to set up and run the Shopify Inventory Tracker both for use and development purposes.
- Clone the frontend and backend repositories to your local machine:
Features Overview
The Shopify Inventory Tracker is designed to streamline inventory management, sales tracking, and order processing for your Shopify store. The app is divided into six main sections, each tailored to provide specific functionalities and insights:
1. Dashboard
The Dashboard is the central hub of the Shopify Inventory Tracker, providing a snapshot of your store’s current sales and inventory status.
- Today’s Sales List: Displays all products sold today, including their titles, Shopify IDs, inventory levels, and total sales numbers. This list is updated in real-time to reflect ongoing sales and inventory changes.
- Product Page Access: Click on any product in the list to navigate to a detailed product page. Here, you will find comprehensive information, including the product's inventory level, sales history, and order details.
- View Graphs of Today’s Sales: A button on the dashboard allows you to view sales graphs for all products sold today. These graphs provide a visual representation of sales trends and inventory changes, helping you quickly identify top performers and items that may need restocking.
2. Product List
The Product List page is designed to provide a comprehensive view of your inventory, allowing you to filter and sort products based on various criteria.
- Non-Zero Inventory Tab: Displays a list of all products currently in stock (i.e., products with an inventory level greater than zero). This tab is particularly useful for monitoring active inventory and ensuring that items are adequately stocked.
- All Products Tab: Shows a complete list of all products in your store, regardless of their inventory status. This includes products that are out of stock, allowing for a holistic view of your entire inventory.
- Top Selling Tab: Highlights the top 20 best-selling products based on sales data since January 1st, 2024. This tab not only shows product titles and inventory levels but also displays total sales numbers, helping you identify high-demand items. You can also click the "Update All Total Orders" button to recalculate sales data and refresh the list.
3. Graphs
The Graphs page provides visual insights into your sales and inventory data, making it easier to analyze trends and make data-driven decisions.
- Top Selling Products Tab: Displays inventory level graphs for the top 20 best-selling products based on sales data since January 1st, 2024. These graphs help you visualize how inventory levels have changed over time for your best-performing products.
- Sold Products Since January 1st, 2024 Tab: Offers sales graphs for all products sold at least once since the start of the year. This tab provides a broad view of sales trends and helps identify which products are gaining or losing popularity over time.
4. Purchase Lists
The Purchase Lists feature allows you to create and manage lists of products you intend to purchase from suppliers, streamlining your inventory restocking process.
- Create New Purchase List: Click "Add Purchase List" to create a new list for a specific platform (Shopify, Amazon, or Walmart). Enter a name for the list and select the platform.
- Add Products to Purchase List: Use the dropdown menu to filter products by name or ID, select the desired products, and specify quantities. This functionality helps you efficiently compile a list of items to restock based on your inventory needs.
- Manage Purchase Lists: Edit or delete products in your purchase list, update quantities, and adjust unit prices. This feature provides flexibility and control over your procurement process, allowing for easy modifications before finalizing orders.
5. Purchase Orders
The Purchase Orders section enables you to combine multiple purchase lists into a single, consolidated order, making bulk purchasing and inventory management more efficient.
- Create a Purchase Order: Select from available purchase lists (excluding those already used in other purchase orders) to create a new purchase order. This allows you to combine lists from different platforms into a single order, simplifying the restocking process.
- Name and Finalize Purchase Orders: After selecting the desired purchase lists, give your purchase order a name and review the combined product quantities and costs before finalizing the order. This feature helps ensure accuracy and completeness in your procurement process.
6. Inventory Count
The Inventory Count page helps you maintain accurate stock levels by conducting regular inventory counts using barcode scanning.
- Create New Inventory Count Session: Click "Create New Session" to start a new inventory count. Enter a session name and begin scanning products with a barcode scanner to update inventory levels in real-time.
- Real-Time Inventory Updates: As you scan products, the app provides immediate feedback through audio alerts, confirming successful scans or alerting you to any issues (e.g., barcodes not recognized). This feature ensures that your inventory data remains accurate and up-to-date.
- Manage Inventory Count Sessions: View and edit existing inventory count sessions, including changing session names and adjusting settings for audio feedback. This functionality helps you keep track of ongoing and completed inventory counts, ensuring a comprehensive inventory management process.
Core Api Endpoints
The Shopify Inventory Tracker backend provides several API endpoints to interact with your store’s inventory, sales data, and purchase order management. Below is a detailed overview of each core API endpoint:
1. Fetch Products
- Endpoint:
GET /api/products
- Description: Retrieves a list of all products from your Shopify store’s inventory.
- Parameters: None
- Sample Response:
[ { "shopifyId": "123456789", "title": "Product Name", "inventoryLevels": [ { "date": "2024-09-01T00:00:00Z", "quantity": 100 } ], "totalOrders": 150, "lastUpdated": "2024-09-01T12:00:00Z" }, ... ]
2. Get Product Details by ID
- Endpoint:
GET /api/product/:id
- Description: Fetches detailed information for a specific product by its Shopify ID.
- Parameters:
:id(required) – The Shopify ID of the product to retrieve.
- Sample Response:
{ "shopifyId": "123456789", "title": "Product Name", "inventoryLevels": [ { "date": "2024-09-01T00:00:00Z", "quantity": 100 } ], "totalOrders": 150, "lastUpdated": "2024-09-01T12:00:00Z" }
3. Fetch All Sales Orders
- Endpoint:
GET /api/orders
- Description: Retrieves all sales orders from Shopify since a specified date.
- Parameters:
startDate(optional, query parameter) – The start date to fetch sales orders from (e.g.,2024-01-01T00:00:00Z).
- Sample Response:
[ { "orderId": "234567890", "orderDate": "2024-09-01T15:30:00Z", "lineItems": [ { "productId": "123456789", "title": "Product Name", "quantity": 3, "price": "29.99" } ], "totalPrice": "89.97" }, ... ]
4. Create a New Purchase List
- Endpoint:
POST /api/purchase-lists
- Description: Allows users to create a new purchase list by specifying products and quantities.
- Parameters (Body):
poName(required) – The name of the purchase list.
platform(required) – The platform for which the purchase list is created (e.g.,Shopify,Amazon,Walmart).
products(required) – An array of products to include in the purchase list, with each product containing:productId(required) – The Shopify ID of the product.
quantityOrdered(required) – The quantity to be ordered.
- Sample Request:
{ "poName": "New Purchase List", "platform": "Shopify", "products": [ { "productId": "123456789", "quantityOrdered": 10 }, { "productId": "987654321", "quantityOrdered": 5 } ] }
- Sample Response:
{ "success": true, "message": "Purchase list created successfully.", "purchaseList": { "id": "5f5f5f5f5f5f5f5f5f5f5f5f", "poName": "New Purchase List", "platform": "Shopify", "products": [ { "productId": "123456789", "quantityOrdered": 10 }, { "productId": "987654321", "quantityOrdered": 5 } ] } }
5. Update Total Orders for a Product
- Endpoint:
POST /api/update-total-orders
- Description: Updates the total orders count for a specific product.
- Parameters (Body):
productId(required) – The Shopify ID of the product to update.
totalOrders(required) – The new total orders count for the product.
- Sample Request:
{ "productId": "123456789", "totalOrders": 200 }
- Sample Response:
{ "success": true, "message": "Total orders updated successfully.", "product": { "shopifyId": "123456789", "totalOrders": 200, "lastUpdated": "2024-09-01T12:00:00Z" } }
6. Fetch Inventory Count Sessions
- Endpoint:
GET /api/inventory-counts
- Description: Retrieves all existing inventory count sessions.
- Parameters: None
- Sample Response:
[ { "sessionId": "5f5f5f5f5f5f5f5f5f5f5f5f", "sessionName": "Weekly Inventory Check", "items": [ { "productId": "123456789", "barcode": "123456789012", "title": "Product Name", "currentInventory": 50, "countedInventory": 48 } ], "createdAt": "2024-09-01T00:00:00Z", "updatedAt": "2024-09-01T12:00:00Z" }, ... ]
7. Add Item to Inventory Count Session
- Endpoint:
PUT /api/inventory-counts/:id/add-item
- Description: Adds a new item to an existing inventory count session or updates the count if the item already exists in the session.
- Parameters:
:id(required) – The ID of the inventory count session to update.
- Request Body:
item(required) – The item to add or update, containing:productId(required) – The Shopify ID of the product.
barcode(required) – The product’s barcode.
title(required) – The product’s title.
countedInventory(required) – The counted inventory amount.
- Sample Request:
{ "item": { "productId": "123456789", "barcode": "123456789012", "title": "Product Name", "countedInventory": 50 } }
- Sample Response:
{ "success": true, "message": "Item added/updated successfully in the session.", "session": { "sessionId": "5f5f5f5f5f5f5f5f5f5f5f5f", "sessionName": "Weekly Inventory Check", "items": [ { "productId": "123456789", "barcode": "123456789012", "title": "Product Name", "currentInventory": 50, "countedInventory": 50 } ], "updatedAt": "2024-09-01T12:00:00Z" } }
8. Delete Purchase Order
- Endpoint:
DELETE /api/pos/:id
- Description: Deletes a specific purchase order if it is in 'Draft' status.
- Parameters:
:id(required) – The ID of the purchase order to delete.
- Sample Response:
{ "success": true, "message": "Purchase order deleted successfully." }
These API endpoints allow for efficient interaction with your Shopify store’s inventory and sales data, enabling streamlined inventory management, sales tracking, and purchase order processes.
- Endpoint:
Key React Pages and Components
The Shopify Inventory Tracker app is organized into various React components and pages, each designed to handle specific functionalities. Below is a detailed overview of these components, organized by their respective directories and roles within the app:
1. Dashboard Components
Dashboard.js
- Purpose: Serves as the main entry point for the dashboard, providing an overview of today's sales and inventory data.
- Key Features:
- Displays a list of today’s sales with clickable items that lead to detailed product pages.
- Allows users to navigate to sales graphs and view detailed inventory levels.
- State Management: Utilizes state hooks to fetch and display real-time sales and inventory data.
InventoryGraph.js
- Purpose: Renders a graph showing inventory levels over time for a specific product or the entire store.
- Key Features:
- Interactive graph that dynamically updates based on inventory changes.
- Helps visualize stock trends and manage restocking needs.
- State Management: Manages graph data state and fetches updated data upon component mount or product selection changes.
2. Graphs Components
OrdersGraph.js
- Purpose: Displays a graph of order data over time, showing trends in product sales.
- Key Features:
- Identifies peak sales periods and tracks the effectiveness of sales strategies.
- Allows users to filter data by date ranges for specific analyses.
- State Management: Fetches order data based on user input and updates the graph state dynamically.
SalesGraph.js
- Purpose: Focuses specifically on displaying sales figures rather than order counts.
- Key Features:
- Provides insights into revenue trends and performance of top-selling products.
- State Management: Manages sales data and interacts with user inputs to filter and update the graph.
DashGraphs.js
- Purpose: Aggregates multiple graph types (Inventory, Orders, Sales) into a single view on the dashboard.
- Key Features:
- Allows users to toggle between different graph types to analyze various sales and inventory aspects.
- State Management: Synchronizes state across multiple graphs to ensure coherent updates.
3. Graphs-Page Components
GraphsPage.js
- Purpose: The main component that hosts the graphs page, featuring different tabs for viewing various sales and inventory graphs.
- Key Features:
- Tabbed interface allowing users to switch between graphs for Top Selling Products and Sold Products.
- Centralized location for visual data analysis.
- State Management: Manages state for active tab selection and the corresponding data fetching.
ProductSelector.js
- Purpose: A utility component used within the graphs page to allow users to select specific products for detailed analysis.
- Key Features:
- Dropdown or search functionality to quickly find and select products.
- Integrates with graph components to update data based on user selection.
- State Management: Manages the selected product state and triggers data fetching for the selected product.
SoldGraphs.js
- Purpose: Displays sales graphs for products sold since a specific date, such as January 1st, 2024.
- Key Features:
- Enables users to analyze sales trends for products over a defined period.
- State Management: Manages date range and sales data state, updating graphs accordingly.
4. Inventory Count Components
InventoryCount.js
- Purpose: Manages inventory count sessions, allowing users to create, view, and update inventory counts through barcode scanning.
- Key Features:
- Displays a list of current inventory count sessions.
- Provides functionality to add new sessions and edit existing ones.
- State Management: Utilizes state hooks to handle session creation, updates, and data persistence.
InventoryCountSessions.js
- Purpose: Handles the logic for managing multiple inventory count sessions, including displaying active and completed sessions.
- Key Features:
- Enhances user ability to track and manage inventory accurately across sessions.
- State Management: Manages the list of sessions and their respective states (active, completed).
5. Master PO Components (Master Purchase Orders)
CreateMasterPO.js
- Purpose: Allows users to create a master purchase order by combining multiple purchase lists.
- Key Features:
- Provides a form for users to select purchase lists and finalize a master purchase order.
- Validates user input to prevent duplicate lists in orders.
- State Management: Manages form state and selected purchase lists for creating a master purchase order.
MasterPODetails.js
- Purpose: Displays detailed information about a specific master purchase order, including all included purchase lists and total quantities.
- Key Features:
- Allows users to review and manage master purchase order details before finalizing.
- State Management: Fetches and displays detailed order data based on user selection.
6. PO Create Components (Purchase Lists)
POCreateStep1.js
- Purpose: Manages the first step in creating a purchase list, including selecting products and specifying quantities.
- Key Features:
- Provides a user-friendly interface for adding products to a purchase list.
- Integrates product selection with subsequent steps in the purchase list creation process.
- State Management: Manages state for selected products and quantities, ensuring data is persisted across steps.
7. PO Details Components (Purchase Lists)
PODetails.js
- Purpose: Shows a detailed view of a purchase list, including all products, quantities, and total costs.
- Key Features:
- Allows users to review all details before finalizing a purchase list.
- Supports editing quantities and removing products from the list.
- State Management: Manages detailed purchase list data and updates based on user interactions.
POEdit.js
- Purpose: Provides an interface for editing an existing purchase list.
- Key Features:
- Allows users to modify quantities, add or remove products, and update pricing.
- State Management: Manages form state for editing purchase lists and updates backend data upon saving changes.
8. PO List Components (Purchase Lists)
POList.js
- Purpose: Displays a list of all existing purchase lists, with options to view, edit, or delete them.
- Key Features:
- Provides a searchable and sortable list for easy management of purchase lists.
- State Management: Manages the list of purchase lists and handles actions like viewing, editing, and deleting.
POLists.js
- Purpose: Similar to POList.js but may focus on a specific subset of purchase lists (e.g., by platform or status).
- Key Features:
- Offers filtering options to narrow down the list of purchase lists based on specific criteria.
- State Management: Manages state for filtering and displaying a specific subset of purchase lists.
9. Product Detail Page Components
ProductDetailPage.js
- Purpose: Provides a detailed view of a product, including its sales history, inventory levels, and performance metrics.
- Key Features:
- Displays comprehensive product data to help users make informed inventory and sales decisions.
- State Management: Manages detailed product data and updates based on user interactions and selected product.
10. Product List Page Components
ProductList.js
- Purpose: Displays a list of products with filtering and sorting options to help users manage their inventory.
- Key Features:
- Supports various views such as All Products, Non-Zero Inventory, and Top Selling.
- State Management: Manages the list of products and updates the display based on user-selected filters.
11. Today's Sales Page Components
SalesPageGraphs.js
- Purpose: Displays graphs related to today’s sales, providing a visual overview of daily sales performance.
- Key Features:
- Helps users quickly identify sales trends and top-performing products.
- State Management: Manages the graph data and updates based on real-time sales data.
TodaysGraphsPage.js
- Purpose: The main component for displaying today's sales graphs, aggregating multiple graph types into a single view.
- Key Features:
- Combines different sales graphs for a comprehensive daily sales overview.
- State Management: Coordinates state across multiple graphs to ensure synchronized updates.
TodaysSalesProductDetailPage.js
- Purpose: Provides detailed sales data for products sold today, including sales history and inventory impacts.
- Key Features:
- Allows users to drill down into specific product details to understand daily sales performance better.
- State Management: Fetches and displays data based on selected products and user interactions.
12. Pages Components
MasterPOListPage.js
- Purpose: Displays a list of all master purchase orders, with options to view, edit, or delete them.
- Key Features:
- Provides an overview of all master purchase orders to streamline inventory management.
- State Management: Manages the state for the list of master purchase orders and handles actions like viewing and editing.
POListPage.js
- Purpose: Similar to MasterPOListPage.js, but focuses on individual purchase lists.
- Key Features:
- Lists all individual purchase lists with options to manage them effectively.
- State Management: Handles state for displaying and managing individual purchase lists.
Common Issues and Troubleshooting
This section provides solutions to common issues you might encounter while using the Shopify Inventory Tracker. If you face any problems not listed here, please contact support.
1. Data Not Syncing with Shopify
Issue: Inventory or sales data is not syncing correctly between Shopify and the app.
Solution:
- Check Shopify Access Token: Ensure that the
SHOPIFY_ACCESS_TOKENin your.envfile is correct and has the necessary permissions to access your store’s data.
- Restart the Backend Server: Sometimes, a simple restart can resolve data syncing issues. Run
nodemon server.jsin your backend directory to restart the server.
- Check Internet Connection: Make sure that your internet connection is stable, as intermittent connectivity issues can disrupt data syncing.
2. Inventory Counts Not Updating
Issue: Scanned products do not reflect updated inventory levels.
Solution:
- Ensure Barcode Scanner is Properly Connected: Verify that your barcode scanner is correctly connected to your device and functioning properly.
- Check Scanner Settings: Go to the settings modal next to the session name and test the audio feedback. Ensure that audio is enabled to receive feedback on scans.
- Restart the App: If the problem persists, try restarting the frontend application by stopping and starting the
npm startprocess.
3. Error Messages When Creating Purchase Lists or Orders
Issue: Receiving error messages while attempting to create or edit purchase lists or orders.
Solution:
- Check Required Fields: Ensure that all required fields (e.g., purchase list name, platform, product quantities) are filled out correctly.
- Validate Product Selections: Make sure that all selected products have valid Shopify IDs and that the quantities specified are numerical values.
- Check Network Logs: Use your browser’s developer tools to check the network logs for any failed API requests and correct any issues based on error messages.
4. "Server Error" When Accessing API Endpoints
Issue: Encountering a "Server Error" message when trying to use certain features or access data.
Solution:
- Check Backend Server Status: Ensure that the backend server is running correctly. You may need to restart the server using
nodemon server.js.
- Inspect Console Logs: Check the server console for any error messages or stack traces that could indicate the source of the problem.
- Review API Permissions: Confirm that the necessary API endpoints have the correct permissions set and that the database connection string (
MONGO_URI) in your.envfile is correct.
5. Graphs Not Displaying Correct Data
Issue: Graphs on the dashboard or graphs page do not show the correct sales or inventory data.
Solution:
- Refresh the Data: Click the "Update All Total Orders" button to refresh the sales data and ensure the graphs are up-to-date.
- Check Date Filters: Ensure the correct date range is selected if filtering is available.
- Clear Browser Cache: Sometimes, clearing the cache can resolve display issues. Refresh the browser or clear the cache if data seems outdated or incorrect.
- Check Shopify Access Token: Ensure that the
Support and Contact Information
If you encounter issues not covered in the troubleshooting section or need further assistance, please contact our support team:
- Email: For any questions, technical support, or feedback, please email us at mustafa.sahin03@outlook.com. We aim to respond to all inquiries within 24 hours during business days.
- Phone: You can reach our support team by phone at 832-537-0746 during business hours (9 AM - 5 PM EST).
When reaching out for support, please provide as much detail as possible about your issue, including any error messages, steps taken, and screenshots if applicable. This will help us diagnose and resolve your issue more effectively.
License
This project is licensed under the MIT License, which allows for commercial use, modification, distribution, and private use.
MIT License:
MIT License Copyright (c) 2024 Shopify Inventory Tracker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.