Streamlining your workflow is a very important part of running any business. This is done primarily to reduce the number of insignificant duties or to automate frequently repetitive activities. Thanks to this, we are able to save time and financial resources. Magento sellers who want to automate routine duties also strive to do the same in order to be able to focus on more profitable business processes or on other complicated and requiring more attention matters. There is also no need to hide that this approach allows you to spend your free time in a slightly more pleasant way and simply break away from work. How can I do that? Thanks to Magento 2 webhooks and automation they guarantee. See what Webhooks are and how do they work in Magento 2, and learn about the best solutions developed to transform e-commerce workloads into background processes.
What are Webhooks?
At the outset, it is worth emphasizing that Webhooks are not available by default in Magento 2. Fortunately, the very flexible architecture of the platform allows them to be adapted to the needs of a given company. So you can easily create even a very complex automation with them and achieve goals specific to your company.
What are Webhooks? These are the elements that represent how applications communicate. However, this interaction requires external influence. How does it work? You set up the system and it works according to your guidelines, while all processes run automatically in the background. To better understand the phenomenon - we present the example of Paypal. The entire website relies on Webhooks that inform your accounting application about the emergence of new payments. So you don't have to look for new transactions yourself, because you know about them right away.
Why use Webhooks in Magento 2 when the platform offers its native API, flexible enough to allow every sync? The case is not that simple. Even though the Magento platform includes an API, you still have to work hard to adapt it to your individual requirements. The more complex and unusual they are, the more time and money you have to spend on them. Thanks to Webhooks, in some cases you can radically reduce the costs incurred, compared to when you would only use the API.
Differences between Webhook and API
Magento 2 API is certainly number one when it comes to integration. It is a very effective support for any seller. The drawback of using the API is the need to constantly ask for data. The first thing to do is to send requests to obtain the necessary data before it becomes obsolete. Unfortunately, this is time consuming and can be quite tedious because communication takes more resources than it should. The more frequently your queries are, the more overloaded the system becomes. So if an operation requires frequent updates, this method may not work. Then your Webhooks come to your rescue. Their principle of operation is the opposite of the API. You don't have to ask questions yourself, Webhooks will inform you about important data themselves.
How do webhooks work?
The most important point is that the third party app or site is the webhook provider. This means that immediately after a specific action occurs, it sends a signal to your website - Magento 2. This, in turn, contains the so-called "Listener", which is a URL designed to do two things. First, it receives a response from the Webhooks. Second, it performs a predefined action shortly thereafter.
As a clarification - Webhooks are user-defined HTTP callbacks. They are small pieces of code related to a web application. They are triggered by specific events. This is the key algorithm of this technology:
1. The triggering event appears on the source site or linked application.
2. The webhook detects this event.
3. Relevant data is collected.
4. The webhook sends the collected information to the specified URL - "listener".
The technology is so flexible that you can configure an event on one site to run the selected action on another page.
And to note the difference between the API and Webhooks, it's worth noting that the former relies on request-based exit mechanisms, while webhooks contain event-based exit rules.
To sum up - Webhooks are instant notifications about specific events that meet the given criteria. Pre-requested data is transferred to other applications in real time, unlike the typical API where frequent, self-requesting data is necessary. As a result, with Webhooks you get more efficiency!
Examples of using Webhooks outside of Magento 2
You probably meet with Webhooks more often than you think during everyday use of the Internet. For example, if you use MailChimp to automate e-mail marketing, you associate processes such as subscription, unsubscribe, profile updates, etc. Webhooks are involved in all these activities. If you run a weekly newsletter, the system notifies you when the subscriber changes their email ID. Thanks to this, you can update the relevant record in your CRM system or elsewhere, without wasting unnecessary time.
Shopify is another example. There, a set of webhooks informs you about product, cart, checkout, order and return data updates. The platform does everything to avoid situations where an order is missed or other real changes go unnoticed. Such action ensures really efficient customer service.
Magento 2 - Prerequisites for using Webhooks
How did Webhooks become part of Magento 2? Let's take a closer look at it!
Magento 2 REST API
It is worth noting that Magento offers various REST endpoints. The choice of a specific one depends on the type of user's request. However, obtaining information is only possible after sending the inquiry. For security reasons, a special token is required to access the client and administrator REST API endpoints. This makes data exchange quite complicated.
REST endpoints are grouped according to user type:
1. Administrator REST API endpoints.
2. Client REST API endpoints.
3. Guest REST API endpoints.
An important feature of the REST API is also that it allows the POST, PUT, PATCH, and DELETE endpoints to run asynchronously. The entire process takes place while the async.operations.all message queue is active. The purpose of this type of web endpoint is to inform the user of asynchronous routes, payloads, and responses. This information does not directly translate into the functioning of Magento 2 Webhooks, but at the moment it is necessary to present the entire functioning of this tool.
Magento 2 GraphQL
Why does Magento 2 include GraphQL? The answer is simple - to meet the different needs of users. It uses the data query language as an alternative to web REST and SOAP APIs due to better frontend development.
From the version of Magento 2.3.4 you can use the following GraphQL functions:
1. Support all types of products as well as payment and shipping methods.
2. Use a response time of less than 0.5 seconds for 500 simultaneous requests.
3. Use layered navigation using GraphQL.
In future versions of Magento, the plans include full GraphQL coverage for B2C. For example, if your development team performs actions to streamline re-ordering, in-store pickups related to inventory management, order history for logged in customers, gift wrapping, payment methods, etc., it should include coverage for B2B scenarios.
Event and observer
Event and observer are one of the main ways to extend the default functionality of Magento 2 by enabling the publish-subscribe pattern. The latter runs custom code in response to native Magento action or custom events.
In Magento 2, modules can send events after certain actions (events). The system offers flexible order shipping as both default and custom conditions are allowed. When any of them are provided, the data is passed on to observers for tracking purposes. The followers, in turn, represent a specific type of Magento class that can affect the overall behavior of the entire e-commerce site, changing its performance or business logic. They follow the events they are supposed to keep an eye on. When such events are sent out, the right observers appear. The algorithm of events and observers is somewhat similar to Webhooks, but it is not the same mechanism.
Webhooks in Magento 2
API design for the website
Research and observations show that the Magento event concept already offers a logical place for webhook implementation. However, there are problems that prevent this.
It would be good if the webhook calls were made asynchronously. This would help to avoid slowing down the processing of the main thread. Since nobody wants PHP code to be blocked because of a slow external URL, this could be the main cause of concern about Magento 2 webhooks.
Beyond the above problem, there is the fact that events often go through classes. What does it mean? Imagine a situation where you need to send data to a remote endpoint. To achieve this goal, you must serialize the appropriate data from the class. The consequence of serialization is therefore a data structure such as JSON or XML that is POST sent to the configured URL. Unfortunately, the procedure cannot be completed without serializing the code.
That's why the first idea behind Magento 2 Webhooks was to implement an example module that launches the Webhook by registering an observer. The latter then sends an HTTP request to the remote endpoint. Then the Observer.php file is created in the Magento_CacheInvalidate module. This is a simple implementation for an observer that includes the events.xml file and a reference to curl. As for the Magento_CacheInvalidate module, its job is for the observer to carry out the Webhook implementation and notify the external url when it needs to empty its cache.
What is the algorithm of such a project?
1. The events.xml file in the etc directory associates various events with functions in the Observer class.
2. Observer constructor includes reference to Magento, Framework, HTTP, Adapter, Curl. There is a dependency insertion framework that provides the observer with this instance whose sole purpose is to communicate with the PHP curl library. The latter is an HTTP client library built into PHP.
3. invalidateVarnish () causes the sample code that extracts information from an event to create the data that is sent to Varnish. However, sendPurgeRequest () is called to insert a string into the HTTP header field. There is no problem adapting it to generate a JSON or XML payload.
4. The flushAllCache () function shows an example of sending a Webhook call. No data is taken from the event.
It should be emphasized that non-standard logic is taken into account here. For example, the configuration settings are used to check if Varnish is enabled. This step is not required for a regular webhook. InvalidateVarnish () finds a valid Varnish header string. To implement webhooks in Magento 2, we take flushAllCache () function here and delete unnecessary data structures. This method illustrates the complexity of the code required, but should not be used.
As a result, the code necessary to implement the Webhook in Magento 2 is relatively short. There is no need to add a code snippet to extract data from an event, assuming you want to send that data to the endpoint. At the same time, it's pretty easy to do with PHP as it supports JSON and XML by default.
Magento 2 Webhooks Extensions
You are not coding proficient, but want to automate some of the processes using Magento 2 Webhooks? Fortunately, the developers thought of a user-friendly alternative. These are extensions that use event-based exit rules. Check below what belongs to them!
Magento 2 Webhooks by Wizkunde
It is a module that will provide your e-commerce website with an ERP connection, with a fulfillment service or with another system with a REST interface for 199 EUR. As with other ready-made modules, there is no need to write any code. By using this Magento 2 Webhooks plugin, you can connect Magento 2 with a REST compliant API of any complexity, getting customer, catalog and sales data in real time.
The key benefit of this extension is that it will not overload your Magento 2 website. Because as we mentioned, Magento 2 webhooks only send data when certain conditions are met. Consequently, system resources are used as efficiently as possible. When it comes to high-traffic websites, all data is transferred in a fully controlled manner. So nothing happens without your knowledge.
Moreover, the Magento 2 Webhooks extension transmits not only real-time data but also all the up-to-date information required for integration. Historical store data is transferred to the REST API endpoint using Burst Queue.
The extension is safe with sensitive information. You just need to rely on HTTPS as your endpoint. Therefore, the connection itself is encrypted with SSL. HMAC headers are another security measure. The Magento 2 Webhooks extension allows you to use it to verify data integrity on the REST API side while automating multiple backend processes. To do this, then you need to use the encrypted key set in the back-end of Magento 2, verifying the signature against the data sent. This is an additional security measure that strengthens the security of stored data.
It's also worth mentioning that the Magento 2 Webhooks extension is really easy to use. After installing the module, you must perform a user-friendly configuration. Flexible conditions allow you to send webhooks to the required endpoints by specifying only the correct URL. Each Magento 2 online store can be set to a separate ID to distinguish between how Webhooks are sent and to have no doubts which site it refers to. In addition, you can specify which webhooks to use. Enable or disable data flows required by the integration being performed.
By using this module, you send webhook data from the queue, reducing the load on the page. To further increase your productivity, you can define the maximum number of items to be moved within the entire cycle. Isn't that a great solution?
Webhook for Magento 2 by Mageplaza
Megaplaza has its own point of view on Magento 2 Webhook extensions. Unlike the tools mentioned above, it is free. How does it work?
The plugin helps in setting API requests to customizable destinations such as CRM tools or for e-mail marketing after certain events such as cart abandonment. The module registers requests and responses, and sends alerts about errors in the requests.
As a store admin, you can create Hooks based on the following events:
✔ creating new orders, invoices, shipments or credit notes,
✔ receiving a comment on a new order,
✔ updating, sharing or deleting customer data,
✔ updating or deleting product data,
✔ updating or deleting category data,
✔ customer logins to the purchasing account,
✔ abandoned shopping carts.
For example, if a user abandons a shopping cart on your e-commerce store, the Webhooks Magento 2 extension sends an API request. Then the module sends a notification to the appropriate department for further consideration of the case and possible correction of the problem.
Moreover, with the help of the plugin, you can transfer data to CRM systems or an e-mail marketing program. It is able to automatically transmit new data to such external services without the need for employee involvement. Thus, the Mageplaza Webhooks module enables the establishment of an information flow between Magento 2 and any connected system, updating relevant data in real time.
You also gain full control over this process thanks to the capture logs (application logs). So you can monitor the effectiveness of all automation. Each error is carefully logged with the appropriate description, identifier, entity, etc. In addition, the module enables you and your administrators to receive email notification of API request errors. However, if you want to clear the resulting errors, you can set the maximum number of records and enable the auto-clean feature. It is also possible to resend a new request after fixing the error.
Using Webhooks in Magento 2 seems problematic to you? You don't have to deal with it yourself! We offer full programming support for the Magento platform. We will definitely choose the best solution for you and adapt it to your requirements.