From 8c04e0c7c812a6a09e65e7bac17e6926d9ec9468 Mon Sep 17 00:00:00 2001 From: Ralf Schmid Date: Fri, 21 Nov 2025 11:00:06 +0100 Subject: [PATCH 1/5] Removed screenshots, tweaks, added checklist example --- images/manage/webhook/webhook-add.png | Bin 74964 -> 0 bytes manage/webhook.rst | 23 ++- manage/webhook/add.rst | 170 +++++++++--------- manage/webhook/examples.rst | 50 ++---- .../add-checklist-template-to-ticket.rst | 3 + 5 files changed, 117 insertions(+), 129 deletions(-) delete mode 100644 images/manage/webhook/webhook-add.png create mode 100644 manage/webhook/examples/add-checklist-template-to-ticket.rst diff --git a/images/manage/webhook/webhook-add.png b/images/manage/webhook/webhook-add.png deleted file mode 100644 index 0a409b6ba8e4580d54bd4aa6f3882d4e8c061ebb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74964 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 Webhooks*. .. hint:: @@ -21,26 +22,24 @@ poll the Zammad server every *n* minutes. How do Webhooks Work -------------------- -Under the hood, Zammad sends a POST request to a third-party URL -("API endpoint") you specify in the New Webhook dialog. The application server -behind this URL/endpoint must be configured to receive messages from Zammad and +Under the hood, Zammad sends a request to a third-party URL ("API endpoint") you +specify in the webhook configuration. The application server behind this +URL/endpoint must be configured to receive messages from Zammad and handle the provided payload accordingly. Webhooks can be created both from scratch and from pre-defined templates. - When created from scratch, regular webhook payloads by default contain the following JSON data about new/updated tickets: -* ticket attributes/metadata -* associated article(s) -* associated users (e.g. article senders, owners, etc.) -* associated user roles -* associated user organizations (if applicable) -* associated groups +* Ticket attributes/metadata +* Associated article(s) +* Associated users (e.g. article senders, owners, etc.) +* Associated user roles +* Associated user organizations (if applicable) +* Associated groups On the other hand, pre-defined webhooks are designed to work with specific services, containing special payloads that these services understand. - In both cases, however, it is possible to further customize the webhook payload to your own needs. diff --git a/manage/webhook/add.rst b/manage/webhook/add.rst index 9e1787529..007ee0f71 100644 --- a/manage/webhook/add.rst +++ b/manage/webhook/add.rst @@ -4,121 +4,121 @@ Adding Webhooks Defining a webhook allows you to use a specific endpoint in several triggers or schedulers. -.. warning:: **Default Zammad webhook payloads are specific** +Basics +------ - Keep in mind that the remote site has to be able to understand the default - webhook payload, Zammad is sending. Simply throwing the default payload at a - webhook endpoint may not have the desired result! - - See `Custom Payload`_ for a way to customize webhook payloads. - -To add a new regular webhook, use the big green **New Webhook** button. +.. hint:: -.. figure:: /images/manage/webhook/webhook-add.png - :alt: Modal showing webhook configuration - :align: center - :width: 90% + Keep in mind that the remote site has to be able to understand the default + webhook payload, Zammad is sending. Find more information about the + customization of a payload in the next section. +To add a new regular webhook, click the **New Webhook** button. For a pre-defined webhook, click on the arrow button to the right and choose **Pre-defined Webhook** from the dropdown menu. +In case you select a pre-defined webhook, you get asked to choose from one of +the available pre-defined ones: -.. figure:: /images/manage/webhook/webhook-new-buttons.png - :alt: New Pre-defined Webhook button - :align: center - :width: 90% - -Next, select the pre-defined webhook you want and click **Next**. - -.. figure:: /images/manage/webhook/webhook-new-pre-defined-webhook.png - :alt: New pre-defined webhook modal - :align: center - :width: 90% +- Mattermost +- Microsoft Teams +- Rocket Chat +- Slack -.. warning:: **⚠️ Adding a new webhook is not enough** +After you select one and click on **Next**, Zammad shows the webhook +configuration dialog. This is what you see directly when creating a webhook from +scratch. Read on for more information about the configuration of a webhook. - You must, in addition, add a :doc:`Trigger ` or - :doc:`Scheduler ` that references the Webhook! +Configuration +------------- You can configure the following information for webhooks: - Name (mandatory) - This name will be displayed within trigger and scheduler selections. +Name + This name will be displayed within trigger and scheduler selections. - Endpoint (mandatory) - Webhook endpoint Zammad sends its payload to. +Endpoint + Webhook endpoint Zammad sends its payload to. Please note that + Zammad ignores basic authentication parameters here. See below how to + configure username and password via separate fields. - Zammad ignores basic authentication parameters. See below how to - configure :ref:`username ` and - :ref:`password ` via separate - fields. +Request method + Choose between ``DELETE``, ``PATCH``, ``POST`` and ``PUT``, depending + on your use case. - HMAC SHA1 Signature Token - If set, all sent webhooks contain a `x-hub-signature` header allowing - the remote site to verify the request. +SSL verification + Defaults to ``yes`` - if you're using unsecure self signed certificates, + set this option to ``no``. - .. note:: **🔐 Security note** + .. include:: /includes/ssl-verification-warning.rst - This *does not* encrypt the payload. Use HTTPS connections to - secure the communication. It contains a HMAC signature of the body - of the webhook request. +Authentication + Choose between **HTTP Basic Authentication**, **Bearer Token** or no + authentication, depending on what the target service supports. - `Learn more about HUB-Signatures - `_ + Bearer Token + In case you selected this authentication method, add your token here. - SSL verification - Defaults to ``yes`` - if you're using unsecure self signed certificates, - set this option to ``no``. + Username + In case of **HTTP Basic Authentication**, provide your username here. - .. include:: /includes/ssl-verification-warning.rst + Password + In case of **HTTP Basic Authentication**, provide the password of the user + here. - _`HTTP Basic Authentication Username` - Set this if the endpoint requires HTTP basic authentication credentials. +HMAC SHA1 Signature Token + If set, all sent webhooks contain a `x-hub-signature` header allowing + the remote site to verify the request. - _`HTTP Basic Authentication Password` - Set this if the endpoint requires HTTP basic authentication credentials. + .. note:: - Pre-defined Webhook - This field is only available for *pre-defined webhooks*! + This **does not** encrypt the payload. Use HTTPS connections to + secure the communication. It contains a HMAC signature of the body + of the webhook request. Learn more about HUB-Signatures + `here `_. - This field is always disabled in the UI and serves only as a reference - to a pre-defined webhook. It is not possible to change it for existing - webhooks. +Pre-defined Webhook + This field is only displayed for *pre-defined webhooks*! + It only serves as a reference to a pre-defined webhook. It is not possible + to change it for existing webhooks. + Depending on the pre-defined webhook type, additional fields may be + rendered below this one. They can be used for additional customization of + the webhook behavior. - Depending on the pre-defined webhook type, additional fields may be - rendered below this one. They can be used for additional customization of - the webhook behavior. + Example for Mattermost: - .. figure:: /images/manage/webhook/webhook-pre-defined-webhook-fields.png - :alt: Additional pre-defined webhook fields + .. figure:: /images/manage/webhook/webhook-pre-defined-webhook-fields.png + :alt: Additional pre-defined webhook fields - _`Custom Payload` - Defaults to off - webhook will always send :ref:`webhook-payload-default` - to the target endpoint. +Custom Payload + Defaults to off - webhook will always send :ref:`webhook-payload-default` + to the target endpoint. - When switched on, a code editor will be shown below, where you can - configure custom payload for your webhook in JSON format. To insert - supported :doc:`/misc/variables` use ``::`` or ``#{`` - shortcuts for autocomplete. + When switched on, a code editor will be shown below, where you can + configure a custom payload for your webhook in JSON format. To insert + supported :doc:`/misc/variables`, use :kbd:`:` :kbd:`:` or insert ``#{`` + for autocomplete. - Custom payload must be valid JSON syntax! Code editor will inform you - via automated hints if there is an issue with the code. Also, it will - not be possible to save an invalid JSON structure. + The custom payload must have a valid JSON syntax! The code editor will + highlight if there is an issue with the syntax. Also, it will not be + possible to save an invalid JSON structure. - .. figure:: /images/manage/webhook/webhook-custom-payload.gif - :alt: Custom payload code editor + .. figure:: /images/manage/webhook/webhook-custom-payload.gif + :alt: Custom payload code editor - .. hint:: - Pre-defined webhooks will always provide an initial custom payload, - specific for the associated service. + .. hint:: + Pre-defined webhooks will always provide an initial custom payload, + specific for the associated service. - Note - If required you can leave useful information for other Zammad admins - to understand the webhook in question better. +Note + If required you can leave useful information for other Zammad admins + to understand the webhook in question better. - Active - If set to ``inactive`` you can no longer select the webhook within - trigger or scheduler actions. +Active + If set to ``inactive``, you can no longer select the webhook in the + trigger or scheduler configuration. + Inactive webhooks will not be fired. If triggers or schedulers have other + actions configured as well, they will still be executed. - Inactive webhooks used by triggers or schedulers will not be fired. If - triggers or schedulers have other actions configured as well they will - still be executed. +After you set up your webhook, make sure to invoke it via trigger or scheduler. +In case something doesn't work, have a look at the :doc:`troubleshooting ` +section. \ No newline at end of file diff --git a/manage/webhook/examples.rst b/manage/webhook/examples.rst index c2cad90a6..56fbcdbd7 100644 --- a/manage/webhook/examples.rst +++ b/manage/webhook/examples.rst @@ -8,37 +8,23 @@ Webhook Examples examples/microsoft-teams-notifications examples/rocket-chat-notifications examples/slack-notifications - examples/generic-notifications-trigger examples/ntfy-notifications + examples/add-checklist-template-to-ticket + examples/generic-notifications-trigger -:doc:`examples/mattermost-notifications` - Use a Mattermost Channel to receive your Zammad Notifications. - - .. figure:: /images/manage/webhook/webhook-mattermost-sample-notification.png - :alt: Sample Mattermost Channel Notification - :align: center - -:doc:`examples/microsoft-teams-notifications` - Use a Microsoft Teams Channel to receive your Zammad Notifications. - - .. figure:: /images/manage/webhook/webhook-teams-sample-notification.png - :alt: Sample Teams Channel Notification - :align: center - -:doc:`examples/rocket-chat-notifications` - Use a Rocket Chat Channel to receive your Zammad Notifications. - - .. figure:: /images/manage/webhook/webhook-rocket-chat-sample-notification.png - :alt: Sample Rocket Chat Channel Notification - :align: center - -:doc:`examples/slack-notifications` - Use a Slack Channel to receive your Zammad Notifications. - - .. figure:: /images/manage/webhook/webhook-slack-sample-notification.png - :alt: Sample Slack Channel Notification - :align: center - -:doc:`examples/ntfy-notifications` - Use the ntfy service to receive push notification from Zammad on different - devices like your smartphone. +Find links to configuration examples below. They are split into individual +pages for reasons of clearness. Make sure to invoke the webhook via trigger +or scheduler, see :doc:`trigger example `. + +- :doc:`examples/mattermost-notifications`: Use a Mattermost channel to receive + Zammad notifications. +- :doc:`examples/microsoft-teams-notifications`: Use a Microsoft Teams channel + to receive Zammad notifications. +- :doc:`examples/rocket-chat-notifications`: Use a Rocket Chat channel to + receive Zammad notifications. +- :doc:`examples/slack-notifications`: Use a Slack channel to receive Zammad + notifications. +- :doc:`examples/ntfy-notifications`: Use the ntfy service to receive push + notification from Zammad on different devices like your smartphone. +- :doc:`examples/add-checklist-template-to-ticket`: Add a checklist from a + template to new tickets. diff --git a/manage/webhook/examples/add-checklist-template-to-ticket.rst b/manage/webhook/examples/add-checklist-template-to-ticket.rst new file mode 100644 index 000000000..5a4b06f9a --- /dev/null +++ b/manage/webhook/examples/add-checklist-template-to-ticket.rst @@ -0,0 +1,3 @@ +Add a Checklist Template to Tickets +=================================== + From 6cb1f3a449ed4ef8994521f702f75ac25d96d0d6 Mon Sep 17 00:00:00 2001 From: Ralf Schmid Date: Fri, 21 Nov 2025 11:00:39 +0100 Subject: [PATCH 2/5] i18n --- locale/admin-docs.pot | 294 +++++++++++++++++++----------------------- 1 file changed, 131 insertions(+), 163 deletions(-) diff --git a/locale/admin-docs.pot b/locale/admin-docs.pot index d600df95b..714da24dc 100644 --- a/locale/admin-docs.pot +++ b/locale/admin-docs.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Zammad Admin Documentation pre-release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-13 16:27+0000\n" +"POT-Creation-Date: 2025-11-21 11:00+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -343,6 +343,7 @@ msgstr "" #: ../channels/chat.rst:28 #: ../channels/microsoft365-graph/accounts.rst:17 #: ../manage/report-profiles.rst:32 +#: ../manage/webhook/add.rst:32 #: ../misc/first-steps.rst:20 #: ../system/core-workflows/learn-by-example.rst:36 #: ../system/core-workflows/learn-by-example.rst:91 @@ -364,6 +365,7 @@ msgstr "" #: ../manage/scheduler.rst:86 #: ../manage/slas/how-do-they-work.rst:26 #: ../manage/templates.rst:23 +#: ../manage/webhook/add.rst:37 #: ../misc/variables/article.rst:1 #: ../misc/variables/config.rst:1 #: ../misc/variables/current-user.rst:1 @@ -434,7 +436,7 @@ msgstr "" #: ../manage/roles/agent-permissions.rst:31 #: ../manage/roles/user-preferences-permissions.rst:37 #: ../manage/scheduler.rst:158 -#: ../manage/webhook/add.rst:116 +#: ../manage/webhook/add.rst:114 #: ../misc/variables.rst:102 #: ../system/core-workflows/learn-by-example.rst:37 #: ../system/core-workflows/learn-by-example.rst:92 @@ -466,7 +468,7 @@ msgstr "" #: ../manage/roles/index.rst:128 #: ../manage/scheduler.rst:161 #: ../manage/templates.rst:33 -#: ../manage/webhook/add.rst:123 +#: ../manage/webhook/add.rst:120 #: ../system/objects.rst:171 #: ../system/objects.rst:251 msgid "Active" @@ -795,6 +797,7 @@ msgstr "" #: ../channels/email/accounts/account-setup.rst:136 #: ../channels/email/accounts/account-setup.rst:235 #: ../channels/email/accounts/email-notification.rst:34 +#: ../manage/webhook/add.rst:66 #: ../settings/security/password.rst:2 msgid "Password" msgstr "" @@ -936,7 +939,7 @@ msgstr "" #: ../channels/email/accounts/account-setup.rst:153 #: ../channels/email/accounts/account-setup.rst:249 -#: ../manage/webhook/add.rst:72 +#: ../manage/webhook/add.rst:52 #: ../settings/security/third-party/saml.rst:149 #: ../system/integrations/i-doit.rst:67 msgid "SSL verification" @@ -6290,8 +6293,8 @@ msgstr "" #: ../manage/slas/index.rst:78 #: ../manage/trigger.rst:24 #: ../manage/trigger.rst:24 -#: ../manage/webhook.rst:47 -#: ../manage/webhook.rst:47 +#: ../manage/webhook.rst:46 +#: ../manage/webhook.rst:46 #: ../system/core-workflows.rst:23 #: ../system/core-workflows.rst:23 #: ../system/objects.rst:32 @@ -8990,6 +8993,7 @@ msgid "Scheduler jobs can process a maximum of ``2000`` objects per run. This is msgstr "" #: ../manage/scheduler.rst:22 +#: ../manage/webhook/add.rst:8 #: ../system/core-workflows/learn-by-example.rst:8 msgid "Basics" msgstr "" @@ -10831,67 +10835,59 @@ msgid "Webhook" msgstr "" #: ../manage/webhook.rst:4 -msgid "Webhooks are a way to integrate Zammad with other web services or applications, allowing them to subscribe to live updates about tickets instead of having to poll the Zammad server every *n* minutes." +msgid "Webhooks are a way to integrate Zammad with other web services or applications, allowing them to subscribe to live updates about tickets instead of having to poll the Zammad server every *n* minutes. You can find the webhook configuration in Zammad's settings under *Manage > Webhooks*." msgstr "" -#: ../manage/webhook.rst:10 +#: ../manage/webhook.rst:11 msgid "Webhooks may not arrive immediately. They are sent out with the same priority and order as email triggers. If webhook dispatch fails (e.g. because the receiving server is misconfigured), Zammad will retry up to four times." msgstr "" -#: ../manage/webhook.rst:14 +#: ../manage/webhook.rst:15 msgid "Webhooks have to be triggered by :doc:`/manage/trigger` or :doc:`/manage/scheduler` jobs." msgstr "" -#: ../manage/webhook.rst:16 +#: ../manage/webhook.rst:17 msgid "The usage of variables is limited compared to other places. Some features are not available in webhooks (e.g. the ``.value`` extension, translation (``#{t(object.attribute)}``) and time formatting (``#{dt(object.time_attribute, [...]``) functions)." msgstr "" -#: ../manage/webhook.rst:22 +#: ../manage/webhook.rst:23 msgid "How do Webhooks Work" msgstr "" -#: ../manage/webhook.rst:24 -msgid "Under the hood, Zammad sends a POST request to a third-party URL (\"API endpoint\") you specify in the New Webhook dialog. The application server behind this URL/endpoint must be configured to receive messages from Zammad and handle the provided payload accordingly." -msgstr "" - -#: ../manage/webhook.rst:29 -msgid "Webhooks can be created both from scratch and from pre-defined templates." +#: ../manage/webhook.rst:25 +msgid "Under the hood, Zammad sends a request to a third-party URL (\"API endpoint\") you specify in the webhook configuration. The application server behind this URL/endpoint must be configured to receive messages from Zammad and handle the provided payload accordingly." msgstr "" -#: ../manage/webhook.rst:31 -msgid "When created from scratch, regular webhook payloads by default contain the following JSON data about new/updated tickets:" +#: ../manage/webhook.rst:30 +msgid "Webhooks can be created both from scratch and from pre-defined templates. When created from scratch, regular webhook payloads by default contain the following JSON data about new/updated tickets:" msgstr "" #: ../manage/webhook.rst:34 -msgid "ticket attributes/metadata" +msgid "Ticket attributes/metadata" msgstr "" #: ../manage/webhook.rst:35 -msgid "associated article(s)" +msgid "Associated article(s)" msgstr "" #: ../manage/webhook.rst:36 -msgid "associated users (e.g. article senders, owners, etc.)" +msgid "Associated users (e.g. article senders, owners, etc.)" msgstr "" #: ../manage/webhook.rst:37 -msgid "associated user roles" +msgid "Associated user roles" msgstr "" #: ../manage/webhook.rst:38 -msgid "associated user organizations (if applicable)" +msgid "Associated user organizations (if applicable)" msgstr "" #: ../manage/webhook.rst:39 -msgid "associated groups" +msgid "Associated groups" msgstr "" #: ../manage/webhook.rst:41 -msgid "On the other hand, pre-defined webhooks are designed to work with specific services, containing special payloads that these services understand." -msgstr "" - -#: ../manage/webhook.rst:44 -msgid "In both cases, however, it is possible to further customize the webhook payload to your own needs." +msgid "On the other hand, pre-defined webhooks are designed to work with specific services, containing special payloads that these services understand. In both cases, however, it is possible to further customize the webhook payload to your own needs." msgstr "" #: ../manage/webhook/add.rst:2 @@ -10902,237 +10898,191 @@ msgstr "" msgid "Defining a webhook allows you to use a specific endpoint in several triggers or schedulers." msgstr "" -#: ../manage/webhook/add.rst:7 -msgid "**Default Zammad webhook payloads are specific**" +#: ../manage/webhook/add.rst:12 +msgid "Keep in mind that the remote site has to be able to understand the default webhook payload, Zammad is sending. Find more information about the customization of a payload in the next section." msgstr "" -#: ../manage/webhook/add.rst:9 -msgid "Keep in mind that the remote site has to be able to understand the default webhook payload, Zammad is sending. Simply throwing the default payload at a webhook endpoint may not have the desired result!" +#: ../manage/webhook/add.rst:16 +msgid "To add a new regular webhook, click the **New Webhook** button. For a pre-defined webhook, click on the arrow button to the right and choose **Pre-defined Webhook** from the dropdown menu. In case you select a pre-defined webhook, you get asked to choose from one of the available pre-defined ones:" msgstr "" -#: ../manage/webhook/add.rst:13 -msgid "See `Custom Payload`_ for a way to customize webhook payloads." +#: ../manage/webhook/add.rst:22 +msgid "Mattermost" msgstr "" -#: ../manage/webhook/add.rst:15 -msgid "To add a new regular webhook, use the big green **New Webhook** button." +#: ../manage/webhook/add.rst:23 +msgid "Microsoft Teams" msgstr "" -#: ../manage/webhook/add.rst:None -msgid "Modal showing webhook configuration" +#: ../manage/webhook/add.rst:24 +msgid "Rocket Chat" msgstr "" -#: ../manage/webhook/add.rst:22 -msgid "For a pre-defined webhook, click on the arrow button to the right and choose **Pre-defined Webhook** from the dropdown menu." +#: ../manage/webhook/add.rst:25 +msgid "Slack" msgstr "" -#: ../manage/webhook/add.rst:None -#: ../manage/webhook/examples/mattermost-notifications.rst:None -#: ../manage/webhook/examples/microsoft-teams-notifications.rst:None -#: ../manage/webhook/examples/rocket-chat-notifications.rst:None -#: ../manage/webhook/examples/slack-notifications.rst:None -msgid "New Pre-defined Webhook button" +#: ../manage/webhook/add.rst:27 +msgid "After you select one and click on **Next**, Zammad shows the webhook configuration dialog. This is what you see directly when creating a webhook from scratch. Read on for more information about the configuration of a webhook." msgstr "" -#: ../manage/webhook/add.rst:30 -msgid "Next, select the pre-defined webhook you want and click **Next**." -msgstr "" - -#: ../manage/webhook/add.rst:None -msgid "New pre-defined webhook modal" +#: ../manage/webhook/add.rst:34 +msgid "You can configure the following information for webhooks:" msgstr "" #: ../manage/webhook/add.rst:37 -msgid "**⚠️ Adding a new webhook is not enough**" -msgstr "" - -#: ../manage/webhook/add.rst:39 -msgid "You must, in addition, add a :doc:`Trigger ` or :doc:`Scheduler ` that references the Webhook!" +msgid "This name will be displayed within trigger and scheduler selections." msgstr "" #: ../manage/webhook/add.rst:42 -msgid "You can configure the following information for webhooks:" +#: ../system/integrations/cti/placetel.rst:44 +#: ../system/integrations/i-doit.rst:46 +msgid "Endpoint" msgstr "" -#: ../manage/webhook/add.rst:45 -msgid "Name (mandatory)" +#: ../manage/webhook/add.rst:40 +msgid "Webhook endpoint Zammad sends its payload to. Please note that Zammad ignores basic authentication parameters here. See below how to configure username and password via separate fields." msgstr "" -#: ../manage/webhook/add.rst:45 -msgid "This name will be displayed within trigger and scheduler selections." +#: ../manage/webhook/add.rst:46 +msgid "Request method" msgstr "" -#: ../manage/webhook/add.rst:53 -msgid "Endpoint (mandatory)" -msgstr "" - -#: ../manage/webhook/add.rst:48 -msgid "Webhook endpoint Zammad sends its payload to." +#: ../manage/webhook/add.rst:45 +msgid "Choose between ``DELETE``, ``PATCH``, ``POST`` and ``PUT``, depending on your use case." msgstr "" -#: ../manage/webhook/add.rst:50 -msgid "Zammad ignores basic authentication parameters. See below how to configure :ref:`username ` and :ref:`password ` via separate fields." +#: ../manage/webhook/add.rst:49 +msgid "Defaults to ``yes`` - if you're using unsecure self signed certificates, set this option to ``no``." msgstr "" #: ../manage/webhook/add.rst:66 -msgid "HMAC SHA1 Signature Token" +#: ../system/integrations/elasticsearch.rst:64 +msgid "Authentication" msgstr "" -#: ../manage/webhook/add.rst:56 -msgid "If set, all sent webhooks contain a `x-hub-signature` header allowing the remote site to verify the request." +#: ../manage/webhook/add.rst:55 +msgid "Choose between **HTTP Basic Authentication**, **Bearer Token** or no authentication, depending on what the target service supports." msgstr "" #: ../manage/webhook/add.rst:59 -msgid "**🔐 Security note**" +msgid "Bearer Token" msgstr "" -#: ../manage/webhook/add.rst:61 -msgid "This *does not* encrypt the payload. Use HTTPS connections to secure the communication. It contains a HMAC signature of the body of the webhook request." +#: ../manage/webhook/add.rst:59 +msgid "In case you selected this authentication method, add your token here." msgstr "" -#: ../manage/webhook/add.rst:65 -msgid "`Learn more about HUB-Signatures `_" +#: ../manage/webhook/add.rst:62 +msgid "Username" msgstr "" -#: ../manage/webhook/add.rst:69 -msgid "Defaults to ``yes`` - if you're using unsecure self signed certificates, set this option to ``no``." +#: ../manage/webhook/add.rst:62 +msgid "In case of **HTTP Basic Authentication**, provide your username here." msgstr "" -#: ../manage/webhook/add.rst:75 -msgid "_`HTTP Basic Authentication Username`" +#: ../manage/webhook/add.rst:65 +msgid "In case of **HTTP Basic Authentication**, provide the password of the user here." msgstr "" -#: ../manage/webhook/add.rst:75 -#: ../manage/webhook/add.rst:78 -msgid "Set this if the endpoint requires HTTP basic authentication credentials." +#: ../manage/webhook/add.rst:77 +msgid "HMAC SHA1 Signature Token" msgstr "" -#: ../manage/webhook/add.rst:78 -msgid "_`HTTP Basic Authentication Password`" +#: ../manage/webhook/add.rst:69 +msgid "If set, all sent webhooks contain a `x-hub-signature` header allowing the remote site to verify the request." msgstr "" -#: ../manage/webhook/add.rst:92 -msgid "Pre-defined Webhook" +#: ../manage/webhook/add.rst:74 +msgid "This **does not** encrypt the payload. Use HTTPS connections to secure the communication. It contains a HMAC signature of the body of the webhook request. Learn more about HUB-Signatures `here `_." msgstr "" -#: ../manage/webhook/add.rst:81 -msgid "This field is only available for *pre-defined webhooks*!" +#: ../manage/webhook/add.rst:90 +msgid "Pre-defined Webhook" msgstr "" -#: ../manage/webhook/add.rst:83 -msgid "This field is always disabled in the UI and serves only as a reference to a pre-defined webhook. It is not possible to change it for existing webhooks." +#: ../manage/webhook/add.rst:80 +msgid "This field is only displayed for *pre-defined webhooks*! It only serves as a reference to a pre-defined webhook. It is not possible to change it for existing webhooks. Depending on the pre-defined webhook type, additional fields may be rendered below this one. They can be used for additional customization of the webhook behavior." msgstr "" #: ../manage/webhook/add.rst:87 -msgid "Depending on the pre-defined webhook type, additional fields may be rendered below this one. They can be used for additional customization of the webhook behavior." +msgid "Example for Mattermost:" msgstr "" #: ../manage/webhook/add.rst:0 msgid "Additional pre-defined webhook fields" msgstr "" -#: ../manage/webhook/add.rst:112 -msgid "_`Custom Payload`" +#: ../manage/webhook/add.rst:110 +msgid "Custom Payload" msgstr "" -#: ../manage/webhook/add.rst:95 +#: ../manage/webhook/add.rst:93 msgid "Defaults to off - webhook will always send :ref:`webhook-payload-default` to the target endpoint." msgstr "" -#: ../manage/webhook/add.rst:98 -msgid "When switched on, a code editor will be shown below, where you can configure custom payload for your webhook in JSON format. To insert supported :doc:`/misc/variables` use ``::`` or ``#{`` shortcuts for autocomplete." +#: ../manage/webhook/add.rst:96 +msgid "When switched on, a code editor will be shown below, where you can configure a custom payload for your webhook in JSON format. To insert supported :doc:`/misc/variables`, use :kbd:`:` :kbd:`:` or insert ``#{`` for autocomplete." msgstr "" -#: ../manage/webhook/add.rst:103 -msgid "Custom payload must be valid JSON syntax! Code editor will inform you via automated hints if there is an issue with the code. Also, it will not be possible to save an invalid JSON structure." +#: ../manage/webhook/add.rst:101 +msgid "The custom payload must have a valid JSON syntax! The code editor will highlight if there is an issue with the syntax. Also, it will not be possible to save an invalid JSON structure." msgstr "" #: ../manage/webhook/add.rst:0 msgid "Custom payload code editor" msgstr "" -#: ../manage/webhook/add.rst:111 +#: ../manage/webhook/add.rst:109 msgid "Pre-defined webhooks will always provide an initial custom payload, specific for the associated service." msgstr "" -#: ../manage/webhook/add.rst:115 +#: ../manage/webhook/add.rst:113 msgid "If required you can leave useful information for other Zammad admins to understand the webhook in question better." msgstr "" -#: ../manage/webhook/add.rst:119 -msgid "If set to ``inactive`` you can no longer select the webhook within trigger or scheduler actions." +#: ../manage/webhook/add.rst:117 +msgid "If set to ``inactive``, you can no longer select the webhook in the trigger or scheduler configuration. Inactive webhooks will not be fired. If triggers or schedulers have other actions configured as well, they will still be executed." msgstr "" #: ../manage/webhook/add.rst:122 -msgid "Inactive webhooks used by triggers or schedulers will not be fired. If triggers or schedulers have other actions configured as well they will still be executed." +msgid "After you set up your webhook, make sure to invoke it via trigger or scheduler. In case something doesn't work, have a look at the :doc:`troubleshooting ` section." msgstr "" #: ../manage/webhook/examples.rst:2 msgid "Webhook Examples" msgstr "" -#: ../manage/webhook/examples.rst:19 -msgid ":doc:`examples/mattermost-notifications`" -msgstr "" - #: ../manage/webhook/examples.rst:15 -msgid "Use a Mattermost Channel to receive your Zammad Notifications." +msgid "Find links to configuration examples below. They are split into individual pages for reasons of clearness. Make sure to invoke the webhook via trigger or scheduler, see :doc:`trigger example `." msgstr "" -#: ../manage/webhook/examples.rst:0 -#: ../manage/webhook/examples/mattermost-notifications.rst:100 -#: ../manage/webhook/examples/mattermost-notifications.rst:None -msgid "Sample Mattermost Channel Notification" +#: ../manage/webhook/examples.rst:19 +msgid ":doc:`examples/mattermost-notifications`: Use a Mattermost channel to receive Zammad notifications." msgstr "" -#: ../manage/webhook/examples.rst:26 -msgid ":doc:`examples/microsoft-teams-notifications`" +#: ../manage/webhook/examples.rst:21 +msgid ":doc:`examples/microsoft-teams-notifications`: Use a Microsoft Teams channel to receive Zammad notifications." msgstr "" -#: ../manage/webhook/examples.rst:22 -msgid "Use a Microsoft Teams Channel to receive your Zammad Notifications." +#: ../manage/webhook/examples.rst:23 +msgid ":doc:`examples/rocket-chat-notifications`: Use a Rocket Chat channel to receive Zammad notifications." msgstr "" -#: ../manage/webhook/examples.rst:0 -#: ../manage/webhook/examples/microsoft-teams-notifications.rst:114 -#: ../manage/webhook/examples/microsoft-teams-notifications.rst:None -msgid "Sample Teams Channel Notification" +#: ../manage/webhook/examples.rst:25 +msgid ":doc:`examples/slack-notifications`: Use a Slack channel to receive Zammad notifications." msgstr "" -#: ../manage/webhook/examples.rst:33 -msgid ":doc:`examples/rocket-chat-notifications`" +#: ../manage/webhook/examples.rst:27 +msgid ":doc:`examples/ntfy-notifications`: Use the ntfy service to receive push notification from Zammad on different devices like your smartphone." msgstr "" #: ../manage/webhook/examples.rst:29 -msgid "Use a Rocket Chat Channel to receive your Zammad Notifications." -msgstr "" - -#: ../manage/webhook/examples.rst:0 -#: ../manage/webhook/examples/rocket-chat-notifications.rst:96 -#: ../manage/webhook/examples/rocket-chat-notifications.rst:None -msgid "Sample Rocket Chat Channel Notification" -msgstr "" - -#: ../manage/webhook/examples.rst:40 -msgid ":doc:`examples/slack-notifications`" +msgid ":doc:`examples/add-checklist-template-to-ticket`: Add a checklist from a template to new tickets." msgstr "" -#: ../manage/webhook/examples.rst:36 -msgid "Use a Slack Channel to receive your Zammad Notifications." -msgstr "" - -#: ../manage/webhook/examples.rst:0 -#: ../manage/webhook/examples/slack-notifications.rst:108 -#: ../manage/webhook/examples/slack-notifications.rst:None -msgid "Sample Slack Channel Notification" -msgstr "" - -#: ../manage/webhook/examples.rst:43 -msgid ":doc:`examples/ntfy-notifications`" -msgstr "" - -#: ../manage/webhook/examples.rst:43 -msgid "Use the ntfy service to receive push notification from Zammad on different devices like your smartphone." +#: ../manage/webhook/examples/add-checklist-template-to-ticket.rst:2 +msgid "Add a Checklist Template to Tickets" msgstr "" #: ../manage/webhook/examples/generic-notifications-trigger.rst:2 @@ -11326,6 +11276,13 @@ msgstr "" msgid "Go to :doc:`Webhook ` management screen in your Zammad instance and click on the arrow next to the green button in the upper right corner. Choose **Pre-defined Webhook** from the dropdown menu." msgstr "" +#: ../manage/webhook/examples/mattermost-notifications.rst:None +#: ../manage/webhook/examples/microsoft-teams-notifications.rst:None +#: ../manage/webhook/examples/rocket-chat-notifications.rst:None +#: ../manage/webhook/examples/slack-notifications.rst:None +msgid "New Pre-defined Webhook button" +msgstr "" + #: ../manage/webhook/examples/mattermost-notifications.rst:63 msgid "In the subsequent modal dialog, select **Mattermost Notifications** as the pre-defined webhook." msgstr "" @@ -11384,6 +11341,11 @@ msgstr "" msgid "Once the trigger is in place, your webhook is ready for use!" msgstr "" +#: ../manage/webhook/examples/mattermost-notifications.rst:100 +#: ../manage/webhook/examples/mattermost-notifications.rst:None +msgid "Sample Mattermost Channel Notification" +msgstr "" + #: ../manage/webhook/examples/mattermost-notifications.rst:102 msgid "From now on, whenever a ticket is created or updated in your Zammad system, a suitable notification will be posted in the configured Mattermost Channel. The notification will contain the link to the ticket, updated data and :ref:`content of the last article `. It will also be :user-docs:`color coded ` according to its latest state." msgstr "" @@ -11545,6 +11507,11 @@ msgstr "" msgid "As a last step, you need to create a :doc:`Trigger ` for posting a notification to the Microsoft Teams channel under certain conditions." msgstr "" +#: ../manage/webhook/examples/microsoft-teams-notifications.rst:114 +#: ../manage/webhook/examples/microsoft-teams-notifications.rst:None +msgid "Sample Teams Channel Notification" +msgstr "" + #: ../manage/webhook/examples/microsoft-teams-notifications.rst:116 msgid "From now on, whenever a ticket is created or updated in your Zammad system, a suitable notification will be posted in the configured Teams Channel. The notification will contain the link to the ticket, updated data and :ref:`content of the last article `. It will also also be :user-docs:`color coded ` according to its latest state." msgstr "" @@ -11785,6 +11752,11 @@ msgstr "" msgid "As a last step, you need to create a :doc:`Trigger ` for posting a notification to the Rocket Chat channel under certain conditions." msgstr "" +#: ../manage/webhook/examples/rocket-chat-notifications.rst:96 +#: ../manage/webhook/examples/rocket-chat-notifications.rst:None +msgid "Sample Rocket Chat Channel Notification" +msgstr "" + #: ../manage/webhook/examples/rocket-chat-notifications.rst:98 msgid "From now on, whenever a ticket is created or updated in your Zammad system, a suitable notification will be posted in the configured Rocket Chat Channel. The notification will contain the link to the ticket, updated data and :ref:`content of the last article `. It will also be :user-docs:`color coded ` according to its latest state." msgstr "" @@ -11905,6 +11877,11 @@ msgstr "" msgid "As a last step, you need to create a :doc:`Trigger ` for posting a notification to the Slack channel under certain conditions." msgstr "" +#: ../manage/webhook/examples/slack-notifications.rst:108 +#: ../manage/webhook/examples/slack-notifications.rst:None +msgid "Sample Slack Channel Notification" +msgstr "" + #: ../manage/webhook/examples/slack-notifications.rst:110 msgid "From now on, whenever a ticket is escalated or has reached escalation warning in your Zammad system, a suitable notification will be posted in the configured Slack Channel. The notification will contain the link to the ticket, escalation information and :ref:`content of the last article `. It will also be :user-docs:`color coded ` according to its latest state." msgstr "" @@ -20252,11 +20229,6 @@ msgstr "" msgid "The here listed endpoint settings are relevant for the :doc:`integration configuration with Placetel `." msgstr "" -#: ../system/integrations/cti/placetel.rst:44 -#: ../system/integrations/i-doit.rst:46 -msgid "Endpoint" -msgstr "" - #: ../system/integrations/cti/placetel.rst:43 msgid "This endpoint will be required for the Zammad integration within the Placetel web interface." msgstr "" @@ -20628,10 +20600,6 @@ msgstr "" msgid "The major version of the search index being used. This is required by some Reporting tools like Grafana." msgstr "" -#: ../system/integrations/elasticsearch.rst:64 -msgid "Authentication" -msgstr "" - #: ../system/integrations/elasticsearch.rst:64 msgid "The authentication type being supported. ``Basic Authentication``" msgstr "" From 400d0f015f8e762f4c940e033767cf3089f7a134 Mon Sep 17 00:00:00 2001 From: Ralf Schmid Date: Fri, 21 Nov 2025 13:45:46 +0100 Subject: [PATCH 3/5] Added example for checklists --- locale/admin-docs.pot | 82 ++++++++++++++++--- manage/webhook/examples.rst | 7 +- .../add-checklist-template-to-ticket.rst | 3 - .../examples/add-checklist-to-ticket.rst | 52 ++++++++++++ 4 files changed, 127 insertions(+), 17 deletions(-) delete mode 100644 manage/webhook/examples/add-checklist-template-to-ticket.rst create mode 100644 manage/webhook/examples/add-checklist-to-ticket.rst diff --git a/locale/admin-docs.pot b/locale/admin-docs.pot index 714da24dc..7cd26d6af 100644 --- a/locale/admin-docs.pot +++ b/locale/admin-docs.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Zammad Admin Documentation pre-release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-21 11:00+0100\n" +"POT-Creation-Date: 2025-11-21 13:45+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -11054,35 +11054,95 @@ msgid "Webhook Examples" msgstr "" #: ../manage/webhook/examples.rst:15 -msgid "Find links to configuration examples below. They are split into individual pages for reasons of clearness. Make sure to invoke the webhook via trigger or scheduler, see :doc:`trigger example `." +msgid "Find links to configuration examples below. They are split into individual pages for reasons of clearness. Make sure to invoke the webhook via trigger or scheduler after creation, see :doc:`trigger example `." msgstr "" -#: ../manage/webhook/examples.rst:19 +#: ../manage/webhook/examples.rst:20 msgid ":doc:`examples/mattermost-notifications`: Use a Mattermost channel to receive Zammad notifications." msgstr "" -#: ../manage/webhook/examples.rst:21 +#: ../manage/webhook/examples.rst:22 msgid ":doc:`examples/microsoft-teams-notifications`: Use a Microsoft Teams channel to receive Zammad notifications." msgstr "" -#: ../manage/webhook/examples.rst:23 +#: ../manage/webhook/examples.rst:24 msgid ":doc:`examples/rocket-chat-notifications`: Use a Rocket Chat channel to receive Zammad notifications." msgstr "" -#: ../manage/webhook/examples.rst:25 +#: ../manage/webhook/examples.rst:26 msgid ":doc:`examples/slack-notifications`: Use a Slack channel to receive Zammad notifications." msgstr "" -#: ../manage/webhook/examples.rst:27 +#: ../manage/webhook/examples.rst:28 msgid ":doc:`examples/ntfy-notifications`: Use the ntfy service to receive push notification from Zammad on different devices like your smartphone." msgstr "" -#: ../manage/webhook/examples.rst:29 -msgid ":doc:`examples/add-checklist-template-to-ticket`: Add a checklist from a template to new tickets." +#: ../manage/webhook/examples.rst:30 +msgid ":doc:`examples/add-checklist-to-ticket`: Add a checklist from a template to new tickets." msgstr "" -#: ../manage/webhook/examples/add-checklist-template-to-ticket.rst:2 -msgid "Add a Checklist Template to Tickets" +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:2 +msgid "Add Checklist to Tickets" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:4 +msgid "Follow the steps below to add a checklist from a template to all tickets after they get created." +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:8 +msgid "Create a Token" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:10 +msgid "Create a personal access token in the account you want to use to create the checklists in the tickets. Make sure the account has appropriate permissions. To create the token, go to the :user-docs:`profile settings (user docs) ` by clicking on the avatar image (either image or initials) on the left bottom corner and select **Token Access**. Make sure that the token has ``ticket.agent`` permission and the user is able to change tickets in the groups you want to add the checklist to tickets." +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:20 +msgid "Add Webhook" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:22 +msgid "Create a new webhook with the following configuration:" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:24 +msgid "Endpoint: ``https://{your.domain.tld}/api/v1/checklists`` (replace the value in {} with the domain of your Zammad)" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:26 +msgid "Request method: ``POST``" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:27 +msgid "Authentication: **Bearer Token**" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:28 +msgid "Bearer token: paste the token you created before" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:29 +msgid "Custom payload: activate it and add the following snippet. Make sure to replace the value ``1`` for ``template_id`` with the ID of your checklist template." +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:41 +msgid "Create Trigger" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:43 +msgid "Configure a trigger which fires the webhook after ticket creation. In case you want to additionally narrow the condition down, just enhance the example (e.g. by checking the group of a ticket or limit it for specific ticket titles). Have a look at the :doc:`example configuration `. For the scenario to add a checklist to every ticket after creation, the condition could look like this:" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:50 +msgid "Activated by: Action" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:51 +msgid "Action execution: Selective" +msgstr "" + +#: ../manage/webhook/examples/add-checklist-to-ticket.rst:52 +msgid "Condidions for affected objects: **Action** > *is* > created" msgstr "" #: ../manage/webhook/examples/generic-notifications-trigger.rst:2 diff --git a/manage/webhook/examples.rst b/manage/webhook/examples.rst index 56fbcdbd7..0dad7c22e 100644 --- a/manage/webhook/examples.rst +++ b/manage/webhook/examples.rst @@ -9,12 +9,13 @@ Webhook Examples examples/rocket-chat-notifications examples/slack-notifications examples/ntfy-notifications - examples/add-checklist-template-to-ticket + examples/add-checklist-to-ticket examples/generic-notifications-trigger Find links to configuration examples below. They are split into individual pages for reasons of clearness. Make sure to invoke the webhook via trigger -or scheduler, see :doc:`trigger example `. +or scheduler after creation, see +:doc:`trigger example `. - :doc:`examples/mattermost-notifications`: Use a Mattermost channel to receive Zammad notifications. @@ -26,5 +27,5 @@ or scheduler, see :doc:`trigger example notifications. - :doc:`examples/ntfy-notifications`: Use the ntfy service to receive push notification from Zammad on different devices like your smartphone. -- :doc:`examples/add-checklist-template-to-ticket`: Add a checklist from a +- :doc:`examples/add-checklist-to-ticket`: Add a checklist from a template to new tickets. diff --git a/manage/webhook/examples/add-checklist-template-to-ticket.rst b/manage/webhook/examples/add-checklist-template-to-ticket.rst deleted file mode 100644 index 5a4b06f9a..000000000 --- a/manage/webhook/examples/add-checklist-template-to-ticket.rst +++ /dev/null @@ -1,3 +0,0 @@ -Add a Checklist Template to Tickets -=================================== - diff --git a/manage/webhook/examples/add-checklist-to-ticket.rst b/manage/webhook/examples/add-checklist-to-ticket.rst new file mode 100644 index 000000000..e1c0cc304 --- /dev/null +++ b/manage/webhook/examples/add-checklist-to-ticket.rst @@ -0,0 +1,52 @@ +Add Checklist to Tickets +======================== + +Follow the steps below to add a checklist from a template to all tickets after +they get created. + +Create a Token +-------------- + +Create a personal access token in the account you want to use to create the +checklists in the tickets. Make sure the account has appropriate permissions. +To create the token, go to the +:user-docs:`profile settings (user docs) ` +by clicking on the avatar image (either image or initials) on the left bottom +corner and select **Token Access**. Make sure that the token has +``ticket.agent`` permission and the user is able to change tickets in the +groups you want to add the checklist to tickets. + +Add Webhook +----------- + +Create a new webhook with the following configuration: + +- Endpoint: ``https://{your.domain.tld}/api/v1/checklists`` (replace the value + in {} with the domain of your Zammad) +- Request method: ``POST`` +- Authentication: **Bearer Token** +- Bearer token: paste the token you created before +- Custom payload: activate it and add the following snippet. Make sure + to replace the value ``1`` for ``template_id`` with the ID of your checklist + template. + +.. code-block:: json + + { + "ticket_id": "#{ticket.id}", + "template_id": 1 + } + +Create Trigger +-------------- + +Configure a trigger which fires the webhook after ticket creation. In case +you want to additionally narrow the condition down, just enhance the example +(e.g. by checking the group of a ticket or limit it for specific ticket titles). +Have a look at the :doc:`example configuration `. +For the scenario to add a checklist to every ticket after creation, the +condition could look like this: + +- Activated by: Action +- Action execution: Selective +- Condidions for affected objects: **Action** > *is* > created From 1e9fc38ae8fa3f17ffe9746883ed222b916aac96 Mon Sep 17 00:00:00 2001 From: Ralf Schmid Date: Fri, 21 Nov 2025 13:47:41 +0100 Subject: [PATCH 4/5] Unified IDs in code block --- manage/webhook/examples/add-checklist-to-ticket.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manage/webhook/examples/add-checklist-to-ticket.rst b/manage/webhook/examples/add-checklist-to-ticket.rst index e1c0cc304..6b106cb74 100644 --- a/manage/webhook/examples/add-checklist-to-ticket.rst +++ b/manage/webhook/examples/add-checklist-to-ticket.rst @@ -34,7 +34,7 @@ Create a new webhook with the following configuration: { "ticket_id": "#{ticket.id}", - "template_id": 1 + "template_id": "1" } Create Trigger From 2e048cfd0d37f44f81f438b1c78052d48983d5aa Mon Sep 17 00:00:00 2001 From: Ralf Schmid Date: Fri, 21 Nov 2025 14:09:11 +0100 Subject: [PATCH 5/5] Small tweaks --- locale/admin-docs.pot | 4 ++-- manage/webhook/examples/add-checklist-to-ticket.rst | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/locale/admin-docs.pot b/locale/admin-docs.pot index 7cd26d6af..9db4ebd07 100644 --- a/locale/admin-docs.pot +++ b/locale/admin-docs.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Zammad Admin Documentation pre-release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-21 13:45+0100\n" +"POT-Creation-Date: 2025-11-21 14:08+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -11130,7 +11130,7 @@ msgid "Create Trigger" msgstr "" #: ../manage/webhook/examples/add-checklist-to-ticket.rst:43 -msgid "Configure a trigger which fires the webhook after ticket creation. In case you want to additionally narrow the condition down, just enhance the example (e.g. by checking the group of a ticket or limit it for specific ticket titles). Have a look at the :doc:`example configuration `. For the scenario to add a checklist to every ticket after creation, the condition could look like this:" +msgid "Configure a trigger which invokes the webhook after ticket creation. In case you additionally want to narrow down affected tickets, just enhance the condition (e.g. by checking the group of a ticket or limit it for specific ticket titles). Have a look at the :doc:`example configuration ` of a trigger for sending notifications. For this scenario, the condition could look like this:" msgstr "" #: ../manage/webhook/examples/add-checklist-to-ticket.rst:50 diff --git a/manage/webhook/examples/add-checklist-to-ticket.rst b/manage/webhook/examples/add-checklist-to-ticket.rst index 6b106cb74..657d743ad 100644 --- a/manage/webhook/examples/add-checklist-to-ticket.rst +++ b/manage/webhook/examples/add-checklist-to-ticket.rst @@ -40,12 +40,12 @@ Create a new webhook with the following configuration: Create Trigger -------------- -Configure a trigger which fires the webhook after ticket creation. In case -you want to additionally narrow the condition down, just enhance the example +Configure a trigger which invokes the webhook after ticket creation. In case +you additionally want to narrow down affected tickets, just enhance the condition (e.g. by checking the group of a ticket or limit it for specific ticket titles). -Have a look at the :doc:`example configuration `. -For the scenario to add a checklist to every ticket after creation, the -condition could look like this: +Have a look at the :doc:`example configuration ` +of a trigger for sending notifications. For this scenario, the condition could +look like this: - Activated by: Action - Action execution: Selective