agentsclimarketplace

Woo address correction

Skill navarroido/Woocommerce-skill/skills/customer-support/woo-address-correction

Install
npx -y skills add navarroido/Woocommerce-skill --skill woo-address-correction

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Update billing or shipping address fields on a WooCommerce order with a private audit note.

SKILL.md

6.0 KB, as published. Nobody here has run it

woo-address-correction

Purpose

Update the billing and/or shipping address on a WooCommerce order at the request of a customer. Adds a private audit note recording what was changed, by whom, and when. For use by customer support agents correcting addresses before fulfillment.

Prerequisites

  • WooCommerce store with REST API enabled
  • Consumer Key with Read/Write scope
  • Order must still be in processing or on-hold status (not yet shipped)
  • Minimum WooCommerce version: 3.5.0

Parameters

ParameterTypeRequiredDefaultDescription
store_urlstringyesBase URL of the WooCommerce store
consumer_keystringyesWooCommerce REST API consumer key (ck_...)
consumer_secretstringyesWooCommerce REST API consumer secret (cs_...)
dry_runboolnotruePreview without executing
formatstringnohumanOutput format: human or json
order_idintyesWooCommerce order ID
address_typestringnoshippingWhich address to update: shipping, billing, or both
new_addressobjectyesAddress fields: first_name, last_name, address_1, address_2, city, state, postcode, country
correction_reasonstringnoCustomer requestReason logged in private note

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 oauth_consumer_key, oauth_nonce, oauth_signature, oauth_signature_method=HMAC-SHA1, oauth_timestamp, oauth_version=1.0

Never log or output consumer_key or consumer_secret values.

See docs/AUTHENTICATION.md for full setup instructions.

Safety

Step 2 modifies order address data. Always run with dry_run: true first (the default). Verify the new address fields before applying. Note: if the order has already been handed to the carrier, contact the carrier directly as well.

Workflow Steps

Step 1 — Fetch order

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

Extract current address fields for comparison.

Step 2 — Preview or execute

If dry_run: true: show old vs. new address diff. Stop.

If dry_run: false and confirmed:

PUT /wp-json/wc/v3/orders/{order_id}
  Body: {
    "shipping": { <new_address fields> },    // if address_type is shipping or both
    "billing":  { <new_address fields> }     // if address_type is billing or both
  }

Then add a private note:

POST /wp-json/wc/v3/orders/{order_id}/notes
  Body: {
    "note": "Address corrected by support | Reason: <correction_reason> | <ISO-8601>\nOld: <old> | New: <new>",
    "customer_note": false
  }

API Endpoints Used

GET   /wp-json/wc/v3/orders/{id}         — fetch current address
PUT   /wp-json/wc/v3/orders/{id}         — update address fields
POST  /wp-json/wc/v3/orders/{id}/notes   — add audit 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) < 100: break
  page += 1

Maximum per_page is 100 for most endpoints. The X-WP-Total and X-WP-TotalPages response headers report totals. Always read X-WP-TotalPages on the first request to estimate job size.

Session Tracking

Claude MUST emit the following output at each stage. This is mandatory.

STARTUP:

╔══════════════════════════════════════════╗
║  SKILL: woo-address-correction           ║
║  STORE: <store_url>                      ║
║  TIME:  <ISO-8601 UTC>                   ║
║  MODE:  <DRY RUN | LIVE>                 ║
╚══════════════════════════════════════════╝

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

[N/TOTAL] <METHOD> <endpoint> → <result_count> records | params: <key>=<val>

COMPLETION (human format):

╔══════════════════════════════════════════╗
║  COMPLETE: woo-address-correction        ║
║  RECORDS PROCESSED: 1                    ║
║  OUTPUT: stdout                          ║
╚══════════════════════════════════════════╝

COMPLETION (json format):

{
  "skill": "woo-address-correction",
  "store": "<store_url>",
  "completed_at": "<ISO-8601>",
  "records_processed": 1,
  "output_file": null,
  "dry_run": <bool>
}

Output Format

Human format: side-by-side diff of old address fields and new address fields.

Error Handling

ErrorCauseResolution
401 UnauthorizedInvalid credentialsVerify consumer_key and consumer_secret
403 ForbiddenKey lacks Read/Write scopeRegenerate with Read/Write scope
404 Not FoundOrder ID does not existConfirm the order ID
Order already shippedStatus is completedContact the carrier to redirect; WooCommerce address is for record only

Best Practices

  • Always run with dry_run: true first. Show the customer the address diff before confirming.
  • Always add a correction_reason for the audit trail.
  • If the order is already completed, correct the address in WooCommerce for record-keeping but also notify the carrier directly.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.