{% extends 'base.html' %} {% block content %} {% from '_helpers.jinja' import render_field, render_checkbox_field, render_button %} {% from '_common_fields.jinja' import render_common_settings_form %}
{{ render_field(form.url, placeholder="https://...", required=true, class="m-d") }} Some sites use JavaScript to create the content, for this you should use the Chrome/WebDriver Fetcher
{{ render_field(form.title, class="m-d") }}
{{ render_field(form.tag) }} Organisational tag/group name used in the main listing page
{{ render_field(form.time_between_check, class="time-check-widget") }} {% if has_empty_checktime %} Currently using the default global settings, change to another value if you want to be specific. {% else %} Set to blank to use the default global settings. {% endif %}
{{ render_checkbox_field(form.extract_title_as_title) }}
{{ render_field(form.fetch_backend, class="fetch-backend") }}

Use the Basic method (default) where your watched site doesn't need Javascript to render.

The Chrome/Javascript method requires a network connection to a running WebDriver+Chrome server, set by the ENV var 'WEBDRIVER_URL'.

{% if form.proxy %}
{{ render_field(form.proxy, class="fetch-backend-proxy") }} Choose a proxy for this watch
{% endif %}
{{ render_field(form.webdriver_delay) }}
If you're having trouble waiting for the page to be fully rendered (text missing etc), try increasing the 'wait' time here.
This will wait n seconds before extracting the text. {% if using_global_webdriver_wait %}
Using the current global default settings {% endif %}
{{ render_field(form.webdriver_js_execute_code) }}
Run this code before performing change detection, handy for filling in fields and other actions More help and examples here
{% if not playwright_enabled %}
Request override is currently only used by the Basic fast Plaintext/HTTP Client method.
{% endif %}
{{ render_field(form.method) }}
{{ render_field(form.headers, rows=5, placeholder="Example Cookie: foobar User-Agent: wonderbra 1.0") }}
{{ render_field(form.body, rows=5, placeholder="Example { \"name\":\"John\", \"age\":30, \"car\":null }") }}
{{ render_checkbox_field(form.ignore_status_codes) }}

Note: These settings override the global settings for this watch.
{{ render_common_settings_form(form, current_base_url, emailprefix) }}
Pro-tips:
  • Use the preview page to see your filters and triggers highlighted.
  • Some sites use JavaScript to create the content, for this you should use the Chrome/WebDriver Fetcher
{{ render_checkbox_field(form.check_unique_lines) }} Good for websites that just move the content around, and you want to know when NEW content is added, compares new lines against all history for this watch.
{{ render_field(form.css_filter, placeholder=".class-name or #some-id, or other CSS selector rule.", class="m-d") }}
  • CSS - Limit text to this CSS rule, only text matching this CSS rule is included.
  • JSON - Limit text to this JSON rule, using JSONPath, prefix with "json:", use json:$ to force re-formatting if required, test your JSONPath here
  • XPath - Limit text to this XPath rule, simply start with a forward-slash, example //*[contains(@class, 'sametext')] or xpath://*[contains(@class, 'sametext')], test your XPath here
Please be sure that you thoroughly understand how to write CSS or JSONPath, XPath selector rules before filing an issue on GitHub! here for more CSS selector help.
{{ render_field(form.subtractive_selectors, rows=5, placeholder="header footer nav .stockticker") }}
  • Remove HTML element(s) by CSS selector before text conversion.
  • Add multiple elements or CSS selectors per line to ignore multiple parts of the HTML.
{{ render_field(form.ignore_text, rows=5, placeholder="Some text to ignore in a line /some.regex\d{2}/ for case-INsensitive regex ") }}
  • Each line processed separately, any line matching will be ignored (removed before creating the checksum)
  • Regular Expression support, wrap the line in forward slash /regex/
  • Changing this will affect the comparison checksum which may trigger an alert
  • Use the preview/show current tab to see ignores
{{ render_field(form.trigger_text, rows=5, placeholder="Some text to wait for in a line /some.regex\d{2}/ for case-INsensitive regex ") }}
  • Text to wait for before triggering a change/notification, all text and regex are tested case-insensitive.
  • Trigger text is processed from the result-text that comes out of any CSS/JSON Filters for this watch
  • Each line is processed separately (think of each line as "OR")
  • Note: Wrap in forward slash / to use regex example: /foo\d/
{{ render_field(form.text_should_not_be_present, rows=5, placeholder="For example: Out of stock Sold out Not in stock Unavailable") }}
  • Block change-detection while this text is on the page, all text and regex are tested case-insensitive, good for waiting for when a product is available again
  • Block text is processed from the result-text that comes out of any CSS/JSON Filters for this watch
  • All lines here must not exist (think of each line as "OR")
  • Note: Wrap in forward slash / to use regex example: /foo\d/
{{ render_field(form.extract_text, rows=5, placeholder="\d+ online") }}
  • Extracts text in the final output after other filters using regular expressions, for example \d+ online
  • One line per regular-expression.
Pro-tip: This tool is only for limiting which elements will be included on a change-detection, not for interacting with browser directly.
{% if visualselector_enabled %} {% if visualselector_data_is_ready %}
Clear selection One moment, fetching screenshot and element information..
Currently: Loading...

Beta! The Visual Selector is new and there may be minor bugs, please report pages that dont work, help us to improve this software!

{% else %} Screenshot and element data is not available or not yet ready. {% endif %} {% else %}

Sorry, this functionality only works with Playwright/Chrome enabled watches.

Enable the Playwright Chrome fetcher, or alternatively try our very affordable subscription based service.

This is because Selenium/WebDriver can not extract full page screenshots reliably.

{% endif %}
{{ render_button(form.save_button) }} {{ render_button(form.save_and_preview_button) }} Delete Clear History Create Copy
{% endblock %}