Automation Rule Not Firing
5 min read
You built an automation rule that should be firing, but the actions aren’t happening. This page is the diagnostic walkthrough for figuring out why. The Pro automation engine includes a Rule Inspector that surfaces SKIP reasons for every evaluation — most of the time, the answer is right there.
Step 1: Use the Rule Inspector #
The Rule Inspector is the first stop. It shows recent evaluations of the rule with specific reasons for outcomes.
- Go to TrustLens → Automation
- Click the rule in the list
- Look at the Recent Activity panel
You’ll see entries like:
| Outcome | Reason |
|---|---|
| FIRED | (all conditions passed; actions dispatched) |
| SKIPPED | “Condition not met: trust_score < 30, actual: 47” |
| SKIPPED | “Cooldown active (resumes in 23 minutes)” |
| SKIPPED | “Rule disabled” |
| FAILED | “Webhook returned 500” |
The Reason column tells you exactly why the rule didn’t fire. Most diagnostic work ends here.
Step 2: No Activity at All #
If Recent Activity is empty, the trigger event isn’t reaching the rule. Possible causes:
Engine Disabled #
Check Settings → Automation → Engine Enabled. If off, no rules fire.
Rule Disabled #
Check the rule’s enable toggle. Easy to miss — toggling to “disabled” is silent.
Trigger Event Hasn’t Happened #
The rule is configured correctly but the trigger event (e.g. “Chargeback Filed”) hasn’t fired since the rule was created. Trigger an event manually to test — place a test order if the trigger is order_placed, or use the rule’s “Test Rule” button.
Wrong Trigger #
Verify the rule’s trigger matches the event you expect. “Customer Score Changed” doesn’t fire on every order — only when a score actually changes. If you want to act on every order, use “Order Placed.”
Step 3: “Condition not met” #
The most common SKIP reason. The inspector shows the specific condition and the actual value:
Condition not met: trust_score < 30, actual: 47
This tells you:
- You configured a condition expecting trust_score < 30
- The customer’s actual trust score is 47
- Therefore the rule didn’t fire
Options:
- Adjust the condition — if your intent was to catch this customer, the condition is too strict
- Wait for the customer to actually meet the condition — if your intent was to act only on score < 30, the rule is working correctly; this customer just doesn’t qualify yet
- Use a different condition — maybe segment is what you really want to filter on, not raw score
Step 4: Cooldown Active #
If you’ve configured a cooldown and the rule recently fired for the same target:
Cooldown active (resumes in 23 minutes)
The rule will fire again after the cooldown expires. This is intentional — cooldowns prevent spam.
To bypass for testing: lower the cooldown to 0 temporarily, or use the rule’s Test Rule button (which ignores cooldowns).
Step 5: Action FAILED #
If conditions passed and actions dispatched but an action failed:
- The Recent Activity shows FIRED with action results
- Each action’s individual outcome is shown
- Failed actions list the failure reason
Common action failures:
| Action | Common Failure | Fix |
|---|---|---|
| Send email | wp_mail() returned false | Check SMTP configuration / mail deliverability |
| Fire webhook | 5xx response, timeout, DNS failure | Verify receiver URL, test manually |
| Block customer | Customer not found | Trigger event has invalid customer ID — check context |
| Hold order | Order not in valid state for transition | Order was already cancelled or completed |
Step 6: Test the Rule #
For complex rules, use the “Test Rule” button on the rule edit page. Simulates a trigger event with sample context and shows the evaluation result.
Useful for:
- Verifying logic before enabling
- Reproducing edge cases without waiting for real events
- Confirming actions dispatch successfully
Step 7: Check the Save-Time Validator #
Some rules are rejected at save time. If your rule won’t save, the validator caught:
- Unsatisfiable conditions (impossible combination like
score > 80 AND score < 20) - Schema violations (wrong field name, wrong type for operator)
- Trigger-condition incompatibility (condition references a field not available in the trigger context)
The error message tells you what’s wrong. Fix and try saving again.
Step 8: Verify Trigger Context Variables #
Some conditions and action template variables only work in specific trigger contexts. Examples:
order.idis available in order triggers but not customer-state triggersdispute.brandis available in chargeback triggers onlyfingerprint.hashis available in card-testing triggers only
If you reference a variable that’s not in scope, the rule may fail silently or always SKIP. The save-time validator catches most of these but not all.
Step 9: Check Action Scheduler #
Action dispatch goes through Action Scheduler. If the queue is stalled, actions can be “dispatched” but never actually run.
- Open Scheduled Actions list
- Filter by hook
trustlens/automation_action - Look for pending actions that never complete
If the queue is stalled, see Scores Not Updating Step 3 for cron fixes.
Step 10: Common Patterns of “Fired But No Effect” #
- Block customer: Block flag set but master checkout-blocking toggle off. See Checkout Blocking Not Working.
- Send email: Email sent but deliverability issue. Check spam, check WordPress mail logs.
- Fire webhook: Webhook returned 2xx but receiver did nothing. Receiver-side bug.
- Hold order: Order on-hold, but you didn’t notice in WooCommerce’s order list.
Step 11: Read the Full Automation Log #
For events older than the Rule Inspector’s 10-entry window:
- Settings → Automation → Activity Log
- Filter by rule
- Set date range
Useful for “this rule worked last week but stopped” investigations — you can compare healthy historical entries with current failures.
Common Mistakes #
- Conditions too strict — most “rule not firing” issues are simply customers not meeting all conditions
- Wrong trigger — picking a trigger that fires too rarely
- Cooldown forgotten — setting a cooldown then wondering why the rule won’t fire on retest
- Disabled toggle — accidentally disabled rule or engine
- Webhook URL typo — webhook action quietly failing