eCommerce Store API
Shop API Reference
Build and manage your WhatsApp eCommerce store. Sync products, process orders, and integrate with Shopify or WooCommerce seamlessly.
eCommerce API - LLM Context
LLM ReadyFeed complete Shop & Catalog API specs directly to your AI agent or coding assistant.
Overview
The Shop API enables you to manage your WhatsApp eCommerce store programmatically. Create and manage products, organize categories, process orders, and integrate with external platforms like Shopify and WooCommerce.
Developer API Base
https://app.wacm.in/v1/shopPublic API Base
https://app.wacm.in/shopThe API uses RESTful conventions with JSON request/response bodies. All developer endpoints require authentication via Bearer token.
Authentication
Developer API endpoints (v1) require authentication. Public endpoints for categories and products use company_id for scoping.
curl -X GET "https://app.wacm.in/v1/shop/products" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"Integration Flow
Follow these steps to integrate your external system with WACM Shop:
Get Your Token
Log in to your WACM dashboard, navigate to Settings → API to get your Personal Access Token.
Push Categories
Make a POST request to /v1/shop/categories to establish your product taxonomy. Save the returned Category IDs.
Push Products
Make a POST request to /v1/shop/products, attaching the newly created category_id to each item.
Fulfill Orders
Poll the /v1/shop/orders endpoint to receive new purchases, or use the WACM Webhook engine to listen for real-time events.
Update Statuses
Once you ship an item, PUT the new status (e.g., Shipped) back to the /v1/shop/orders/{id}/status endpoint.
Products
/v1/shop/productsList all products
/v1/shop/productsCreate a new product
/v1/shop/products/{id}Get product details
/v1/shop/products/{id}Update product
/v1/shop/products/{id}Delete product
List Products
curl -X GET "https://app.wacm.in/v1/shop/products" \
-H "Authorization: Bearer YOUR_API_TOKEN"Create Product
curl -X POST "https://app.wacm.in/v1/shop/products" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Premium Wireless Headphones",
"description": "High-quality wireless headphones with noise cancellation",
"price": 2999.00,
"compare_at_price": 4999.00,
"currency": "INR",
"stock_quantity": 100,
"status": "Active",
"external_id": "SKU-WH-001",
"category_id": 1
}'Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Product name |
| price | number | Required | Product price |
| slug | string | Optional | Product URL slug (auto-generated from name if omitted) |
| description | string | Optional | Product description (defaults to empty string if omitted) |
| compare_at_price | number | Optional | Original price (for showing discounts) |
| currency | string | Optional | Currency code (default: INR) |
| stock_quantity | integer | Optional | Available stock quantity |
| availability | string | Optional | Stock availability: in stock or out of stock |
| status | string | boolean | Optional | Product status: Active, Draft, Archived (or boolean true/false) |
| external_id | string | Optional | External SKU or product ID |
| image | string | Optional | Product image URL |
| brand | string | Optional | Product brand name |
| item_type | string | Optional | Item classification: product or service |
| product_url | string | Optional | External product URL |
| tags | array | string | Optional | Product tags array or comma-separated string |
| category_id | integer | Optional | Category ID reference |
Shop CRUD responses wrap the result in data. Creates return HTTP 201; deletes return 200 JSON confirmation ({ "status": "success", "message": "...", "id": 1 }). List endpoints return complete arrays under data. Example product response:
Response
{
"data": {
"id": 1,
"name": "Premium Wireless Headphones",
"description": "High-quality wireless headphones with noise cancellation",
"price": 2999.00,
"compare_at_price": 4999.00,
"currency": "INR",
"stock_quantity": 100,
"status": "Active",
"external_id": "SKU-WH-001",
"image": null,
"category_id": 1,
"created_at": "2025-01-15T10:30:00.000000Z",
"updated_at": "2025-01-15T10:30:00.000000Z"
}
}Categories
/v1/shop/categoriesList all categories
/v1/shop/categoriesCreate a new category (slug auto-generated if omitted)
/v1/shop/categories/{id}Get category details
/v1/shop/categories/{id}Update category
/v1/shop/categories/{id}Delete category (returns 200 JSON)
Create Category
curl -X POST "https://app.wacm.in/v1/shop/categories" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Electronics",
"slug": "electronics",
"description": "Electronic devices and accessories"
}'Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Category name |
| slug | string | Optional | Unique category slug (auto-generated from name if omitted) |
| description | string | Optional | Category description |
| image | URL | Optional | Category image URL |
Public Categories Endpoint
No authentication required - uses company_id for scoping.
curl -X GET "https://app.wacm.in/shop/{company_id}/categories"Orders
/v1/shop/ordersList all orders (supports status, payment_status, contact_id, source, search, limit)
/v1/shop/orders/{id}Get order details
/v1/shop/orders/{id}/statusUpdate order status, payment status, and tracking metadata
Update Order Status
curl -X PUT "https://app.wacm.in/v1/shop/orders/123/status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "Shipped",
"payment_status": "Paid",
"tracking_number": "SR-982341",
"tracking_url": "https://shiprocket.co/tracking/SR-982341",
"notes": "Dispatched via express courier"
}'Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | string | Required | New order status (Pending, Processing, Shipped, Fulfilled, Delivered, Cancelled, Refunded) |
| payment_status | string | Optional | Optional payment status (Pending, Paid, Failed, Refunded, COD) |
| tracking_number | string | Optional | Optional shipment tracking number |
| tracking_url | URL | Optional | Optional shipment tracking URL |
| notes | string | Optional | Optional order fulfillment notes |
Valid Order Statuses
Abandoned Carts & Store Analytics
Inspect active and abandoned shopping carts, generate one-click recovery checkout links, dispatch WhatsApp cart recovery reminders, and retrieve storefront performance statistics.
/v1/shop/cartsList shopping carts (filters: abandoned_only, recovered, contact_id, limit)
/v1/shop/carts/{id}Get shopping cart details and line items
/v1/shop/carts/{id}/recoverGenerate a recovery checkout URL for an abandoned cart
/v1/shop/carts/{id}/notifySend a WhatsApp abandoned cart reminder message to the customer
/v1/shop/statsGet storefront catalog, order, revenue, and abandoned cart analytics
ERP Sync
Synchronize product details from your ERP. This endpoint applies external_id, name, description, price, status and image; it does not update stock_quantity. Use authenticated product PUT/PATCH for stock updates. Records without external_id or name are skipped.
/shop/erp/syncBearer token requiredSync product details from ERP (stock is updated via product PUT/PATCH)
curl -X POST "https://app.wacm.in/shop/erp/sync" \
-H "Authorization: Bearer YOUR_ERP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"products": [
{
"external_id": "ERP-001",
"name": "ERP product",
"status": "Active",
"price": 1999.00
}
]
}'AI Product Search
Use AI-powered search to find products by natural language queries. Provide the store subdomain and query.
/shop/ai/searchPublicSearch products using AI
curl -X POST "https://app.wacm.in/shop/ai/search" \
-H "Content-Type: application/json" \
-d '{
"subdomain": "your-store-subdomain",
"query": "wireless headphones under 3000"
}'Webhooks
Receive incoming Shopify, WooCommerce, and custom events. Each endpoint uses the generated webhook token in its URL.
/shop/webhooks/shopify/{token}Token in URLShopify webhook receiver
/shop/webhooks/woo/{token}Token in URLWooCommerce webhook receiver
/shop/webhooks/custom/{token}Token AuthCustom webhook receiver
/shop/webhooks/shiprocket/{token}Token in URLShiprocket logistics webhook receiver
/shop/webhooks/fastrr/{token}Token in URLFastrr checkout webhook receiver
/shop/webhooks/test/{token}Token in URLWebhook verification and testing endpoint
Security
Webhook URLs contain a generated token. Shopify and WooCommerce handlers also validate their respective request signatures when configured.
Shopify Integration
Connect your Shopify store to automatically sync products and receive order notifications.
Webhook Events Supported
products/create- New product createdproducts/update- Product updatedproducts/delete- Product deletedorders/create- New order placedorders/updated- Order status changed
https://app.wacm.in/shop/webhooks/shopify/{your_webhook_token}WooCommerce Integration
Connect your WooCommerce store to sync products and process orders through WhatsApp.
https://app.wacm.in/shop/webhooks/woo/{your_webhook_token}Product Status Reference
| Status | Description |
|---|---|
| Active | Product is visible and purchasable |
| Draft | Product is hidden from store (work in progress) |
| Archived | Product is no longer available |
Order Status Reference
| Status | Description |
|---|---|
| Pending | Order received, awaiting processing |
| Processing | Order is being prepared |
| Shipped | Order has been shipped |
| Delivered | Order delivered to customer |
| Cancelled | Order was cancelled |
| Refunded | Payment was refunded |
HMAC-SHA256 Security
Shopify webhooks require valid HMAC-SHA256 signatures. WooCommerce HMAC validation applies when a webhook secret is configured; configure this secret before enabling an integration.
1. Receive webhook request with HMAC signature header
2. Compute HMAC-SHA256 using your shared secret
3. Compare computed signature with received signature
4. Process request only if signatures matchSecurity Best Practice
Always verify webhook signatures before processing. Never trust unverified webhook payloads.
WhatsApp Business API
Send messages, manage contacts, and run campaigns.