AgentStack
SKILL verified MIT Self-run

Woo Return Initiation

skill-navarroido-woocommerce-skill-woo-return-initiation · by navarroido

Update order status to returned/refunded and log a timestamped note with return reason.

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

Install

$ agentstack add skill-navarroido-woocommerce-skill-woo-return-initiation

✓ 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 Return Initiation? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

woo-return-initiation

Purpose

Mark a WooCommerce order as returned by updating its status to refunded (or a custom return status) and adding a timestamped private note with the return reason and method. Use this for in-store returns, mail-back returns, or any non-API-refund return scenario. For financial refunds, use woo-refund-and-reorder instead.

Prerequisites

  • WooCommerce store with REST API enabled
  • Consumer Key with Read/Write scope
  • Minimum WooCommerce version: 3.5.0

Parameters

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | store_url | string | yes | — | Base URL of the WooCommerce store | | consumer_key | string | yes | — | WooCommerce REST API consumer key (ck_...) | | consumer_secret | string | yes | — | WooCommerce REST API consumer secret (cs_...) | | dry_run | bool | no | true | Preview without executing | | format | string | no | human | Output format: human or json | | order_id | int | yes | — | WooCommerce order ID | | return_reason | string | yes | — | Reason for the return (stored in order note) | | return_method | string | no | mail | Return method: mail, in_store, courier | | target_status | string | no | refunded | Status to set: refunded or a custom status slug | | restock_items | bool | no | false | Return stock quantities for returned items |

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

Step 2 changes order status. Always run with dry_run: true first. Setting restock_items: true restores stock — only do this if the returned items are resaleable.

Workflow Steps

Step 1 — Fetch order

GET /wp-json/wc/v3/orders/{order_id}

Validate status is completed or processing (returns initiate from these states).

Step 2 — Preview or execute

If dry_run: true: display order summary and proposed status change. Stop.

If dry_run: false and confirmed:

PUT /wp-json/wc/v3/orders/{order_id}
  Body: {
    "status": "",
    "meta_data": [
      { "key": "_return_reason", "value": "" },
      { "key": "_return_method", "value": "" },
      { "key": "_return_initiated_at", "value": "" }
    ]
  }

Then add a private order note:

POST /wp-json/wc/v3/orders/{order_id}/notes
  Body: {
    "note": "Return initiated:  | Method:  | ",
    "customer_note": false
  }

API Endpoints Used

GET   /wp-json/wc/v3/orders/{id}         — fetch order details
PUT   /wp-json/wc/v3/orders/{id}         — update status and meta
POST  /wp-json/wc/v3/orders/{id}/notes   — add return note

Pagination Strategy

WooCommerce REST API uses page/per_page pagination (not cursor-based).

Standard pattern:

page = 1
while True:
  response = GET /endpoint?per_page=100&page=page
  process(response)
  if len(response)                       ║
║  TIME:                     ║
║  MODE:                   ║
╚══════════════════════════════════════════╝

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

[N/TOTAL]   →  records | params: =

COMPLETION (human format):

╔══════════════════════════════════════════╗
║  COMPLETE: woo-return-initiation         ║
║  RECORDS PROCESSED: 1                    ║
║  OUTPUT: stdout                          ║
╚══════════════════════════════════════════╝

COMPLETION (json format):

{
  "skill": "woo-return-initiation",
  "store": "",
  "completed_at": "",
  "records_processed": 1,
  "output_file": null,
  "dry_run": 
}

Output Format

Human format: order summary with current status, proposed status, return reason, and method.

Error Handling

| Error | Cause | Resolution | |-------|-------|------------| | 401 Unauthorized | Invalid credentials | Verify consumerkey and consumersecret | | 403 Forbidden | Key lacks Read/Write scope | Regenerate with Read/Write scope | | 404 Not Found | Order ID does not exist | Confirm the order ID | | Invalid status | Order already cancelled or refunded | Verify current order status |

Best Practices

  • Always run with dry_run: true first.
  • For orders where a financial refund is also needed: use woo-refund-and-reorder which handles the payment gateway refund.
  • Set restock_items: true only after physically inspecting returned goods.

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.