The Modern Foundation for Commerce
This project is under active development and is not ready for production use. Please proceed with caution. Use at your own risk.
Documentation: 86d.app/docs/modules/tiktok-shop
TikTok Shop Module
Integrates your 86d store with TikTok Shop for product listing synchronization, order management, and catalog syncing. Supports webhook ingestion for real-time updates from TikTok Shop.
Installation
npm install @86d-app/tiktok-shop
Usage
import tiktokShop from "@86d-app/tiktok-shop";
const module = tiktokShop({
appKey: "your-app-key",
appSecret: "your-app-secret",
shopId: "your-shop-id",
sandbox: "true",
});
Configuration
| Option | Type | Default | Description |
|---|---|---|---|
appKey |
string |
- | TikTok Shop app key |
appSecret |
string |
- | TikTok Shop app secret |
shopId |
string |
- | TikTok Shop ID |
sandbox |
string |
"true" |
Use sandbox environment |
Store Endpoints
| Method | Path | Description |
|---|---|---|
| POST | /tiktok-shop/webhooks |
Receive TikTok Shop webhook events |
Admin Endpoints
| Method | Path | Description |
|---|---|---|
| POST | /admin/tiktok-shop/listings/create |
Create a product listing |
| GET | /admin/tiktok-shop/listings |
List all listings |
| GET | /admin/tiktok-shop/listings/:id |
Get a specific listing |
| POST | /admin/tiktok-shop/listings/:id/update |
Update a listing |
| POST | /admin/tiktok-shop/listings/:id/delete |
Delete a listing |
| POST | /admin/tiktok-shop/sync |
Trigger catalog sync |
| GET | /admin/tiktok-shop/syncs |
List sync history |
| GET | /admin/tiktok-shop/orders |
List TikTok orders |
| GET | /admin/tiktok-shop/orders/:id |
Get a specific order |
| POST | /admin/tiktok-shop/orders/:id/status |
Update order status |
| GET | /admin/tiktok-shop/stats |
Get channel statistics |
Controller API
interface TikTokShopController extends ModuleController {
createListing(params: { localProductId: string; title: string; ... }): Promise<Listing>;
updateListing(id: string, params: Partial<Listing>): Promise<Listing | null>;
deleteListing(id: string): Promise<boolean>;
getListing(id: string): Promise<Listing | null>;
getListingByProduct(localProductId: string): Promise<Listing | null>;
listListings(params?: { status?; syncStatus?; take?; skip? }): Promise<Listing[]>;
syncCatalog(): Promise<CatalogSync>;
getLastSync(): Promise<CatalogSync | null>;
listSyncs(params?: { take?; skip? }): Promise<CatalogSync[]>;
receiveOrder(params: { externalOrderId: string; items: unknown[]; ... }): Promise<ChannelOrder>;
getOrder(id: string): Promise<ChannelOrder | null>;
updateOrderStatus(id: string, status: OrderStatus, trackingNumber?, trackingUrl?): Promise<ChannelOrder | null>;
listOrders(params?: { status?; take?; skip? }): Promise<ChannelOrder[]>;
getChannelStats(): Promise<ChannelStats>;
}
Types
- Listing -- Product listing with sync status tracking
- ChannelOrder -- Order received from TikTok Shop with fee breakdown (subtotal, shippingFee, platformFee, total)
- CatalogSync -- Catalog sync job record with progress tracking
- ChannelStats -- Aggregated listing and order statistics with revenue
Notes
- Listing statuses:
draft,pending,active,rejected,suspended - Order statuses:
pending,confirmed,shipped,delivered,cancelled,refunded - Revenue calculation excludes cancelled and refunded orders
- Admin page appears under the Sales group with the Video icon