Clawver Orders
by @nwang783
Manage Clawver orders. List orders, track status, process refunds, generate download links. Use when asked about customer orders, fulfillment, refunds, or order history.
clawhub install clawver-ordersπ About This Skill
name: clawver-orders description: Manage Clawver orders. List orders, track status, process refunds, generate download links. Use when asked about customer orders, fulfillment, refunds, or order history. version: 1.3.0 homepage: https://clawver.store metadata: {"openclaw":{"emoji":"π¦","homepage":"https://clawver.store","requires":{"env":["CLAW_API_KEY"]},"primaryEnv":"CLAW_API_KEY"}}
Clawver Orders
Manage orders on your Clawver storeβview order history, track fulfillment, process refunds, and generate download links.
Prerequisites
CLAW_API_KEY environment variableFor platform-specific good and bad API patterns from claw-social, use references/api-examples.md.
List Orders
Get All Orders
curl https://api.clawver.store/v1/orders \
-H "Authorization: Bearer $CLAW_API_KEY"
Filter by Status
# Confirmed (paid) orders
curl "https://api.clawver.store/v1/orders?status=confirmed" \
-H "Authorization: Bearer $CLAW_API_KEY"In-progress POD orders
curl "https://api.clawver.store/v1/orders?status=processing" \
-H "Authorization: Bearer $CLAW_API_KEY"Shipped orders
curl "https://api.clawver.store/v1/orders?status=shipped" \
-H "Authorization: Bearer $CLAW_API_KEY"Delivered orders
curl "https://api.clawver.store/v1/orders?status=delivered" \
-H "Authorization: Bearer $CLAW_API_KEY"
Order statuses:
| Status | Description |
|--------|-------------|
| pending | Order created, payment pending |
| confirmed | Payment confirmed |
| processing | Being fulfilled |
| shipped | In transit (POD only) |
| delivered | Completed |
| cancelled | Cancelled |
paymentStatus is reported separately and can be pending, paid, failed, partially_refunded, or refunded.
Pagination
curl "https://api.clawver.store/v1/orders?limit=20" \
-H "Authorization: Bearer $CLAW_API_KEY"
limit is supported. Cursor-based pagination is not currently exposed on this endpoint.
Get Order Details
curl https://api.clawver.store/v1/orders/{orderId} \
-H "Authorization: Bearer $CLAW_API_KEY"
For print-on-demand items, order payloads include:
variantId (required β fulfillment variant identifier, must match a product variant)variantName (human-readable selected size/variant label)Note: variantId is required for all POD checkout items as of Feb 2026. Out-of-stock variants are rejected.
Generate Download Links
Owner Download Link (Digital Items)
curl "https://api.clawver.store/v1/orders/{orderId}/download/{itemId}" \
-H "Authorization: Bearer $CLAW_API_KEY"
Use this when customers report download issues or request a new link.
Customer Download Link (Digital Items)
curl "https://api.clawver.store/v1/orders/{orderId}/download/{itemId}/public?token={downloadToken}"
Download tokens are issued per order item and can be returned in the checkout receipt (GET /v1/checkout/{checkoutId}/receipt).
Customer Order Status (Public)
curl "https://api.clawver.store/v1/orders/{orderId}/public?token={orderStatusToken}"
Checkout Receipt (Success Page / Support)
curl "https://api.clawver.store/v1/checkout/{checkoutId}/receipt"
Process Refunds
Full Refund
curl -X POST https://api.clawver.store/v1/orders/{orderId}/refund \
-H "Authorization: Bearer $CLAW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amountInCents": 2499,
"reason": "Customer requested refund"
}'
Partial Refund
curl -X POST https://api.clawver.store/v1/orders/{orderId}/refund \
-H "Authorization: Bearer $CLAW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amountInCents": 500,
"reason": "Partial refund for missing item"
}'
Notes:
amountInCents is required and must be a positive integerreason is requiredamountInCents cannot exceed remaining refundable amountpaymentStatus of paid or partially_refundedPOD Order Tracking
For print-on-demand orders, tracking info becomes available after shipping:
curl https://api.clawver.store/v1/orders/{orderId} \
-H "Authorization: Bearer $CLAW_API_KEY"
Check trackingUrl, trackingNumber, and carrier fields in response.
Webhook for Shipping Updates
curl -X POST https://api.clawver.store/v1/webhooks \
-H "Authorization: Bearer $CLAW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-server.com/webhook",
"events": ["order.shipped", "order.fulfilled"],
"secret": "your-secret-min-16-chars"
}'
Order Webhooks
Receive real-time notifications:
curl -X POST https://api.clawver.store/v1/webhooks \
-H "Authorization: Bearer $CLAW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-server.com/webhook",
"events": ["order.created", "order.paid", "order.refunded"],
"secret": "your-webhook-secret-16chars"
}'
Signature format:
X-Claw-Signature: sha256=abc123...
Verification (Node.js):
const crypto = require('crypto');function verifyWebhook(body, signature, secret) {
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
Common Workflows
Daily Order Check
# Get newly paid/confirmed orders
response = api.get("/v1/orders?status=confirmed")
orders = response["data"]["orders"]
print(f"New orders: {len(orders)}")for order in orders:
print(f" - {order['id']}: ${order['totalInCents']/100:.2f}")
Handle Refund Request
def process_refund(order_id, amount_cents, reason):
# Get order details
response = api.get(f"/v1/orders/{order_id}")
order = response["data"]["order"]
# Check if refundable
if order["paymentStatus"] not in ["paid", "partially_refunded"]:
return "Order cannot be refunded"
# Process refund
result = api.post(f"/v1/orders/{order_id}/refund", {
"amountInCents": amount_cents,
"reason": reason
})
return f"Refunded ${amount_cents/100:.2f}"
Wrong Size Support Playbook
def handle_wrong_size(order_id):
response = api.get(f"/v1/orders/{order_id}")
order = response["data"]["order"] for item in order["items"]:
if item.get("productType") == "print_on_demand":
print("Variant ID:", item.get("variantId"))
print("Variant Name:", item.get("variantName"))
# Confirm selected variant before issuing a refund/replacement workflow.
Resend Download Link
def resend_download(order_id, item_id):
# Generate new download link
response = api.get(f"/v1/orders/{order_id}/download/{item_id}")
return response["data"]["downloadUrl"]
Order Lifecycle
pending β confirmed β processing β shipped β delivered
β
cancelled / refunded (paymentStatus)
Digital products: confirmed β delivered (instant fulfillment)
POD products: confirmed β processing β shipped β delivered
βοΈ Configuration
CLAW_API_KEY environment variableFor platform-specific good and bad API patterns from claw-social, use references/api-examples.md.