Initial assessment without passwords Quote before intervention One accountable specialist from start to finish

Orders Stock Fulfilment

Order Notes Reveal Repeated Background-Task Failures

Use WooCommerce order notes to diagnose repeated Action Scheduler, webhook, email, stock and fulfilment task failures without duplicating work.

Repeated private notes often mean WooCommerce or an integration is retrying work that never reaches a confirmed outcome. The visible order may look complete while email, stock, webhook or fulfilment tasks remain broken.

Do not click “run” on every failed action. First establish whether the external work already happened despite the local timeout.

Translate notes into a timeline

Read notes chronologically and group identical messages. Record the first failure, retry interval, most recent result and any change in order status.

Correlation fields:
order ID
scheduled-action ID and hook
external request/reference ID
attempt number
HTTP/error class
side effects already observed

Redact customer data, credentials and full API payloads.

Find the matching scheduled action

Open WooCommerce > Status > Scheduled Actions and search by hook, order ID or related argument. Inspect status, scheduled time and failure message.

Pending actions far in the past indicate a queue runner or cron problem. Failed actions with regular retries may point to application or provider errors.

Preserve one failure record before cleanup. It contains the code path and timestamp needed for log correlation.

Determine whether the task is safe to repeat

Classify the operation. Sending an administrative notification may tolerate a duplicate better than capturing payment, creating shipment or reducing stock.

A timeout means the caller did not receive confirmation; the provider may still have completed the request. Query by stable reference before retrying.

Idempotent APIs and stored event IDs should turn repeated calls into the same result. If custom code lacks this protection, repair it before replay.

Check WP-Cron and queue capacity

Verify WordPress cron is enabled or replaced by a real server cron. Check loopback requests, PHP workers, memory and database health.

Backlog signals:
oldest pending action age
pending count growth
actions completed per minute
repeated PHP fatal or timeout

Adding more runners can overload MySQL if the actual problem is a slow external API or locked table. Measure before increasing concurrency.

Compare performance during peak order volume.

Correlate PHP and provider logs

Match the action execution time with PHP error logs and the external provider dashboard. A 401 suggests credentials, 429 rate limiting, 500 application failure and timeout an unknown outcome.

Do not log bearer tokens or request bodies containing addresses. Use response class, provider request ID and order ID.

If certificate or DNS failures affect all actions to one provider, repair server connectivity rather than individual orders.

Inspect hook implementation

Custom callbacks must validate their arguments, handle a missing order and record completion safely:

$order = wc_get_order( $order_id );
if ( ! $order ) {
    throw new RuntimeException( 'Order unavailable for scheduled task' );
}

This example makes failure visible; production code must also avoid exposing sensitive values and implement idempotency.

Do not mark an action complete before its required durable result exists.

Reconcile and replay selectively

Build a list of affected orders and confirm payment, inventory, email and fulfilment state for each. Correct the root cause, then replay one low-risk verified action.

Observe its notes and external result before processing a bounded batch. Keep an audit record and stop if duplicate effects appear.

Never delete the entire Action Scheduler history to make the dashboard look healthy.

Verify ongoing queue health

Confirm new actions start near their scheduled time, complete once and add concise notes. Test failure handling with a safe sandbox provider response.

Recurring care should alert on oldest-pending age, failure rate and queue growth. Order notes are customer-level symptoms; queue metrics reveal the store-wide problem early enough to prevent operational drift.

BEFORE YOU SEND THE REQUEST

Frequently asked questions.

Do you ask for passwords in the form?+

No. The public form never requests access. Secure credentials are requested only after the scope and quote are approved.

Who reviews the incident?+

The request goes to Jordi Ensenyat, founder of Code Barcelona and a WordPress specialist with more than 15 years of experience.

Is anything changed before the quote?+

No. Visible symptoms and scope are reviewed first. Intervention begins after approval and with a rollback path prepared.

Do you work internationally?+

Yes. WP Repair handles WordPress and WooCommerce incidents in English and Spanish through a remote service.

Assess my incident