Install
openclaw skills install printful-managementManage a Printful account through the Printful REST API using a private API token. Use when the user wants to inspect or manage Printful stores, connected-store sync products, manual/API-store products, variants, orders, product templates, file library items, shipping rates, webhooks, mockups, warehouse products, tax endpoints, approval sheets, reports, or exports; when building a local Printful integration; or when converting seller requests like "list my Printful items", "show my stores", "export my products to CSV", "update this synced variant", "create a mockup task", or "configure Printful webhooks" into safe API calls.
openclaw skills install printful-managementUse this skill to work with a user's Printful account via API token instead of brittle browser login.
PRINTFUL_API_KEY instead of hardcoding it into files.scripts/printful_api.py for live calls.storessync-products for connected-platform stores like Etsymanual-products for Manual Order / API storesordersClassify the request into one of these buckets:
If the request is vague, ask one short clarifying question.
Prefer these discovery calls first:
python scripts/printful_api.py stores
python scripts/printful_api.py sync-products --store-id <id>
python scripts/printful_api.py orders --store-id <id>
If sync-products fails with a Manual/API-store style error, switch to:
python scripts/printful_api.py manual-products --store-id <id>
These usually reveal the IDs needed for later write calls.
Prefer ephemeral auth in the shell:
$env:PRINTFUL_API_KEY = 'pf_xxx'
The helper script also accepts --api-key, but environment variables are better because they reduce accidental logging and file leakage.
scripts/printful_api.py wraps a broad set of Printful endpoints and also supports arbitrary API requests.
Common reads:
python scripts/printful_api.py scopes
python scripts/printful_api.py stores
python scripts/printful_api.py store --store-id 12345
python scripts/printful_api.py sync-products --store-id 12345 --limit 100
python scripts/printful_api.py sync-product --store-id 12345 --product-id 67890
python scripts/printful_api.py manual-products --store-id 12345 --limit 100
python scripts/printful_api.py orders --store-id 12345 --limit 50
python scripts/printful_api.py order --store-id 12345 --order-id 111
python scripts/printful_api.py catalog-products --limit 20
python scripts/printful_api.py catalog-product --product-id 71
python scripts/printful_api.py catalog-variant --variant-id 4011
python scripts/printful_api.py categories
python scripts/printful_api.py templates --store-id 12345
python scripts/printful_api.py webhooks --store-id 12345
python scripts/printful_api.py statistics --store-id 12345
python scripts/printful_api.py export-products --store-id 12345 --format markdown --output-file report.md
python scripts/printful_api.py export-products --store-id 12345 --format csv --output-file products.csv
Common writes:
python scripts/printful_api.py create-manual-product --store-id 12345 --body-file product.json
python scripts/printful_api.py update-sync-variant --store-id 12345 --variant-id 999 --body-file variant.json
python scripts/printful_api.py create-order --store-id 12345 --body-file order.json
python scripts/printful_api.py confirm-order --store-id 12345 --order-id 111
python scripts/printful_api.py add-file --store-id 12345 --body-file file.json
python scripts/printful_api.py set-webhooks --store-id 12345 --body-file webhook.json
python scripts/printful_api.py create-mockup-task --store-id 12345 --body-file mockup.json
Raw requests:
python scripts/printful_api.py raw GET /stores
python scripts/printful_api.py raw GET /sync/products?limit=10 --store-id 12345
python scripts/printful_api.py raw POST /webhooks --store-id 12345 --body-file webhook.json
Notes:
X-PF-Store-ID header for store context.--output file.json also saves the response to disk.export-products can generate markdown, CSV, or JSON summaries for store products.For create/update/delete operations:
Use this quick map before reaching for raw mode:
GET /storesGET /stores/{id}GET /sync/productsGET /sync/products/{id}GET /sync/variants/{id}PUT /sync/variants/{id}DELETE /sync/variants/{id}GET /store/productsGET /store/products/{id}POST /store/productsPUT /store/products/{id}DELETE /store/products/{id}GET /store/variants/{id}POST /store/variantsPUT /store/variants/{id}DELETE /store/variants/{id}GET /ordersGET /orders/{id}POST /ordersPUT /orders/{id}DELETE /orders/{id}POST /orders/{id}/confirmPOST /orders/estimate-costsGET /productsGET /products/{id}GET /products/variant/{id}GET /products/{id}/sizesGET /categoriesGET /categories/{id}GET /product-templatesGET /product-templates/{id}DELETE /product-templates/{id}GET /webhooksPOST /webhooksDELETE /webhooksIf exact payload fields matter, read references/printful-api-notes.md, references/request-examples.md, and, if needed, the official docs page the user supplied.
When reporting account data back to the user:
If the user wants the skill published to ClawHub:
clawhub CLI to publish the skill folder, not random extra workspace files.Read references/printful-api-notes.md when you need a compact refresher on auth, endpoint-family selection, rate limits, and publication hygiene. Read references/request-examples.md when you need starter JSON bodies for common writes.