[[watcher-troubleshooting]]
== {watcher} Troubleshooting

[float]
=== Dynamic Mapping Error When Trying to Add a Watch

If you get the _Dynamic Mapping is Disabled_ error when you try to add a watch,
verify that the index mappings for the `.watches` index are available. You can
do that by submitting the following request:

[source,js]
--------------------------------------------------
GET .watches/_mapping
--------------------------------------------------
// CONSOLE
// TEST[setup:my_active_watch]

If the index mappings are missing, follow these steps to restore the correct
mappings:

. Stop the Elasticsearch node.
. Add `xpack.watcher.index.rest.direct_access : true` to `elasticsearch.yml`.
. Restart the Elasticsearch node.
. Delete the `.watches` index:
+
[source,js]
--------------------------------------------------
DELETE .watches
--------------------------------------------------
+
. Disable direct access to the `.watches` index:
.. Stop the Elasticsearch node.
.. Remove `xpack.watcher.index.rest.direct_access : true` from `elasticsearch.yml`.
.. Restart the Elasticsearch node.

[float]
=== Unable to Send Email

If you get an authentication error indicating that you need to continue the
sign-in process from a web browser when Watcher attempts to send email, you need
to configure Gmail to
https://support.google.com/accounts/answer/6010255?hl=en[Allow Less Secure Apps to access your account].

If you have two-step verification enabled for your email account, you must
generate and use an App Specific password to send email from {watcher}. For more
information, see:

- Gmail: https://support.google.com/accounts/answer/185833?hl=en[Sign in using App Passwords]
- Outlook.com: http://windows.microsoft.com/en-us/windows/app-passwords-two-step-verification[App passwords and two-step verification]

[float]
=== {watcher} Not Responsive

Keep in mind that there's no built-in validation of scripts that you add to a
watch. Buggy or deliberately malicious scripts can negatively impact {watcher}
performance. For example, if you add multiple watches with buggy script
conditions in a short period of time, {watcher} might be temporarily unable to
process watches until the bad watches time out.
