Skip to main content
Independent community resource — not affiliated with the official OpenClaw project. Learn more
Part 2 of 5OpenClaw for E-commerce

Order & Fulfillment Monitoring with OpenClaw

What you can monitor

Order problems are silent until they become critical: unfulfilled orders age unpacked in your warehouse, shipments sit stuck with carriers, returns spike without warning, and your highest-value customers get the worst experience. OpenClaw automates the monitoring for all of them, so you catch issues before they spiral.

Daily order summary

Every morning: total orders, revenue, average order value, and top-performing product — a one-glance health check.

Fulfillment delay detection

Flag orders that haven't been fulfilled after N days, configurable per your warehouse speed. Escalate from warning to urgent.

Carrier tracking alerts

Detect shipments stuck in transit or with delivery exceptions using real-time carrier data via EasyPost.

Returns volume monitoring

Track return rates week-over-week and spike alerts when refund volume exceeds your configurable threshold.

High-value order flags

Instant alert for orders above a set threshold so you can prioritize packing and double-check fulfillment.

Unfulfilled order ageing

Age report showing how long each unfulfilled order has been waiting, ranked by days since placed.

Daily order summary

The core agent queries orders from the past 24 hours, calculates key metrics, and flags orders that need attention. Run it every morning at 7 AM to get a snapshot before your team starts work.

# AGENTS.md — order-monitor agent

agents:
  order-monitor:
    description: "Daily order summary and flagging for fulfillment issues"
    tools:
      - shopify-admin-api   # swap for woocommerce-api if needed
    config:
      platform: shopify     # or: woocommerce
      credentials:
        store: "${SHOPIFY_STORE}"
        token: "${SHOPIFY_TOKEN}"
      time_window_hours: 24           # pull orders from last 24 hours
      high_value_threshold: 200       # flag orders above this amount
      fulfillment_delay_threshold: 2  # days before flagging as delayed
      include_fields:
        - order_id
        - customer_name
        - order_total
        - financial_status
        - fulfillment_status
        - created_at
        - items (top product by revenue)
    output:
      format: markdown
      sections:
        - summary (total_orders, total_revenue, avg_order_value)
        - top_product_by_revenue
        - high_value_orders
        - fulfillment_warnings
      include_summary: true

For WooCommerce, the equivalent endpoint is /wp-json/wc/v3/orders with date range filtering:

# WooCommerce variant — adjust credentials and endpoint
WOO_URL=https://yourstore.com
WOO_CONSUMER_KEY=ck_xxxxxxxxxxxxxxxxxxxx
WOO_CONSUMER_SECRET=cs_xxxxxxxxxxxxxxxxxxxx

# Query string: ?after=2026-03-24T07:00:00&before=2026-03-25T07:00:00&per_page=100

Fulfillment delay detection

Paid orders that aren't fulfilled after a set threshold are a red flag. Set your threshold to match your typical fulfillment speed — for example, 2 days for next-day shipping promises, or 5 days for standard processing.

# AGENTS.md — fulfillment-delay-checker agent

agents:
  fulfillment-delay-checker:
    description: "Flag paid orders not yet fulfilled, with escalation tiers"
    tools:
      - shopify-admin-api
    config:
      platform: shopify
      credentials:
        store: "${SHOPIFY_STORE}"
        token: "${SHOPIFY_TOKEN}"
      query_filters:
        financial_status: paid
        fulfillment_status: null    # unfulfilled
      age_threshold_days: 2
      escalation_tiers:
        warning:  [2, 3]            # 2–3 days: WARNING
        urgent:   [4, 9999]         # 4+ days: URGENT
    output:
      format: markdown_table
      columns:
        - order_id
        - customer_name
        - order_date
        - days_unfulfilled
        - order_value
        - items
        - fulfillment_status
      sort_by: days_unfulfilled (descending)
      escalation_colors: true
⚠️ Time is not on your side: Unfulfilled orders that age without action quickly turn into unhappy customers. Set your thresholds conservatively — if you can typically fulfill in 1 day, set the warning at 2 days so you catch edge cases early. Use escalation tiers to focus your team on the oldest, most at-risk orders first.

Carrier tracking alerts

Once a shipment is handed to a carrier, you lose visibility unless you actively poll tracking data. OpenClaw integrates with EasyPost to fetch tracking status from 100+ carriers and alert on delays or exceptions.

# AGENTS.md — carrier-tracker agent

agents:
  carrier-tracker:
    description: "Monitor shipment tracking and flag delays or exceptions"
    tools:
      - easypost-api
    config:
      platform: shopify
      credentials:
        easypost_api_key: "${EASYPOST_API_KEY}"
        shopify_store: "${SHOPIFY_STORE}"
        shopify_token: "${SHOPIFY_TOKEN}"
      tracking_statuses_to_alert:
        - pre_transit (stuck 3+ days)
        - in_transit (stuck 5+ days)
        - failure
        - error
        - unknown
      max_days_in_status: 5         # flag if status hasn't changed in 5 days
    output:
      format: markdown
      columns:
        - tracking_code
        - carrier
        - status
        - last_status_update
        - days_in_status
        - estimated_delivery
      sort_by: days_in_status (descending)

Setup: Get your EasyPost API key from easypost.com, add it to secrets.env as EASYPOST_API_KEY=xxxx, and connect your Shopify store in EasyPost's dashboard so tracking numbers are synced automatically.

Returns volume monitoring

Returns spikes can signal product quality issues, misaligned expectations, or shipping damage. Monitor your returns rate week-over-week and flag when it exceeds a threshold.

# AGENTS.md — returns-monitor agent

agents:
  returns-monitor:
    description: "Track refund volume and spike alerts"
    tools:
      - shopify-admin-api
    config:
      platform: shopify
      credentials:
        store: "${SHOPIFY_STORE}"
        token: "${SHOPIFY_TOKEN}"
      time_window_days: 7           # track last 7 days
      returns_spike_threshold: 8    # alert if return rate > 8%
    output:
      format: markdown
      include_fields:
        - total_refunded_orders
        - returns_rate (%)
        - comparison_to_prior_week
        - items_by_return_reason (if available)

High-value order flags

Your biggest orders deserve special attention. OpenClaw flags any order above your configured threshold so you can prioritize packing, double-check items, and consider a personal customer check-in.

This is configured within the order-monitor agent with the high_value_threshold key (default: 200). Any order that totals above this amount gets its own section in the morning report.

HEARTBEAT.md templates

Morning order brief

# HEARTBEAT.md — morning order brief

schedule:
  - name: "Morning Order Brief"
    cron: "0 7 * * *"           # every day at 7 AM
    agents:
      - order-monitor
      - fulfillment-delay-checker
    output:
      file: "daily_order_brief.md"
      notify: true
    prompt: |
      Combine order-monitor and fulfillment-delay-checker outputs into a single morning briefing.
      Format:
      1. DAILY SNAPSHOT — total orders, revenue, AOV, top product
      2. HIGH-VALUE ORDERS — list orders above threshold with customer and total
      3. FULFILLMENT WARNINGS — unfulfilled orders by escalation tier
      4. ACTION ITEMS — summary of what needs attention today
      If all metrics are healthy, output one-line confirmation: "✓ All orders on track."

Carrier exception check (twice daily)

# HEARTBEAT.md — carrier tracking

schedule:
  - name: "Carrier Exception Check"
    cron: "0 9,14 * * *"         # 9 AM and 2 PM daily
    agents:
      - carrier-tracker
    output:
      file: "carrier_exceptions.md"
      notify: true

Weekly returns report

# HEARTBEAT.md — weekly returns

schedule:
  - name: "Weekly Returns Report"
    cron: "0 8 * * 1"           # Mondays at 8 AM
    agents:
      - returns-monitor
    output:
      file: "weekly_returns.md"
      notify: true
    prompt: |
      Summarize returns from the past week. Compare return rate to the prior week.
      If return rate > 8%, flag spike and suggest investigation into the top return reasons.

What the daily report looks like

━━ Morning Order Brief — 25 Mar 2026 ━━
DAILY SNAPSHOT
47 new orders | £3,840 revenue | £81.70 AOV
Top product: Classic Tee Black (12 units, £480)

HIGH-VALUE ORDERS (2)
· ORD-48392 | Alice Chen | £245.60 | 6 items
· ORD-48401 | James Riley | £212.30 | 3 items

FULFILLMENT WARNINGS
⚠️ URGENT (4+ days unfulfilled): 1 order
· ORD-48101 | David Walsh | 6 days | £89.50

⚠️ WARNING (2–3 days unfulfilled): 2 orders
· ORD-48234 | Sarah Jones | 2 days | £56.20
· ORD-48276 | Emma Smith | 3 days | £124.00

✓ Carrier tracking: 1 shipment in exception — tracking UPS-928374 (stuck in transit 3 days)

✓ Returns rate 2.3% — within normal range (7-day avg)

Frequently asked questions

How does OpenClaw know which orders are unfulfilled?

OpenClaw queries the Shopify Admin REST API with a filter for fulfillment_status=null and financial_status=paid. This returns all orders that have been paid but not yet fulfilled. You can configure the age threshold — for example, flag orders unfulfilled for more than 2 days — to distinguish between newly placed orders and genuinely delayed ones.

Can OpenClaw send customers a tracking update?

No. OpenClaw surfaces the tracking data from carrier APIs so you can see which shipments are delayed or stuck. Sending tracking updates to customers requires explicit setup of an email tool in your AGENTS.md — OpenClaw never sends messages autonomously without your configuration.

What carrier APIs does OpenClaw support for tracking?

OpenClaw integrates with EasyPost, which aggregates tracking data from 100+ carriers including UPS, FedEx, USPS, Royal Mail, DHL, DPD, and many regional carriers. A single EasyPost API key covers all supported carriers, so you don't need separate accounts for each one.

How do I set a high-value order alert threshold?

Set the high_value_threshold config key in the order-monitor agent. The default is 200 (in your store currency). Any order with a total above this threshold will be flagged separately in the daily report so you can prioritize customer service and double-check fulfillment for your highest-value sales.