{"id":20010,"date":"2025-05-20T00:00:00","date_gmt":"2025-05-20T00:00:00","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/votre-guide-des-webhooks\/"},"modified":"2026-09-14T22:52:28","modified_gmt":"2026-09-14T22:52:28","slug":"votre-guide-des-webhooks","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/","title":{"rendered":"Votre guide d&rsquo;utilisation des webhooks"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">You already know that email isn\u2019t a send-and-forget thing. When you\u2019re sending a message, you want to know how to track it and respond to any issues, right? After all, knowing how your emails are performing helps you maintain your sender reputation and deliverability rates. By pointing a webhook to your preferred CRM, your team can see relevant engagement metrics quickly and easily and make decisions based on up-to-the-minute info. Before we dive into use cases, we should cover the basics of what\u2019s what when it comes to webhooks. <\/p>\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-4056\"><p class=\"h5 m-0\" id=\"toc-title-4056\">Table des mati\u00e8res<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#what-are-webhooks\">What are webhooks?<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#what-are-webhooks-used-for\">What are webhooks used for?<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#how-do-webhooks-work\">How do webhooks work?<\/a><a class=\"scrollme link-body-color\" href=\"#step-one-choose-the-desired-data\">Step one: Choose the desired data<\/a><a class=\"scrollme link-body-color\" href=\"#step-two-attach-data-to-messages\">Step two: Attach data to messages<\/a><a class=\"scrollme link-body-color\" href=\"#step-three-setup-the-url\">Step three: Setup the URL<\/a><a class=\"scrollme link-body-color\" href=\"#step-four-create-scripts-to-capture-data\">Step four: Create scripts to capture data<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#webhook-events-and-parameters\">Webhook events and parameters<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#securing-webhooks\">Securing webhooks<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#creating-webhooks-with-mailgun\">Creating webhooks with Mailgun<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">07<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#mailgun-makes-it-easy\">Mailgun makes it easy<\/a><\/div><\/div><\/nav>\n<h2 class=\"wp-block-heading\">What are webhooks?<\/h2>\n\n<p class=\"wp-block-paragraph\"><b>Put simply, webhooks are notifications that send event data to another application after the event occurs.<\/b> They act as a reverse API, where instead of polling an API endpoint repeatedly for updates, the webhook sends the update to you via an HTTP request. <a href=\"https:\/\/www.mailgun.com\/fr\/glossaire\/webhook\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Webhooks<\/a> are a way for apps to communicate information through automation and user-defined HTTP callbacks \u2013 similar to SMS messages \u2013 typically triggered by an event such as a successful email delivery or bounce notification. <\/p>\n\n<p class=\"wp-block-paragraph\">In an event-driven architecture, this becomes especially powerful. For example, when you provide your banking app with your direct deposit information and phone number, and they send you an SMS message telling you that you\u2019ve just received a deposit, a webhook is what makes it possible for your bank to send that text message with relevant updates.<\/p>\n\n<h2 class=\"wp-block-heading\">What are webhooks used for?<\/h2>\n\n<p class=\"wp-block-paragraph\"><b>Webooks are used to create notifications around specific events. <\/b>Since webhooks are based on HTTP POST, they are easy to use. What\u2019s more, webhook scripts can be written in just about any scripting language you prefer, including curl, Ruby, Python, PHP, Java, C# and Go. Once the webhook\u2019s data has been captured, it can be stored in a database and used to gauge the effectiveness of email campaigns or augment recipient profiles. Use them in a variety of workflows \u2013 from logging e-commerce order confirmations to integrating real-time Stripe payment events into your backend. <\/p>\n\n<p class=\"wp-block-paragraph\">You can also get more granular data than out of the box dashboard might provide by customizing the metrics the webhook returns.<\/p>\n\n<h2 class=\"wp-block-heading\">How do webhooks work?<\/h2>\n\n<p class=\"wp-block-paragraph\">So, how does a webhook work?<\/p>\n\n<p class=\"wp-block-paragraph\">When the event occurs, the source site makes an HTTP POST request to a URL the developer has configured to receive the webhook. Developers can configure them to cause events on one site to invoke behavior on another. Then, that webhook\u2019s data can be sent to the configured URL as a webhook payload in JSON or XML format. Here\u2019s the four steps you need:<\/p>\n\n<h3 class=\"wp-block-heading\">Step one: Choose the desired data<\/h3>\n\n<p class=\"wp-block-paragraph\">The first decision developers make as they plan out their email tracking and response is exactly what data want returned. If the goal is to know when sent emails are bouncing, the user URL could perform a script on incoming POSTs to capture and save the bounced email address in a local database. The same script could be augmented to capture recipient name, subject or any other parameter provided by the webhook.<\/p>\n\n<p class=\"wp-block-paragraph\"><b>Let\u2019s start by exploring the webhook POST request<\/b>, which can be encoded as: <code>application\/x-www-form-urlencoded<\/code> for most messages, and as <code>multipart\/form-data<\/code> if there\u2019s an attachment included with the message. The POST request method is designed to request that a web server accept the data enclosed in the request message\u2019s body for storage.<\/p>\n\n<p class=\"wp-block-paragraph\">Here\u2019s an example of an HTTP POST made by Mailgun to a URI at Runescope. Note that the Content Type header is set as <code>application\/x-www-form-urlencoded<\/code>:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    ACCEPT: *\/* \r\nACCEPT-ENCODING: GZIP \r\nCONNECTION: CLOSE \r\nCONTENT-LENGTH: 1325 \r\nCONTENT-TYPE: APPLICATION\/X-WWW-FORM-URLENCODED \r\nHOST: \r\nUSER-AGENT: MAILGUN\/TREQ-0.2.\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">The body of the message contains parameters stored as key-value pairs. (We\u2019ll go into greater detail about the data that is posted in the section below.) Since the data is encoded, it will simply appear as gibberish. Here\u2019s what the decoded body might typically look like:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    DOMAIN: BEATNIKZ.NET\r\nEVENT: DELIVERED\r\nMESSAGE-HEADERS: [[&quot;RECEIVED&quot;, &quot;BY LUNA.MAILGUN.NET WITH HTTP; WED, 07 JAN 2015 00:44:03 +0000&quot;], [&quot;MIME-VERSION&quot;, &quot;1.0&quot;], [&quot;CONTENT-TYPE&quot;, [&quot;TEXT\/PLAIN&quot;, {&quot;CHARSET&quot;: &quot;ASCII&quot;}]], [&quot;SUBJECT&quot;, &quot;HELLO&quot;], [&quot;FROM&quot;, &quot;TAG TEST &quot;], [&quot;TO&quot;, &quot;MGBOX01@GMAIL.COM&quot;], [&quot;X-MAILGUN-TAG&quot;, &quot;WEB APP SEPTEMBER NEWSLETTER&quot;], [&quot;X-MAILGUN-TAG&quot;, &quot;NEWSLETTERS&quot;], [&quot;MESSAGE-ID&quot;, &quot;&quot;], [&quot;X-MAILGUN-SID&quot;, &quot;WYI3NGU3NYISICJTZ2JVEDAXQGDTYWLSLMNVBSISICI0MGRKIL0=&quot;], [&quot;DATE&quot;, &quot;WED, 07 JAN 2015 00:44:11 +0000&quot;], [&quot;SENDER&quot;, &quot;NOLAN=YBEATNIKZ.NET@BEATNIKZ.NET&quot;], [&quot;CONTENT-TRANSFER-ENCODING&quot;, [&quot;7BIT&quot;, {}]]]\r\nMESSAGE-ID: \r\nRECIPIENT: MGBOX01@GMAIL.COM\r\nSIGNATURE: EB9FE5C673522299A2259052E56487E54F4D2486A0F1582E91D2C17114A6398\r\nTIMESTAMP: 1420591452\r\nTOKEN: E40542A95B5A6989B5E226CC0E9BB2F120478AF8EE594F884C\r\nX-MAILGUN-SID: WYI3NGU3NYISICJTZ2JVEDAXQGDTYWLSLMNVBSISICI0MGRKIL0=\r\nX-MAILGUN-TAG: WEB APP SEPTEMBER NEWSLETTER\r\nX-MAILGUN-TAG: NEWSLETTERS\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<h3 class=\"wp-block-heading\">Step two: Attach data to messages<\/h3>\n\n<p class=\"wp-block-paragraph\">When sending an email, some ESPs permit users to attach data to their messages by passing custom data to the API or SMTP endpoints. The data will be represented as a header within the email and is typically formatted in JSON. This custom data would then be included in any webhook events related to the email containing it. More than one header may be included and their values will be combined.<\/p>\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    X-MAILGUN-VARIABLES: {&quot;FIRST_NAME&quot;: &quot;JOHN&quot;, &quot;LAST_NAME&quot;: &quot;SMITH&quot;}\r\nX-MAILGUN-VARIABLES: {&quot;MY_MESSAGE_ID&quot;: 123}\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">To add this header to a message:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    USING API: PASS THE FOLLOWING PARAMETER, &quot;V:MY-CUSTOM-DATA&quot; =&gt; &quot;{&quot;MY_MESSAGE_ID&quot;: 123}&quot;.\r\nUSING SMTP: ADD THE FOLLOWING HEADER TO THE EMAIL, &quot;X-MAILGUN-VARIABLES: {&quot;MY_MESSAGE_ID&quot;: 123}&quot;.\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">Alternatively, you can easily delete an existing webhook:<\/p>\n\n<p class=\"wp-block-paragraph\">Sometimes it\u2019s helpful to categorize outgoing email traffic based on some criteria, perhaps separate sign-up emails from password recovery emails or from user comments. The ESP may permit tagging each outgoing message with a custom value. These values become tags that can recall or aggregate deliverability statistics. To attach a tag to a webhook message, supply one or more O:TAG to it.<\/p>\n\n<p class=\"wp-block-paragraph\">Tagging Code Sample:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    CURL -S --USER &#039;API:YOUR_API_KEY&#039; \\\r\n\r\nHTTPS:\/\/API.MAILGUN.NET\/V3\/YOUR_DOMAIN_NAME\/MESSAGES \\\r\n-F FROM=&#039;SENDER BOB &#039; \\\r\n-F TO=&#039;ALICE@EXAMPLE.COM&#039; \\\r\n-F SUBJECT=&#039;HELLO&#039; \\\r\n-F TEXT=&#039;TESTING SOME MAILGUN AWESOMNESS!&#039; \\\r\n-F O:TAG=&#039;SEPTEMBER NEWSLETTER&#039; \\\r\n-F O:TAG=&#039;NEWSLETTERS&#039;\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<h3 class=\"wp-block-heading\">Step three: Setup the URL<\/h3>\n\n<p class=\"wp-block-paragraph\">In order to receive the data from a webhook, users must give their ESP a URL to deliver requests to. This means that they also need to set up the URL in their app, so it is accessible from the public web and different IP addresses (hence the need for security). The ESP\u2019s webhooks will then POST data to the URL as application\/x-www-form-urlencoded or multipart\/form-data.<\/p>\n\n<h3 class=\"wp-block-heading\">Step four: Create scripts to capture data<\/h3>\n\n<p class=\"wp-block-paragraph\">The final step is to <b>add scripts to the URL that capture the data provided by the webhooks<\/b> and process it in any way the developer sees fit. This is where you can get creative but also granular with the attributes you want to collect. The best way to look at this is with an example.<\/p>\n\n<p class=\"wp-block-paragraph\"><b>A use case for a webhook might be to track email bounces.<\/b> For this you will need to capture an attachment and store the file locally. For example, the following code uses a combination of microframework for Python, Flask and Requests HTTP library. Here\u2019s a quick Flask App to capture a file from a Bounce webhook, keep the native filename and store it locally on your webserver.<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    FROM FLASK IMPORT FLASK\r\nFROM FLASK IMPORT REQUEST\r\nFROM WERKZEUG IMPORT SECURE_FILENAME\r\nAPP = FLASK(__NAME__)\r\n\r\n@APP.ROUTE(&#039;\/WEBHOOK&#039;, METHODS=[&#039;GET&#039;, &#039;POST&#039;])\r\nDEF TRACKING():\r\n#CHECKS IF THE REQUEST IS A POST\r\nIF REQUEST.METHOD == &#039;POST&#039;:\r\nF = REQUEST.FILES[&#039;ATTACHMENT-1&#039;]\r\n# OBTAINS THE FILESTORAGE INSTANCE FROM REQUEST\r\nFILENAME = SECURE_FILENAME(F.FILENAME)\r\nF.SAVE(&#039;\/HOME\/DIRECTORY\/WEBHOOK\/&#039;+ FILENAME)\r\nPRINT FILENAME\r\nRETURN &quot;OK&quot;\r\nIF __NAME__ == &#039;__MAIN__&#039;:\r\nAPP.RUN(HOST=&#039;0.0.0.0&#039;, PORT=100, DEBUG=TRUE)\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">To see it in action, run your application and paste the URL (For example: <a href=\"http:\/\/yourdomainhere.com:100\/webhook\" target=\"_tabs\" rel=\"noopener noreferrer\">http:\/\/yourdomainhere.com:100\/webhook<\/a>) into the Bounce webhook and click to \u201cTest Webhook.\u201d You\u2019ll get a file named \u201cmessage.mime\u201d with:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    RECEIVED: BY LUNA.MAILGUN.NET WITH SMTP MGRT 8734663311733; FRI, 03 MAY 2013 18:26:27 +0000\r\nCONTENT-TYPE: MULTIPART\/ALTERNATIVE; BOUNDARY=&quot;EB663D73AE0A4D6C9153CC0AEC8B7520&quot;\r\nMIME-VERSION: 1.0\r\nSUBJECT: TEST BOUNCES WEBHOOK\r\nFROM: BOB \r\nTO: ALICE \r\nMESSAGE-ID: \r\nLIST-UNSUBSCRIBE: \r\nX-MAILGUN-SID: WYIWNZI5MCISICJHBGLJZUBLEGFTCGXLLMNVBSISICI2IL0=\r\nX-MAILGUN-VARIABLES: {&quot;MY_VAR_1&quot;: &quot;MAILGUN VARIABLE #1&quot;, &quot;MY-VAR-2&quot;: &quot;AWESOME&quot;}\r\nDATE: FRI, 03 MAY 2013 18:26:27 +0000\r\nSENDER: BOB_USER_ID@AWESOME_WORKFLOWS.MAILGUN.ORG\r\n--EB663D73AE0A4D6C9153CC0AEC8B7520\r\nMIME-VERSION: 1.0\r\nCONTENT-TYPE: TEXT\/PLAIN; CHARSET=&quot;ASCII&quot;\r\nCONTENT-TRANSFER-ENCODING: 7BIT\r\nHI ALICE, DO YOU EXIST ON THIS DOMAIN?\r\n--EB663D73AE0A4D6C9153CC0AEC8B7520\r\nMIME-VERSION: 1.0\r\nCONTENT-TYPE: TEXT\/PLAIN; CHARSET=&quot;ASCII&quot;\r\nCONTENT-TRANSFER-ENCODING: 7BIT\r\nHI ALICE, DO YOU EXIST ON THIS DOMAIN?\r\n--EB663D73AE0A4D6C9153CC0AEC8B7520--\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">These four steps will help you setup a complete webhook, but in order to benefit, you\u2019ll need to trigger it and learn about event parameters.<\/p>\n\n<h2 class=\"wp-block-heading\">Webhook events and parameters<\/h2>\n\n<p class=\"wp-block-paragraph\">As explained above, <a href=\"https:\/\/www.mailgun.com\/fr\/resources\/learn\/glossary\/webhook\/\" target=\"_tabs\" rel=\"noopener noreferrer\">webhooks<\/a> are triggered by specific events. <b>In the email realm, these events include opens, clicks, unsubscribe requests<\/b>, and other events related to email delivery. Here\u2019s a complete breakdown of the Mailgun events that can trigger a webhook:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><b>Open: This event occurs every time a recipient opens a message.<\/b> Open tracking is enabled by using the O:TRACKING or O:TRACKING-OPENS parameters when sending a message.<\/li>\n\n\n\n<li><b>Click: This event tracks every time a recipient clicks on links in an email message.<\/b> Enable click tracking by using the O:TRACKING or O:TRACKING-CLICKS parameters when sending a message. As with opens, the appropriate CNAME records must be included in the user\u2019s DNS.<\/li>\n\n\n\n<li><b>Unsubscribe<\/b>: <b>This event occurs when a recipient clicks on the \u201cunsubscribe\u201d link in a message. <\/b>You will need to use Mailgun\u2019s unsubscribe tracking to receive this information.<\/li>\n\n\n\n<li><b>Spam Complaint:<\/b> Not every ISP supports Feedback Loop (\u201cFBL\u201d) notifications for spam complaints, but you should make sure that you get data from all the ones that do.<\/li>\n\n\n\n<li><b>Bounce: An email message is said to \u201cbounce\u201d if it is rejected by the recipient SMTP server.<\/b> These are often classified as hard or soft bounces as follows:\n<ul class=\"wp-block-list\">\n<li><b>Permanent failure (\u00ab\u00a0hard bounce\u00a0\u00bb)<\/b>: Recipient is not found, and the recipient email server specifies the recipient does not exist. The app should stop attempting delivery to invalid recipients after one permanent failure. <\/li>\n\n\n\n<li><b>Temporary failure (\u00ab\u00a0soft bounce\u00a0\u00bb)<\/b>: Email is not delivered because of a temporary issue, such as a full inbox. Apps can programmatically respond to temporary failures by reattempting a set number of times before removing the recipient address from the list. <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><b>Delivered<\/b>: <b>A successful delivery occurs when the recipient email server responds that it has accepted the message. <\/b>Depending on the event, webhooks can deliver a variety of parameters to help identify and describe the message in question. This data can then be parsed via scripts for analysis. Common parameters include:\n<ul class=\"wp-block-list\">\n<li>Event<\/li>\n\n\n\n<li>Recipient<\/li>\n\n\n\n<li>Sending Domain<\/li>\n\n\n\n<li>Message Headers<\/li>\n\n\n\n<li>Recipient Identifying Details: country, region, city, device, email client and OS<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">Depending on the ESP, other parameters may include custom variables, tags and campaign names and authentication or user IDs, among others. In addition, some events offer more detail, such as a URL clicked; a reason for\/description of a negative type of event or special codes providing specific event details.<\/p>\n\n<h2 class=\"wp-block-heading\">Securing webhooks<\/h2>\n\n<p class=\"wp-block-paragraph\"><b>A receiving URL must be public.<\/b> To keep contents secure, webhooks should include a signature timestamp and token to create a hashmap. A hashmap is just a way to store items with identifiers. The hashmap also uses an API key to verify that the data is coming from the developer\u2019s ESP. You should program your application to check this hashmap and compare it to that of the ESP, and then allow the POST to be made only if it matches.<\/p>\n\n<p class=\"wp-block-paragraph\">To verify the webhook is originating from their ESP, you should link the timestamp and token values, encode the resulting string with the HMAC algorithm (using the ESP\u2019s supplied API Key as a key and SHA256 digest mode), and compare the resulting hexdigest to the signature. Also, you can cache the token value locally and refuse to honor any other requests with the same token. This will prevent hackers from using the token to repeat or misdirect actions.<\/p>\n\n<p class=\"wp-block-paragraph\">The status code you return (e.g., 200 OK) tells the sender whether the webhook was successfully processed. Always monitor these responses for resilience. Another level of security would be to check the timestamp to confirm that the POST attempt has been made within a certain timeframe.<\/p>\n\n<p class=\"wp-block-paragraph\">Below is a Python code sample used to verify a webhook signature:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    import hashlib \r\nimport hmac \r\n\r\ndef verify(api_key, token, timestamp, signature): \r\n    message = f&quot;{timestamp}{token}&quot; \r\n    expected_signature = hmac.new( \r\n        key=api_key.encode(), \r\n        msg=message.encode(), \r\n        digestmod=hashlib.sha256 \r\n    ).hexdigest() \r\n    return signature == expected_signature\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> You can also configure polling mechanisms for systems that don\u2019t support webhooks. <a href=\"https:\/\/documentation.mailgun.com\/docs\/mailgun\/user-manual\/get-started\/\">Our Events API<\/a> is great for this, but this should be a fallback, not the default. Real-time data matters.<\/div>\r\n    <\/div>\r\n\n<h2 class=\"wp-block-heading\">Creating webhooks with Mailgun<\/h2>\n\n<p class=\"wp-block-paragraph\">You can find complete information and code about creating and deleting different types of webhooks in our <a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/api-webhooks.html?highlight=webhook#webhooks\" target=\"_tabs\" rel=\"noopener noreferrer\">documentation<\/a>, but we\u2019ve included a few common examples below. Check them out! <\/p>\n\n<p class=\"wp-block-paragraph\">You can use our API to create a new webhook:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    POST \/domains\/\/webhooks\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">Or update one:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    PUT \/domains\/\/webhooks\/\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">Alternatively, you can easily delete an existing webhook:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    DELETE \/domains\/\/webhooks\/\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">Additionally, for information about your webhooks, you can get details about any webhook URL:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    GET \/domains\/\/webhooks\/\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">Of course, if we made examples of all the ways you can use our API to create and optimize your webhooks, we\u2019d be here all day. The point is, you can do pretty much whatever you want (we promise we won\u2019t tell your mom).<\/p>\n\n<h2 class=\"wp-block-heading\">Mailgun makes it easy<\/h2>\n\n<p class=\"wp-block-paragraph\">While there are several methods for accessing the data generated by email delivery, including ESP dashboards and API calls, cut yourself some slack and sprinkle in a few webhooks to make things easy \u2013 they are the most flexible and efficient way to collect granular email message data.<\/p>\n\n<p class=\"wp-block-paragraph\">Rather than pulling data from your ESP, opt to receive continuous push data related to email in real time. Mailgun makes webhooks easy which makes things easier on teams who use this real-time information to make decisions for current and future email campaigns across different web applications and web services. Cool, right?<\/p>\n\n<p class=\"wp-block-paragraph\">You know what else is cool? More information on webhooks. For easy, step-by-step info on how to use webhooks with Mailgun, check out our documentation on <a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/user_manual.html#webhooks\" target=\"_tabs\" rel=\"noopener noreferrer\">webhooks<\/a>. For more deep dives like this, subscribe to our newsletter, webhooks aren\u2019t the only thing that can bring you granular data.<\/p>\n    <div data-content-type=\"longform\" class=\"longform-spacings\">\r\n        <div class=\"cta bg-primary rounded-lg px-5 py-6 p-md-7 px-md-6\">\r\n                    <div class=\"form-subscription\">\r\n                            <div class=\"h4 mb-3\">\r\n                    Keep me posted! Get great resources in your inbox every week.                <\/div>\r\n                                    <form accept-charset=\"UTF-8\" action=\"\" enctype=\"multipart\/form-data\" data-form-subscription method=\"POST\" style=\"max-width: 400px;\">\r\n                <div class=\"row justify-content-between align-items-top g-2\">\r\n                    <div class=\"col-10\">\r\n                        <input type=\"email\" name=\"email\" class=\"form-control\" placeholder=\"Email\" autocomplete=\"email\" required>\r\n                        <div data-fs=\"error\" role=\"alert\" class=\"invalid-feedback\">\r\n                            Please complete this required field.                        <\/div>\r\n                    <\/div>\r\n                                            <div class=\"col-12 order-last mt-3 fs-xxs\" data-fs=\"acceptance\" style=\"display:none;\">\r\n                            \r\n                                <div class=\"form-check\">\r\n                                    <input id=\"formSubscriptionAcceptance-terms-3712\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"terms\">\r\n                                    <label for=\"formSubscriptionAcceptance-terms-3712\" class=\"form-check-label text-body-color\">\r\n                                        J&rsquo;ai lu et j&rsquo;accepte les conditions d&rsquo;utilisation.                                        <span class=\"hs-form-required\">*<\/span>\r\n                                    <\/label>\r\n                                <\/div>\r\n\r\n                            \r\n                                <div class=\"form-check\">\r\n                                    <input id=\"formSubscriptionAcceptance-privacy-3971\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"privacy\">\r\n                                    <label for=\"formSubscriptionAcceptance-privacy-3971\" class=\"form-check-label text-body-color\">\r\n                                        J&rsquo;ai lu et j&rsquo;accepte la politique de confidentialit\u00e9.                                        <span class=\"hs-form-required\">*<\/span>\r\n                                    <\/label>\r\n                                <\/div>\r\n\r\n                                                    <\/div>\r\n                    \r\n                                            <div class=\"col-12 order-last fs-xxs mb-0 mt-2 text-body-color\">\r\n                            Send me the Mailjet Newsletter. I expressly agree to receive the newsletter and know that I can easily unsubscribe at any time.                        <\/div>\r\n                    \r\n                    <div class=\"col-2\">\r\n                        <button type=\"submit\" value=\"Submit\" aria-label=\"Submit\" class=\"btn btn-secondary btn-icon\">\r\n                            <svg aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/layout\/chevron-right.svg\"><\/svg>\r\n                        <\/button>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <input type=\"hidden\" name=\"formSubscriptionRecaptchaToken\" data-fs=\"recaptcha-token\">\r\n                <input type=\"hidden\" name=\"customListID\" value=\"\">\r\n\r\n            <\/form>\r\n            <div data-fs=\"message-success\" style=\"display: none;\">\r\n                <p class=\"mb-0 mt-2 text-body-color\">\r\n                    Check your inbox monthly for your Mailjet Newsletter!                <\/p>\r\n            <\/div>\r\n        <\/div>\r\n        <\/div>\r\n    <\/div>\r\n","protected":false},"excerpt":{"rendered":"<p>Les webhooks sont d\u00e9clench\u00e9s par des \u00e9v\u00e9nements et constituent un moyen facile pour l&rsquo;\u00e9quipe de d\u00e9veloppement de surveiller en temps r\u00e9el les campagnes d&#8217;emailing et les programmes qui g\u00e8rent les rebonds, les d\u00e9sinscriptions, les signalements de spam, et bien plus encore. Si vous cr\u00e9ez des outils SaaS, g\u00e9rez des flux de travail e-commerce ou cherchez simplement \u00e0 simplifier le transfert de donn\u00e9es entre diff\u00e9rentes applications, ce guide est fait pour vous.<\/p>\n","protected":false},"author":13,"featured_media":4074,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"blog_category":[20],"class_list":["post-20010","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-email"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Qu&#039;est-ce qu&#039;un webhook\u00a0? Le guide ultime des webhooks - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Lorsque l&#039;\u00e9quipe de d\u00e9veloppement cr\u00e9e des applications qui impliquent l&#039;envoi d&#039;emails, l&#039;une des choses les plus importantes qu&#039;elle puisse faire est de cr\u00e9er des webhooks. D\u00e9couvrez comment garder un \u0153il sur les performances.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Qu&#039;est-ce qu&#039;un webhook\u00a0? Le guide ultime des webhooks - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Lorsque l&#039;\u00e9quipe de d\u00e9veloppement cr\u00e9e des applications qui impliquent l&#039;envoi d&#039;emails, l&#039;une des choses les plus importantes qu&#039;elle puisse faire est de cr\u00e9er des webhooks. D\u00e9couvrez comment garder un \u0153il sur les performances.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-14T22:52:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/votre-guide-des-webhooks\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/votre-guide-des-webhooks\\\/\",\"name\":\"Qu'est-ce qu'un webhook\u00a0? Le guide ultime des webhooks - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/votre-guide-des-webhooks\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/votre-guide-des-webhooks\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"datePublished\":\"2025-05-20T00:00:00+00:00\",\"dateModified\":\"2026-09-14T22:52:28+00:00\",\"description\":\"Lorsque l'\u00e9quipe de d\u00e9veloppement cr\u00e9e des applications qui impliquent l'envoi d'emails, l'une des choses les plus importantes qu'elle puisse faire est de cr\u00e9er des webhooks. D\u00e9couvrez comment garder un \u0153il sur les performances.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/votre-guide-des-webhooks\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/votre-guide-des-webhooks\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/votre-guide-des-webhooks\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/votre-guide-des-webhooks\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Votre guide d\u2019utilisation des webhooks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Des API d\u2019emails transactionnels puissantes qui vous permettent d'envoyer, de recevoir et de suivre des emails, con\u00e7ues pour les d\u00e9veloppeurs. En savoir plus d\u00e8s aujourd'hui !\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Qu'est-ce qu'un webhook\u00a0? Le guide ultime des webhooks - Transactional Email API Service For Developers | Mailgun","description":"Lorsque l'\u00e9quipe de d\u00e9veloppement cr\u00e9e des applications qui impliquent l'envoi d'emails, l'une des choses les plus importantes qu'elle puisse faire est de cr\u00e9er des webhooks. D\u00e9couvrez comment garder un \u0153il sur les performances.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/","og_locale":"fr_FR","og_type":"article","og_title":"Qu'est-ce qu'un webhook\u00a0? Le guide ultime des webhooks - Transactional Email API Service For Developers | Mailgun","og_description":"Lorsque l'\u00e9quipe de d\u00e9veloppement cr\u00e9e des applications qui impliquent l'envoi d'emails, l'une des choses les plus importantes qu'elle puisse faire est de cr\u00e9er des webhooks. D\u00e9couvrez comment garder un \u0153il sur les performances.","og_url":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-09-14T22:52:28+00:00","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/","url":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/","name":"Qu'est-ce qu'un webhook\u00a0? Le guide ultime des webhooks - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","datePublished":"2025-05-20T00:00:00+00:00","dateModified":"2026-09-14T22:52:28+00:00","description":"Lorsque l'\u00e9quipe de d\u00e9veloppement cr\u00e9e des applications qui impliquent l'envoi d'emails, l'une des choses les plus importantes qu'elle puisse faire est de cr\u00e9er des webhooks. D\u00e9couvrez comment garder un \u0153il sur les performances.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/votre-guide-des-webhooks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/fr\/blog\/"},{"@type":"ListItem","position":3,"name":"Votre guide d\u2019utilisation des webhooks"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/fr\/#website","url":"https:\/\/www.mailgun.com\/fr\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Des API d\u2019emails transactionnels puissantes qui vous permettent d'envoyer, de recevoir et de suivre des emails, con\u00e7ues pour les d\u00e9veloppeurs. En savoir plus d\u00e8s aujourd'hui !","publisher":{"@id":"https:\/\/www.mailgun.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/fr\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/20010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/users\/13"}],"version-history":[{"count":3,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/20010\/revisions"}],"predecessor-version":[{"id":20140,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/20010\/revisions\/20140"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media\/4074"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media?parent=20010"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog_category?post=20010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}