Skip to content
WooCommerce WordPress

Order Status Changed → Update User Role

Automatically adjust user roles based on WooCommerce order status transitions. Perfect for membership management, access control, and subscription handling.

intermediate 10 minutes |
#orders #roles #status #woocommerce #membership

Use Case

When an order’s status changes, you want to automatically update the customer’s user role. This keeps access permissions in sync with order status throughout the order lifecycle.

Common scenarios:

  • Activate membership when order completes
  • Suspend access when order is refunded
  • Grant pending access during processing
  • Revoke access on cancellation
  • Upgrade tier on subscription renewal

Step-by-Step Setup

1. Create a New Workflow

Navigate to Sequensy → Workflows in your WordPress admin and click Add New Workflow.

Name your workflow “Sync Role with Order Status” or “Membership Status Manager”.

2. Configure the Trigger

Select Order Status Changed as your trigger.

Key filters:

  • From Status: Previous order status
  • To Status: New order status
  • Products: Membership/access products only

3. Set Up the Update User Role Action

Configure the role change:

SettingExample ValueDescription
User{customer_email}Order customer
New RoleActive MemberTarget role
ActionReplaceReplace current role

4. Create Workflows for Each Transition

From StatusTo StatusRole Action
PendingProcessingPending Member
ProcessingCompletedActive Member
AnyCancelledCustomer (revoke)
AnyRefundedCustomer (revoke)
AnyOn-HoldSuspended Member

5. Test Your Workflow

  1. Enable all related workflows
  2. Create a test order
  3. Progress through status changes
  4. Verify role updates at each step
  5. Test access permissions

Pro Tips

Cover all transitions: Create workflows for every important status transition to keep roles in sync.

Use appropriate roles: Create custom roles like “Pending Member” and “Suspended Member” for transitional states.

Notify on changes: Combine with Send Email to inform customers of access changes.

Consider refunds carefully: Decide whether partial refunds should affect access.

Status-to-Role Mapping

Membership Product Flow

Order Placed (Pending)
→ Role: Pending Member
→ Access: Limited preview

Payment Received (Processing)
→ Role: Processing Member
→ Access: Limited access

Order Completed
→ Role: Active Member
→ Access: Full access

Order Refunded
→ Role: Customer
→ Access: Revoked

Order Cancelled
→ Role: Customer
→ Access: Revoked

Role Transition Matrix

From StatusTo StatusRole Change
pendingprocessingCustomer → Pending Member
processingcompletedPending Member → Active Member
completedrefundedActive Member → Customer
anycancelledAny → Customer
anyon-holdAny → Suspended Member
on-holdprocessingSuspended → Pending Member

Implementation Examples

Membership Site

Workflow 1: Order Completed
- Products: Any membership product
- Role: Active Member
- Email: "Your membership is active!"

Workflow 2: Order Refunded
- Products: Any membership product
- Role: Customer
- Email: "Your membership has been cancelled"

Workflow 3: Order On-Hold
- Products: Any membership product
- Role: Suspended Member
- Email: "Your membership is temporarily suspended"

Course Access

Workflow 1: Order Processing
- Products: Course products
- Role: Enrolled Student
- Access: Course content unlocked

Workflow 2: Order Completed
- Products: Course products
- Role: Active Student
- Access: Full course + certificates

Workflow 3: Order Refunded
- Products: Course products
- Role: Customer
- Access: Course access revoked

Handling Edge Cases

Partial Refunds

Condition: Refund amount < order total
Action: Keep current role (partial refund doesn't revoke)
Note: Only revoke on full refund

Multiple Products

Condition: Order has multiple membership levels
Action: Assign highest tier role
Note: Use priority system for role selection

Existing Members

Condition: User already has "Lifetime Member" role
Action: Skip role update
Note: Don't downgrade lifetime members

Troubleshooting

Role not changing?

  • Verify from/to status match
  • Check workflow conditions
  • Ensure user account exists

Wrong role assigned?

  • Review workflow priority order
  • Check for conflicting workflows
  • Verify role name spelling

Access not updating?

  • Clear caching plugins
  • Check role capabilities
  • Review content restriction settings