{% 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.requests.form.time_between_check, class="time-check-widget") }} Default time for all watches, when the watch does not have a specific time setting.
{{ render_field(form.requests.form.jitter_seconds, class="jitter_seconds") }} Example - 3 seconds random jitter could trigger up to 3 seconds earlier or up to 3 seconds later
{{ render_field(form.application.form.filter_failure_notification_threshold_attempts, class="filter_failure_notification_threshold_attempts") }} After this many consecutive times that the CSS/xPath filter is missing, send a notification
Set to 0 to disable
{% if not hide_remove_pass %} {% if current_user.is_authenticated %} {{ render_button(form.application.form.removepassword_button) }} {% else %} {{ render_field(form.application.form.password) }} Password protection for your changedetection.io application. {% endif %} {% else %} Password is locked. {% endif %}
{{ render_field(form.application.form.base_url, placeholder="http://yoursite.com:5000/", class="m-d") }} Base URL used for the {base_url} token in notifications and RSS links.
Default value is the ENV var 'BASE_URL' (Currently "{{settings_application['current_base_url']}}"), read more here.
{{ render_checkbox_field(form.application.form.extract_title_as_title) }} Note: This will automatically apply to all existing watches.
{{ render_checkbox_field(form.application.form.empty_pages_are_a_change) }} When a page contains HTML, but no renderable text appears (empty page), is this considered a change?
{% if form.requests.proxy %}
{{ render_field(form.requests.form.proxy, class="fetch-backend-proxy") }} Choose a default proxy for all watches
{% endif %}
{{ render_common_settings_form(form.application.form, emailprefix, settings_application) }}
{{ render_field(form.application.form.fetch_backend, class="fetch-backend") }}

Use the Basic method (default) where your watched sites don'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 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.
{{ render_field(form.application.form.webdriver_delay) }}
{{ render_checkbox_field(form.application.form.ignore_whitespace) }} Ignore whitespace, tabs and new-lines/line-feeds when considering if a change was detected.
Note: Changing this will change the status of your existing watches, possibly trigger alerts etc.
{{ render_checkbox_field(form.application.form.render_anchor_tag_content) }} Render anchor tag content, default disabled, when enabled renders links as (link text)[https://somesite.com]
Note: Changing this could affect the content of your existing watches, possibly trigger alerts etc.
{{ render_field(form.application.form.global_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.application.form.global_ignore_text, rows=5, placeholder="Some text to ignore in a line /some.regex\d{2}/ for case-INsensitive regex ") }} Note: This is applied globally in addition to the per-watch rules.
  • Note: This is applied globally in addition to the per-watch rules.
  • Each line processed separately, any line matching will be ignored (removed before creating the checksum)
  • Regular Expression support, wrap the entire 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

Drive your changedetection.io via API, More about API access here

{{ render_checkbox_field(form.application.form.api_access_token_enabled) }}
Restrict API access limit by using x-api-key header


API Key {{api_key}}
{{ render_button(form.save_button) }} Back Clear Snapshot History
{% endblock %}