Skip to main content

Conditional Monitoring

Conditional Monitoring allows you to set rules that determine when notifications should be sent. Instead of getting alerted for every change, you can filter notifications based on specific conditions - like price thresholds, keyword presence, or numeric values. Conditional monitoring configuration

What is Conditional Monitoring?

Conditional monitoring adds intelligent filtering to change detection. While change detection finds what changed, conditions determine whether to notify based on the changed content.
How it works
  1. changedetection.io detects a change on the page
  2. Conditions are evaluated against the new content
  3. If conditions are met → Notification is sent ✅
  4. If conditions are NOT met → Change is recorded, but no notification ❌

When to Use Conditions

Price Thresholds

Only notify when price drops below 50orrisesabove50 or rises above 200

Keyword Filtering

Alert only when specific keywords appear or disappear

Numeric Ranges

Notify when stock count, ratings, or other numbers meet criteria

Text Presence

Trigger when specific text exists or is removed from the page

Setting Up Conditions

Accessing Condition Rules

1

Edit Watch

Click Edit on any watch
2

Find Conditions Section

Scroll to the “Conditions” section near the bottom
3

Choose Match Logic

Select “Match all” (AND) or “Match any” (OR)
4

Add Condition Rules

Configure field, operator, and value for each rule

Condition Components

Each condition rule has three parts:

1. Field (What to Check)

Select what content to evaluate:
FieldDescriptionExample Use Case
TextThe extracted page contentCheck if “Out of Stock” appears
NumberNumeric value extracted from pageCheck if price < 100
URLThe watch URLConditional logic based on URL
Extract specific values firstFor best results, use Extract text filters to isolate the value you want to check:
  1. Use filter: Price: (\d+\.\d+) to extract price
  2. Then condition: Number < 50

2. Operator (How to Compare)

Available operators:

Text Operators

OperatorDescriptionExample
ContainsText includes the valueText contains “In Stock”
Does not containText excludes the valueText does not contain “Sold Out”
Matches regexText matches regular expressionText matches ^Price: \$\d+
EqualsText exactly matches valueText equals “Available”
Does not equalText doesn’t match valueText does not equal “Unavailable”

Numeric Operators

OperatorDescriptionExample
> (Greater than)Number is larger than valueNumber is greater than 100
< (Less than)Number is smaller than valueNumber is less than 50
>= (Greater or equal)Number is at least valueNumber is at least 10
<= (Less or equal)Number is at most valueNumber is at most 500
== (Equal)Number exactly equals valueNumber equals 0
!= (Not equal)Number doesn’t equal valueNumber does not equal -1

3. Value (What to Compare Against)

The value to compare the field against:
  • For text: Enter the text/keyword/regex pattern
  • For numbers: Enter the numeric value (integers or decimals)
  • Case sensitivity: Text comparisons are case-insensitive by default

Match Logic

Control how multiple conditions are evaluated:
All conditions must be true to send notificationExample:
Rule 1: Text contains "In Stock"
Rule 2: Number < 100

Match: ALL

Result: Notifies only when BOTH in stock AND price < $100
Use for: Strict filtering where all criteria must be met

Common Use Cases

Price Drop Alert (Below Threshold)

Goal: Only notify when price drops below $100 Configuration:
Conditions:
  Field: Number
  Operator: <
  Value: 100
  
Match: ALL
Setup:
  1. Use “Extract text” filter: \$([0-9.]+) to extract price
  2. Add condition: Number < 100
  3. Save watch
Result: Notifications only when extracted price is less than $100

Price in Range (Between Two Values)

Goal: Notify when price is between 50and50 and 150 Configuration:
Conditions:
  Rule 1:
    Field: Number
    Operator: >
    Value: 50
    
  Rule 2:
    Field: Number
    Operator: <
    Value: 150
    
Match: ALL
Result: Notifies only when 50 < price < 150

Keyword Presence (Text Contains)

Goal: Alert when “Hiring” or “Now Accepting Applications” appears Configuration:
Conditions:
  Rule 1:
    Field: Text
    Operator: Contains
    Value: Hiring
    
  Rule 2:
    Field: Text
    Operator: Contains  
    Value: Now Accepting Applications
    
Match: ANY
Result: Notifies if either phrase appears on the page

Stock Count Monitoring

Goal: Alert when stock count drops below 10 units Configuration:
Setup:
  Extract text filter: Stock: (\d+) units
  
Conditions:
  Field: Number
  Operator: <
  Value: 10
  
Match: ALL
Result: Notifies when stock count < 10

Restock Alert (Keyword Disappears)

Goal: Notify when “Out of Stock” is removed from page Configuration:
Conditions:
  Field: Text
  Operator: Does not contain
  Value: Out of Stock
  
Match: ALL
Result: Notifies when “Out of Stock” text is no longer present

Rating Threshold

Goal: Alert when product rating rises above 4.5 stars Configuration:
Setup:
  Extract text filter: Rating: ([0-5]\.[0-9])
  
Conditions:
  Field: Number
  Operator: >
  Value: 4.5
Result: Notifies when rating > 4.5

Advanced Conditional Logic

Multiple Keyword Detection (ALL)

Scenario: Notify only when page contains BOTH “Premium” AND “Discount”
Rule 1: Text contains "Premium"
Rule 2: Text contains "Discount"

Match: ALL

Price Drop OR Keyword

Scenario: Alert if price < $50 OR “Sale” appears
Rule 1: Number < 50
Rule 2: Text contains "Sale"

Match: ANY

Complex Price Condition (Outside Range)

Scenario: Notify when price drops below 20ORrisesabove20 OR rises above 100 (alert on extremes)
Rule 1: Number < 20
Rule 2: Number > 100

Match: ANY

Regex Pattern Matching

Scenario: Alert when email address appears in specific format
Field: Text
Operator: Matches regex
Value: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

Match: ALL

Combining with Other Features

Conditions + Restock Monitoring

Scenario: Monitor product, notify only when in stock AND price < $200 Setup:
  1. Use “Restock & Price Detection” processor
  2. Add conditions:
    Rule 1: Text contains "In Stock"
    Rule 2: Number < 200
    Match: ALL
    

Conditions + Browser Steps

Scenario: Login, navigate to account balance, alert if balance < $100 Setup:
  1. Browser Steps: Login and navigate to balance page
  2. Extract text: Balance: \$([0-9.]+)
  3. Condition: Number < 100

Conditions + Visual Selector

Scenario: Select price element, notify only on price drop Setup:
  1. Visual Selector: Select price element
  2. Extract text: \$([0-9.]+)
  3. Store original price on first check
  4. Condition: Number < [previous_price]
For price comparisons over timeUse the built-in Restock monitoring feature instead of manual conditions. It automatically tracks price changes and has built-in thresholds.

Best Practices

Use Extract text filters to isolate the exact value before applying conditions.Example:
  • Page shows: “Price: 49.99(was49.99 (was 79.99)”
  • Extract filter: Price: \$([0-9.]+)
  • Extracted: 49.99
  • Condition: Number < 50 ✅
Without extraction, the condition would check the entire text.
After setting up conditions:
  1. Click “Check now” to run the watch
  2. View the extracted content in the Preview tab
  3. Verify conditions would evaluate correctly
  4. Adjust extract filters or condition values as needed
Choose the most specific operator for your use case:
  • “Contains” for flexible keyword matching
  • “Equals” for exact text matching
  • “Matches regex” for complex patterns
  • Numeric operators for price/number comparisons
Complex multi-rule conditions can be hard to debug.Instead of:
10 rules with complex regex patterns
Try:
2-3 clear rules with simple comparisons
Create multiple watches if needed
Use watch titles to indicate conditions:
  • “Product X - Alert when < $50”
  • “Job Board - Notify on ‘Hiring’ keyword”
  • “Stock - Alert when count < 10”

Troubleshooting

Condition Never Triggers

Problem: Condition checks the full page text, not the extracted valueSolution:
  1. Add an “Extract text” filter to isolate the value
  2. Test with “Check now” and view Preview tab
  3. Verify the extracted value appears correctly
Problem: Using numeric operator on text, or vice versaSolution:
  • For prices/numbers: Use Field = Number and numeric operators (< > ==)
  • For keywords/text: Use Field = Text and text operators (contains, equals)
Problem: “Matches regex” condition doesn’t matchSolution:
  • Test regex pattern in a regex tester (regex101.com)
  • Check for escaping issues (use \\ for literal backslash)
  • Verify the pattern matches the actual page content format
Problem: Using “Match ALL” when you need “Match ANY” or vice versaSolution:
  • ALL: All rules must be true (strict)
  • ANY: At least one rule must be true (flexible)
Verify which logic matches your intent.

Condition Always Triggers

Possible causes:
  1. Condition too broad:
    • “Text contains ‘a’” will always match (most pages have the letter ‘a’)
    • Make conditions more specific
  2. Number extraction failing:
    • If number can’t be extracted, default value (0 or empty) may match condition
    • Verify extraction is working
  3. Multiple values extracted:
    • If extraction finds multiple numbers, condition may check the first one
    • Refine extraction regex to target exact value

Notifications Still Send Despite Conditions

Check:
  1. Are conditions enabled?
    • Verify condition rules are configured and saved
  2. Is there a separate trigger text filter?
    • “Trigger text” (different feature) may override conditions
    • Check if “Keyword triggers” field is set
  3. Global vs watch notifications:
    • Check if global notifications are sending (they ignore per-watch conditions)
    • Configure conditions in both global and per-watch if needed

Condition Examples by Scenario

E-commerce Product Monitoring

Extract: \$([0-9.]+)

Condition:
  Field: Number
  Operator: <
  Value: 50

Job Board Monitoring

Condition:
  Rule 1: Text contains "Senior"
  Rule 2: Text contains "Engineer" 
  Match: ALL

Real Estate Listings

Extract: Price: \$([0-9,]+)

Condition:
  Field: Number
  Operator: <
  Value: 500000

Stock/Inventory Tracking

Extract: In Stock: ([0-9]+)

Condition:
  Field: Number
  Operator: <
  Value: 10

Conditions vs. Other Features

Conditions vs. Trigger Text

FeaturePurposeExample
Trigger TextWait for specific text to appear before detecting ANY changeWait for “Pre-order Available” then start monitoring
ConditionsFilter notifications based on content criteriaOnly notify when price < $50
Key difference: Trigger text delays monitoring start. Conditions filter notifications.

Conditions vs. Filters

FeaturePurpose
Filters (CSS/XPath/Extract)Control what content is monitored
ConditionsControl when notifications are sent
Use together:
  1. Filters extract the price: $49.99
  2. Conditions decide whether to notify: if price < 50

Filters & Extraction

Extract specific values to use in conditions

Restock Monitoring

Built-in price and stock conditions

Trigger Text

Wait for specific text before monitoring

Next Steps

1

Set Up Your First Condition

Create a price threshold condition on a test watch
2

Combine with Extraction

Use Extract text filters to isolate values for conditions
3

Test Multiple Rules

Experiment with Match ALL vs Match ANY logic
4

Configure Notifications

Set up alerts to receive when conditions are met

Build docs developers (and LLMs) love