AgentStack
SKILL verified MIT Self-run

Woo Fulfillment Status Digest

skill-navarroido-woocommerce-skill-woo-fulfillment-status-digest · by navarroido

Read-only: Aggregate order counts by status and flag orders overdue for processing based on a configurable SLA age threshold.

No reviews yet
0 installs
9 views
0.0% view→install

Install

$ agentstack add skill-navarroido-woocommerce-skill-woo-fulfillment-status-digest

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Woo Fulfillment Status Digest? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

woo-fulfillment-status-digest

Purpose

Produce a fulfillment health snapshot of your WooCommerce store: total orders by status, orders overdue by configurable SLA thresholds, and a list of specific order IDs that need immediate attention. Read-only — no order data is modified.

Prerequisites

  • WooCommerce store with REST API enabled (WooCommerce → Settings → Advanced → REST API)
  • Consumer Key and Consumer Secret with Read scope
  • Store accessible over HTTPS
  • Minimum WooCommerce version: 3.5.0

Parameters

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | store_url | string | yes | — | Base URL of the WooCommerce store (e.g., https://mystore.com) | | consumer_key | string | yes | — | WooCommerce REST API consumer key (ck_...) | | consumer_secret | string | yes | — | WooCommerce REST API consumer secret (cs_...) | | dry_run | bool | no | false | No effect — this is a read-only skill | | format | string | no | human | Output format: human or json | | processing_sla_hours | int | no | 24 | Hours after which a "processing" order is flagged as overdue | | on_hold_sla_hours | int | no | 48 | Hours after which an "on-hold" order is flagged as overdue | | pending_sla_hours | int | no | 12 | Hours after which a "pending" order is flagged as overdue | | include_overdue_list | bool | no | true | Include the list of overdue order IDs in output | | max_overdue_listed | int | no | 25 | Maximum number of overdue orders to list |

Authentication

WooCommerce uses OAuth 1.0a for HTTP and Basic Auth over HTTPS.

For HTTPS stores (recommended):

Authorization: Basic base64(consumer_key:consumer_secret)

For HTTP stores (development only): Use OAuth 1.0a — include oauthconsumerkey, oauthnonce, oauthsignature, oauthsignaturemethod=HMAC-SHA1, oauthtimestamp, oauthversion=1.0

Never log or output consumerkey or consumersecret values.

See docs/AUTHENTICATION.md for full setup instructions.

Safety

Read-only skill — no mutations are executed. Safe to run at any time.

Workflow Steps

Step 1 — Fetch order totals by status

GET /wp-json/wc/v3/reports/orders/totals

Extract: array of { slug, name, total } — provides counts for all WooCommerce order statuses.

Step 2 — Fetch overdue processing orders

GET /wp-json/wc/v3/orders
  ?status=processing
  &before=
  &per_page=100
  &page=1
  &orderby=date
  &order=asc

Extract per order: id, number, date_created, total, billing.first_name, billing.last_name, billing.email Paginate until response length ║ ║ TIME: ║ ║ MODE: READ-ONLY ║ ╚══════════════════════════════════════════╝


PER-OPERATION (emit after each API call batch):

[N/TOTAL] → records | params: =


COMPLETION (human format):

╔══════════════════════════════════════════╗ ║ COMPLETE: woo-fulfillment-status-digest ║ ║ RECORDS PROCESSED: ║ ║ OUTPUT: stdout ║ ╚══════════════════════════════════════════╝


COMPLETION (json format):

```json
{
  "skill": "woo-fulfillment-status-digest",
  "store": "",
  "completed_at": "",
  "records_processed": ,
  "output_file": null,
  "dry_run": false
}

Output Format

Human format digest:

FULFILLMENT STATUS DIGEST — mystore.com — 2025-04-14 09:00 UTC

Order Counts by Status:
  ✅ Completed      1,842
  🔄 Processing       127    ⚠️  23 OVERDUE (>24h)
  ⏸  On Hold           14    ⚠️   6 OVERDUE (>48h)
  ⏳ Pending           31    ⚠️   8 OVERDUE (>12h)
  ❌ Cancelled        203
  🚫 Refunded          89
  🗑  Failed            12

Overdue Processing Orders (top 25):
  Order #  Age      Total     Customer
  ──────────────────────────────────────
  #5821    31h 22m  $142.50   Jane Smith
  #5798    28h 05m  $89.00    Bob Jones
  ...

Error Handling

| Error | Cause | Resolution | |-------|-------|------------| | 401 Unauthorized | Invalid or missing credentials | Verify consumerkey and consumersecret | | 403 Forbidden | Consumer Key lacks required scope | Regenerate key with Read scope | | 404 Not Found | Reports endpoint unavailable | Ensure WooCommerce version ≥ 3.5.0 | | 429 Too Many Requests | Rate limit hit during pagination | Wait 2 seconds and retry; reduce per_page to 50 | | Empty overdue list | No orders exceed the SLA threshold | This is normal — your fulfillment is on time |

Best Practices

  • Run this digest at the start of each fulfillment shift for an instant health check.
  • Pipe the overdue order IDs into woo-order-status-bulk-update or woo-bulk-order-notes for follow-up.
  • Adjust processing_sla_hours to match your actual shipping SLA agreement.
  • Schedule this skill to run automatically (e.g., every morning) for proactive alerting.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.