Rules troubleshooting

Last updated: May 19, 2026

Rules troubleshooting

The most common rule problems, what causes them, and how to fix. For each: a 1-line diagnosis + actionable next step. Always check execution history first (rul-111) — it usually surfaces the cause.

Who is this for

Anyone whose rule didn't behave as expected. First stop before contacting support.

Issue 1: Rule not firing

Symptoms

Activated rule, but no executions appear in /rules/:id after 15+ minutes.

Causes + fixes

  1. Status check/rules/:id top: status should be active. If paused: toggle to active. If error: see Issue 2.

  2. last_evaluated_at — should refresh every cron tick (within 15 min for interval: 15). If stale: rule may be in error status (toggle issue) or cron service issue (rare; check /status page or contact support).

  3. Scope returns nothing — preview the rule (rul-109). If entities_evaluated = 0: scope is wrong. Common: typo in name_contains, wrong ad account, status_in: [active] but entities are paused.

  4. Schedule mismatchdaily_at_time rule won't fire until next configured slot. Check timezone matches workspace.

Issue 2: Status = error (circuit breaker tripped)

Symptoms

Rule status flipped to error. Notifications stopped. Last execution failed.

Causes + fixes

The circuit breaker auto-pauses rules when error rate ≥ 50% with 20+ errors. Review last_error:

Error message

Likely cause

Fix

platform_token_expired

Ad account token revoked

Re-authorize ad account at /connect/{platform}

platform_api_error: ...

Upstream API issue

Check platform's API status; may be transient

validation_error: budget below minimum

Action would produce invalid budget

Adjust rule's pct value or scope

network_error

Transient

Wait then retry

entity_not_found

Entity deleted between eval and execute

Usually self-resolves; harmless

After fixing root cause: manually toggle status from error to active. If circuit breaker re-trips within 1 hour: not fully fixed; pause + re-investigate.

Issue 3: Actions skipped (matched but didn't act)

Symptoms

Execution history shows entities_matched > 0 but entities_acted = 0 or much smaller. Per-entity reasons in entities_skipped.

Skip reason → diagnosis

skip_reason

Diagnosis

Fix

cooldown_active

Entity acted on recently (by this or another rule)

Wait until cooldown expires, or shorten cooldown_minutes if too conservative

daily_cap_reached

Rule hit max_executions_per_day

Raise the cap or accept the throttle

pending_action_exists

In-flight action in last 30 min for same entity

Self-resolves; if persistent, check for stuck SQS worker

budget_cap_reached

budget_daily_cap reached for the entity

Raise cap or accept the limit

entity_state_conflict

E.g. relaunch on a paused ad

Fix rule scope to exclude conflicting states

Most skips are protections working correctly. If most matches skip every cycle, the rule may be over-tuned.

Issue 4: Notification missing

Symptoms

Rule fired (execution history shows entities_acted > 0) but no notification arrived.

Causes + fixes

Cause

Check

Fix

notify_on_execution: false

Rule edit modal

Enable + save

notify_channels empty

Same

Tick at least one channel

Telegram bot disconnected

Workspace integrations

Reconnect at /settings/notifications

Email in spam

Inbox + spam folder

Allowlist noreply@wevion.ai

In-app notification cleared

Notification center

Check before clearing if you need to reference

Issue 5: Postback metrics stale

Symptoms

Rule using purchases / roas / cpa fires on values that look wrong vs current dashboard.

Cause

Postback-fed metrics (purchases, purchase_value, conversions, roas, cpa, profit, profit_margin, conv_rate, aov) lag 24-72 hours vs current dashboard. Rule sees the snapshot at evaluation time.

Fix

Use longer time_range (last_7d minimum) for rules on postback metrics. Don't use today or yesterday for these — data is incomplete.

If the rule needs faster feedback: switch to a Meta-native metric (faster but ATT-impacted), or accept the lag.

Issue 6: Budget action rejected

Symptoms

entities_errored with message about budget minimum, or action skipped + recorded as entities_errored.

Cause

decrease_budget_pct would produce a value below platform minimum.

Platform

Entity level

Minimum

Google

campaign

$1

TikTok

campaign

$50

TikTok

adset

$20

Meta / Snapchat / Taboola / LinkedIn

any

$2

Fix

  • Lower the pct value (smaller decrease)

  • Or scope out entities already near minimum

  • Or pause the entity instead (no budget action needed)

Issue 7: Rule fires too often

Symptoms

Many executions per day, notification flood, entities thrashing between paused and active.

Causes + fixes

  • Thresholds too loose — tighten conditions

  • Schedule too aggressive — raise interval_minutes

  • Cooldown too short — raise cooldown_minutes to default 360+

  • No max_executions_per_day — set to 3-5

  • Multiple rules acting on same entities — see Issue 8

Issue 8: Conflicting rules

Symptoms

Same entity pauses + activates rapidly, or two rules adjust budget in opposite directions.

Cause

Two rules with overlapping scope + conflicting actions.

Fix

  • Audit /rules → identify rules with overlapping ad_account_ids + entity_filter

  • Either narrow scopes (different name_contains) so they're disjoint

  • Or coordinate (only one active at a time, paused otherwise)

  • Or merge into single rule with combined conditions

Issue 9: Rule scope doesn't match anything

Symptoms

Preview returns entities_evaluated = 0.

Causes + fixes

  • Wrong ad account selected — verify in builder

  • name_contains typo — search the entity in Ads Manager to see exact name

  • status_in: [active] but entities are paused — adjust filter

  • Entity level mismatch — entities exist as adsets, rule scope = campaign (or vice versa)

  • Platform mismatch (cross-platform rules) — entities are on different platforms than platforms[]

Issue 10: Preview shows matches but real fire doesn't act

Symptoms

Preview reports entities_matched > 0, but next execution reports entities_acted = 0.

Causes

  • All matches got skipped at execute time (cooldown, daily cap, pending action) — check execution history entities_skipped

  • Metric values changed between preview and fire (likely if running near threshold)

  • Rule got paused / status went to error between preview and fire

Escalation

If none of these match your issue:

  1. Capture: rule ID + execution ID + timestamp + observed behavior

  2. Check last_error + details JSON in execution history

  3. Contact support with the above + rule export (if available)

Related