Redacted sample Fix Ready packet · HRP-PAY-2118
Stripe payment succeeds but WooCommerce order stays pending
Agencies handling urgent payment/order reconciliation tickets
This public sample uses redacted, provisional packet text. Screenshot proof is intentionally withheld until a real pipeline run produces actual before/after captures.
Fix ready for review
Analysis Result
Hermes follows the paid Stripe webhook through the WooCommerce order-state logic, shows the stuck pending order evidence, and prepares a constrained diff plus replay checks before production apply.
Fix review packet
Proof before production
Nothing has changed on your live store yet.
Evidence files
Pending real packet
Checks included
Pending pipeline run
Undo window
72 hours
What you reported
Paid customers do not receive fulfillment because orders remain pending.
Affected URL: https://sample-store.example/wp-admin/post.php?post=2188&action=edit
What Hermes found
A custom order-status filter short-circuits the WooCommerce transition after Stripe sends a verified success webhook, so the payment is captured but fulfillment logic still sees the order as pending.
What Hermes changed
Constrain the filter to preserve manual pending states while allowing verified Stripe success events to transition only their matching paid orders into processing or completed.
- Scope the custom status filter away from Stripe success events.
- Add a guard so unpaid orders cannot be promoted by the patch.
How this was checked
Pipeline verification task: Pending real replay on WooCommerce test site
Scenario
Paid webhook replay plus unpaid guard case
Order check
Processing/completed only after valid payment
Result
Pending real pipeline replay before publication
- Test-mode successful webhook replay
- Checked order status transition
- Verified no unpaid order is marked paid
Canonical packet fields
Recipe
Custom payment/order-state sample; no current canonical recipe match
Fidelity
Provisional public sample pending real pipeline screenshot capture
Review status
sample proof pending real pipeline replay
Screenshot evidence
Pending real pipeline capture on the WooCommerce test site
Functional checks
Paid webhook replay plus unpaid guard scenario
Customer summary
Pending completed review packet output
Proof, scope, and next step
- Diagnosis: verified Stripe success webhook is blocked by a custom order-status filter.
- Change: let verified paid events bypass the filter while preserving unpaid states.
- Proof: replay evidence shows the paid order transitions and unpaid guard remains pending.
Blast radius: One custom order-status filter file in the plugin/theme customization layer.
Rollback scope: Restore the backed-up order-status filter file and replay the affected webhook after review.
Not tested: Live Stripe credentials, real captures, refunds, and fulfillment emails are not run in public samples.
Next step: Review webhook proof, guard checks, and rollback scope before approving apply.
Safety net
Risk: Medium risk
Medium because the fix changes order-state transitions. Hermes verifies paid and unpaid webhook paths before apply.
Rollback: Revert the filter patch and replay the affected webhook after review.
Before and after target
Before target
Real pipeline capture must show payment captured while the order remains pending.
After target
Real pipeline capture must show only valid paid orders move into processing/completed.
Tracked packet evidence
Reproduce
Replay a known successful Stripe webhook in the repair workspace.
Isolate
Compare webhook return path with WooCommerce order-status filters.
Verify
Replay paid and unpaid scenarios to prove the fix is constrained.
Visual evidence and packet artifacts
Public samples list the evidence contract. Screenshot assets stay hidden until a real pipeline run produces actual before/after page captures.
Webhook log
Packet evidenceStripe success event received with valid payment intent.
Order audit
Packet evidenceOrder remains pending after the webhook handler returns.
After replay
Packet evidencePaid order transitions to processing without touching unpaid orders.
Guard check
Packet evidenceUnpaid, failed, and refunded webhook cases remain blocked from promotion.
Real-pipeline replacement task
Replace artificial screenshots with pipeline evidence
Run the review-pack pipeline against a real WooCommerce test-store problem, confirm the diagnosis/fix path works, and base the public sample only on the packet that the pipeline actually produces.
Source site: https://dimgrey-eel-753275.hostingersite.com/
- The pipeline completes for the selected problem and produces a review packet.
- The packet includes actual before and after screenshots captured from the affected page.
- The public sample uses those actual screenshots instead of illustrations or browser-side simulations.
- Only publish fields and proof that appear in the completed review packet; do not show absent screenshots, checks, or proof.