{"_id":"@salla.sa/webhooks-actions","_rev":"141-62e5e2867c755c201ea835a1f6f871fd","name":"@salla.sa/webhooks-actions","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@salla.sa/webhooks-actions","version":"1.0.0","keywords":["node","salla"],"author":{"url":"https://github.com/SallaApp","name":"Salla App"},"license":"ISC","_id":"@salla.sa/webhooks-actions@1.0.0","maintainers":[{"name":"ahmed-alkatheri","email":"ahmed.alkatheri@salla.sa"},{"name":"kulth00m","email":"omkulthoom@salla.sa"},{"name":"ibra-hassan","email":"ibra.96.hassan@gmail.com"},{"name":"taghreedaaa","email":"taghreed@salla.sa"},{"name":"kodeburner","email":"kodeburner@gmail.com"},{"name":"thaifani","email":"zaher@salla.sa"},{"name":"emanlowndi","email":"eman@salla.sa"},{"name":"zymawy","email":"zymawy@gmail.com"},{"name":"muhammed-sh","email":"muhammedsoft88@gmail.com"},{"name":"dev-tarek","email":"abdelrahman.t.abdelhamid@gmail.com"},{"name":"dev_fouda","email":"php.dev.fouda@gmail.com"},{"name":"rashaamer","email":"Ralamer87@gmail.com"},{"name":"egkrinkel","email":"ahmed@salla.sa"},{"name":"eslamoo","email":"essomgd@gmail.com"},{"name":"adelgs","email":"adel@salla.sa"},{"name":"asmaa_sh_ali","email":"asm_sh_a@hotmail.com"},{"name":"dhafer","email":"dhafer@salla.sa"},{"name":"anasred","email":"anasahmar@gmail.com"},{"name":"omaralalwisalla","email":"omar.alalwi@salla.sa"},{"name":"devlomingo","email":"mo7md.badr@gmail.com"},{"name":"yamenarahman","email":"yamen.a.abdulrahman@hotmail.com"},{"name":"ossycodes","email":"ossyfizy009@gmail.com"},{"name":"salahmyn","email":"salahmyn@gmail.com"},{"name":"anass_at","email":"anass@salla.sa"},{"name":"adilah.m","email":"adilah.m@salla.sa"},{"name":"adel.elshafey","email":"adel.elshafey@salla.sa"},{"name":"tahaabdoh","email":"taha.abdoh@gmail.com"},{"name":"jamalla","email":"jamalla@salla.sa"},{"name":"krinkel","email":"admin@yallagroup.net"},{"name":"jalmatari","email":"jalmatari@gmail.com"},{"name":"ashraf.reda","email":"ashraf@salla.sa"},{"name":"s.alkhwlani","email":"yemenifree@yandex.com"}],"homepage":"https://github.com/SallaApp/webhooks-actions#readme","bugs":{"url":"https://github.com/SallaApp/webhooks-actions/issues"},"dist":{"shasum":"b8b0f26a214f54b536f76c85f81fdc1447257f1b","tarball":"https://registry.npmjs.org/@salla.sa/webhooks-actions/-/webhooks-actions-1.0.0.tgz","fileCount":21,"integrity":"sha512-EwtgJAsn3/bg373RRXiVIWyyc7MRhGNCQiwlqKs5n0RhNaU41JACvc6+JuF3rOSNqIWjBM4N5oFByvcvOIcfeA==","signatures":[{"sig":"MEUCIH3irjbQWtnHZMf5rWPNdVreP7IsdwhvNeGSVaH5IdpkAiEAvNMNK/IQIXPeDwJw9LD7dhP9BlDsuK8a4y4Z1hJ7mec=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":46419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiehk6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq7/Q/8CyI6t2FQ/aUhimFDABBdbohRQWs8U8+SbJ7AUFEkeh8/kuqb\r\nboVlI6QsTk+czabNFCx0xWH+vI0fOSLnu9KjiQBXvqwloZgneJHdbD8SEkr/\r\nrKNmJ29/1/21nK4J3bnN5H64qpsaiufOXNlZd2J5+uWwejz9BqYgX9Ek7tSw\r\nEWIHlA//job9H2UmTKQM4DzlXkGbl1Ixq8nDeeeHM1skfZP3iSCypef0NW/r\r\nOmJlc3cscjnK4xsG+qPjDMmS4PLp9Cd+gXvC5FsM8rieKrdy1SR/fpggmQ6B\r\nRoRhX2UFeH6eHMfH5/edW5Yk1wA+pheTu5+6pv5EBXaqo5lgsvvnbscMl5B1\r\nTx5sUaNlX1PArHXuYvzU0HO1TmbVvSOWeZMbB9bHrY0kVl0DoSShsuXded8q\r\nrvxwCnrNNHVisMpnUi/JsH09nSlXz5M8jSddV3AczfqzjN7nBHQgBNPNZKuK\r\n9bfYpfLTvj5ylMn95x0Ho0hlTMRwW5Nda6gks9muAN8kwDJNZtNvS2puxQ0h\r\nxFbmlSUvrOvvV/v389msQpHKILsmTTrUNvKuo4ZzZ2zBgUpL+cFGQQxOXnzR\r\n8vSufmDlTGsa2aZ47kgUpWXgZeEMNEPkywx6TQeL612wfpub3obHuw9H7FBC\r\nooVjhNNdO9CP2NSXL2DgD8hCzXmFTRzeljo=\r\n=jUak\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/Actions.js","gitHead":"e1f2b814db25e9501f7274b87032fa232dd69372","scripts":{"test":"mocha"},"_npmUser":{"name":"jalmatari","email":"jalmatari@gmail.com"},"repository":{"url":"git+https://github.com/SallaApp/webhooks-actions.git","type":"git"},"_npmVersion":"6.14.9","description":"Salla Webhooks Actions","directories":{},"_nodeVersion":"14.15.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.2.1","sinon":"^7.4.2","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/webhooks-actions_1.0.0_1652169018609_0.38097861360939644","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@salla.sa/webhooks-actions","version":"1.0.2","keywords":["node","salla"],"author":{"url":"https://github.com/SallaApp","name":"Salla App"},"license":"ISC","_id":"@salla.sa/webhooks-actions@1.0.2","maintainers":[{"name":"ahmed-alkatheri","email":"ahmed.alkatheri@salla.sa"},{"name":"kulth00m","email":"omkulthoom@salla.sa"},{"name":"ibra-hassan","email":"ibra.96.hassan@gmail.com"},{"name":"taghreedaaa","email":"taghreed@salla.sa"},{"name":"kodeburner","email":"kodeburner@gmail.com"},{"name":"thaifani","email":"zaher@salla.sa"},{"name":"emanlowndi","email":"eman@salla.sa"},{"name":"zymawy","email":"zymawy@gmail.com"},{"name":"muhammed-sh","email":"muhammedsoft88@gmail.com"},{"name":"dev-tarek","email":"abdelrahman.t.abdelhamid@gmail.com"},{"name":"dev_fouda","email":"php.dev.fouda@gmail.com"},{"name":"rashaamer","email":"Ralamer87@gmail.com"},{"name":"egkrinkel","email":"ahmed@salla.sa"},{"name":"eslamoo","email":"essomgd@gmail.com"},{"name":"adelgs","email":"adel@salla.sa"},{"name":"asmaa_sh_ali","email":"asm_sh_a@hotmail.com"},{"name":"dhafer","email":"dhafer@salla.sa"},{"name":"anasred","email":"anasahmar@gmail.com"},{"name":"omaralalwisalla","email":"omar.alalwi@salla.sa"},{"name":"devlomingo","email":"mo7md.badr@gmail.com"},{"name":"yamenarahman","email":"yamen.a.abdulrahman@hotmail.com"},{"name":"ossycodes","email":"ossyfizy009@gmail.com"},{"name":"salahmyn","email":"salahmyn@gmail.com"},{"name":"anass_at","email":"anass@salla.sa"},{"name":"adilah.m","email":"adilah.m@salla.sa"},{"name":"adel.elshafey","email":"adel.elshafey@salla.sa"},{"name":"tahaabdoh","email":"taha.abdoh@gmail.com"},{"name":"jamalla","email":"jamalla@salla.sa"},{"name":"krinkel","email":"admin@yallagroup.net"},{"name":"jalmatari","email":"jalmatari@gmail.com"},{"name":"ashraf.reda","email":"ashraf@salla.sa"},{"name":"s.alkhwlani","email":"yemenifree@yandex.com"}],"homepage":"https://github.com/SallaApp/webhooks-actions#readme","bugs":{"url":"https://github.com/SallaApp/webhooks-actions/issues"},"dist":{"shasum":"c7b42e8362fc39054a3e63033f6261db52575c52","tarball":"https://registry.npmjs.org/@salla.sa/webhooks-actions/-/webhooks-actions-1.0.2.tgz","fileCount":21,"integrity":"sha512-1RFtQSCv/d+u28zyy5hWjGSItdcrdBQMwOfADe8mp13gGu19kAhQKq12rtJqjl36gLKXl8bbFVQNbL6qd+yJtw==","signatures":[{"sig":"MEYCIQCg3TDyOU+FDw8USyEhZPa0WV4JHp+v6isuOm0fFpOtBAIhALDAqRPPWlnb4y/LSgvwSN7OyJn7d22nEtbvG58hO4UY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJieihuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpadQ//QNC13BYcqkGl+Q47SavyPdl1f4CCO1eP0HtJ+TJxPnCIh8GK\r\n+S0bWB1hakovCV0Ntj4//FSR/pSCZbPpkAkUA4tV3sdjS6yEakufN16T2yDa\r\nhZ6prgMygBFHhbzh8ab0SCKeOp0rHuO06i9ImEQ2+dSiYrBr+KUALda7/qNk\r\nOpRcqCbcq33+aD/eUmRlD5chC714/i8lSLe92pcdGj3eD+QHUgpbEd23WnMv\r\n6mn35Tsp7dG4YNkoQUSlHZT6PsrYx66B5nxJQeUrCMF5b6gAheETSIbJJNJg\r\nFiSy+n9ylx8m5bdw0HXO3I+mg0BJiptVJ1JPkRCPbQljhz/xk+ICJZcOXvfI\r\nwHOWIEsOzu86Gyyltp1T4Ljzk+I2eJKiSp9dih8lWZfOk2Cqo4Mjb3mbGd8t\r\njuAsN+elnJrIyUu4xzdFusiur5Xj1MJ+QPfVZoZspZAWeUqYTDbiL7+UVzSg\r\nqoLOnGo/HI7Zj/aHUnqfMVOq49/SCn/nASXUR4rRXWK0dSi10T0++GodbVSs\r\n55sTO2bJSTe275nw5jkrDwSjxHsRIrE91KWZcph9LY49wuzNpyJhCw+aGoNm\r\nqfSunqzdNUn1gsrIqWA4wby6RfbrQAE3+4/gQwWWoeoXYlbhJ+LZKYunpxSA\r\nEKnSVuuZOfZANDiwkaCqF6pl+9U/PQjj17U=\r\n=MdRi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/Actions.js","gitHead":"101e21a31d923b6265f4005bf12872d8eb831e8a","scripts":{"test":"mocha"},"_npmUser":{"name":"jalmatari","email":"jalmatari@gmail.com"},"repository":{"url":"git+https://github.com/SallaApp/webhooks-actions.git","type":"git"},"_npmVersion":"6.14.9","description":"Salla Webhooks Actions","directories":{},"_nodeVersion":"14.15.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.2.1","sinon":"^7.4.2","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/webhooks-actions_1.0.2_1652172909710_0.22024433491577033","host":"s3://npm-registry-packages"}}},"time":{"created":"2022-05-10T07:50:18.608Z","modified":"2026-07-28T17:56:31.809Z","1.0.0":"2022-05-10T07:50:18.814Z","1.0.2":"2022-05-10T08:55:09.923Z"},"bugs":{"url":"https://github.com/SallaApp/webhooks-actions/issues"},"author":{"url":"https://github.com/SallaApp","name":"Salla App"},"license":"ISC","homepage":"https://github.com/SallaApp/webhooks-actions#readme","keywords":["node","salla"],"repository":{"url":"git+https://github.com/SallaApp/webhooks-actions.git","type":"git"},"description":"Salla Webhooks Actions","maintainers":[{"email":"jalmatari@gmail.com","name":"jalmatari"},{"email":"info@salla.dev","name":"salla.dev"},{"email":"here.abran@gmail.com","name":"hereabran"}],"readme":"<div id=\"top\"></div>\n<div align=\"center\">\n  <a href=\"https://salla.dev\">\n    <img src=\"https://salla.dev/wp-content/themes/salla-portal/dist/img/salla-logo.svg\" alt=\"Logo\" width=\"80\" height=\"80\">\n  </a>\n\n<h1 align=\"center\">Salla Webhooks Actions</h1>\n  <p align=\"center\">\n    webhooks-actions  is used with <a href=\"http://salla.sa/\">Salla</a> to simplify the communication between your App and Salla APIs.\n    <br />\n    <a href=\"https://salla.dev/\"><strong>Explore our blogs »</strong></a>\n    <br />\n<br /><a href=\"https://github.com/SallaApp/webhooks-actions/issues/new\">Report Bug</a> · <a href=\"https://github.com/SallaApp/webhooks-actions/discussions/new\">Request Feature</a> · <a href=\"https://t.me/salladev\">&lt;/Salla Developers&gt;</a>\n  </p>\n</div>\n\n# Overview\n\nWebhooks simplify the communication between your App and Salla APIs. In this way, you will be notified whenever your app receives payload/data from the Salla APIs. These webhooks are triggered along with many actions such as an order or product being created, a customer logs in, a coupon is applied, and much more.\n\nThis module helps you to listen for notifications from Salla APIs within your Nodejs applications and Expressjs,\nBy using it you can impelement listernes for every event sent by Salla to your server .\n\nFor more information about Salla's Webhooks implementation, check our\n[Webhooks Explained](https://salla.dev/blog/webhooks-101/).\n\n## Webhooks Workflow\n\n![Webhooks Workflow](https://salla.dev/wp-content/uploads/2021/06/1-Webhooks-The-Wonder-Land-1-1024x512.png)\n\n## Installation\n\n    $ npm install @salla.sa/webhooks-actions\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n## Usage\n\nWith Salla Webhooks Actions you can listen for notifications send by Salla to your endpoint set by Expressjs or other frameworks like next.js\n\n### Impelement Using Listeners\n\nYou you can add listeners as a function, it will be exeucted every time an event is received .\n\n```javascript\n// Import Deps\nconst express = require(\"express\");\nconst bodyParser = require(\"body-parser\");\nconst consolidate = require(\"consolidate\");\n\n// Salla Webhook API\nconst SallaWebhook = require(\"@salla.sa/webhooks-actions\");\n\n// initialize app\nconst port = 8081;\nlet eventsStack = [];\nconst app = express();\napp.use(bodyParser.urlencoded({ extended: false }));\napp.use(bodyParser.json());\nrequire(\"dotenv\").config();\n\n/*\n  A .env file should be automatically created in the root directory of your project when createing your project with @salla/SallaCLI.\n  environment-specific variables on new lines in the form of NAME=VALUE. For example:\n  SALLA_OAUTH_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n  SALLA_OAUTH_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n  SALLA_WEBHOOK_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n  SALLA_AUTHORIZATION_MODE=easy\n  SALLA_OAUTH_CLIENT_REDIRECT_URI=https://example.com/oauth/callback\n  SALLA_APP_ID=123456789\n  ...\n*/\nconst SALLA_WEBHOOK_SECRET = process.env.SALLA_WEBHOOK_SECRET;\nSallaWebhook.setSecret(SALLA_WEBHOOK_SECRET);\n\n// Add Webhook listeners\n\nSallaWebhook.on(\"app.installed\", (eventBody, userArgs) => {\n  // handel app.installed event\n});\nSallaWebhook.on(\"app.stroe.authorize\", (eventBody, userArgs) => {\n  // handel app.app.stroe.authoriz event\n});\n\n// POST /webhook\napp.post(\"/webhook\", function (req, res) {\n  SallaWebhook.checkActions(req.body, req.headers.authorization, {\n    /* your args to pass to action files or listeners */\n  });\n});\napp.listen(port, function () {\n  console.log(\"App is listening on port \" + port);\n});\n```\n\n### Impelement Using Folder Structure\n\nYou you can add listeners as files easly using the `salla app create-webhook app.updated ` command; the file will be exeucted every time an event is received .\n\n```javascript\n/* \n    Actions\n      ├───app\n      │       installed.js\n      │       store.authorize.js\n      ├───brand\n      │       created.js\n      ├───customer\n      │       login.js\n      │       otp.created.js\n      │       request.js\n      │       updated.js\n      ├───order\n      │       created.js\n      ├───project\n      │       created.js\n      └───store\n              branch.created.js \n  */\n\n// Import Deps\nconst express = require(\"express\");\nconst bodyParser = require(\"body-parser\");\nconst consolidate = require(\"consolidate\");\n\n// Salla Actions API\nconst SallaWebhook = require(\"@salla.sa/webhooks-actions\");\n\n// initialize app\nconst port = 8081;\nlet eventsStack = [];\nconst app = express();\napp.use(bodyParser.urlencoded({ extended: false }));\napp.use(bodyParser.json());\nrequire(\"dotenv\").config();\n\n/*\n  A .env file should be automatically created in the root directory of your project when createing your project with @salla/SallaCLI.\n  environment-specific variables on new lines in the form of NAME=VALUE. For example:\n  SALLA_OAUTH_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n  SALLA_OAUTH_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n  SALLA_WEBHOOK_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n  SALLA_AUTHORIZATION_MODE=easy\n  SALLA_OAUTH_CLIENT_REDIRECT_URI=https://example.com/oauth/callback\n  SALLA_APP_ID=123456789\n  ...\n*/\nconst SALLA_WEBHOOK_SECRET = process.env.SALLA_WEBHOOK_SECRET;\nSallaWebhook.setSecret(SALLA_WEBHOOK_SECRET);\n\nSallaWebhook.on(\"all\", (eventBody, userArgs) => {\n  // handel all actions even thats not authorized . good for logging .\n});\n\n// the endpoint to receive actions from Salla\napp.post(\"/webhooks\", (req, res) =>\n  SallaWebhook.checkActions(\n    req.body,\n    req.headers.authorization,\n    ...{\n      /* add more arguments, will be passed to listner functions and SallaWebhook js files*/\n    }\n  )\n);\n\napp.listen(port, function () {\n  console.log(\"App is listening on port \" + port);\n});\n```\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\nSalla already defined a list of the webhooks/actions that are triggered automatically. The predefined webhooks/actions can be found in the folder [`Actions`](https://github.com/SallaApp/Laravel-Start-Kit/tree/master/Actions).\n\n#### Order Related Webhooks/Actions\n\n| ** Action Name **                                                               | ** Description **                                                            |\n| ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |\n| [order.created](app/Actions/Order/Created.js)                                   | This indicates a singular order has been created                             |\n| [order.updated](app/Actions/Order/Updated.js)                                   | Details, data and/or content of a specific order have been refreshed updated |\n| [order.status.updated](app/Actions/Order/StatusUpdated.js)                      | Whenever there is an order status update, this is triggered                  |\n| [order.cancelled](app/Actions/Order/Cancelled.js)                               | This happens when an order is cancelled                                      |\n| [order.refunded](app/Actions/Order/Refunded.js)                                 | The refund action to refund the whole order is triggered.                    |\n| [order.deleted](app/Actions/Order/)                                             | This indicates an order has been deleted                                     |\n| [order.products.updated](app/Actions/Order/ProductsUpdated.js)                  | Order products is updated                                                    |\n| [order.payment.updated](app/Actions/Order/PaymentUpdated.js)                    | A payment method has been updated                                            |\n| [order.coupon.updated](app/Actions/Order/CouponUpdated.js)                      | This is triggered whenever a Coupon is updated                               |\n| [order.total.price.updated](app/Actions/Order/TotalPriceUpdated.js)             | A total price of an order has been updated                                   |\n| [order.shipment.creating](app/Actions/Order/ShipmentCreating.js)                | This indicates a new shipment is being created                               |\n| [order.shipment.created](app/Actions/Order/ShipmentCreated.js)                  | This indicates a new shipment has been created                               |\n| [order.shipment.cancelled](app/Actions/Order/ShipmentCancelled.js)              | This indicates a an order shipment has been cancelled                        |\n| [order.shipment.return.creating](app/Actions/Order/ShipmentReturnCreating.js)   | This is triggered when a returned order shipment is being created            |\n| [order.shipment.return.created](app/Actions/Order/ShipmentReturnCreated.js)     | This is triggered when a returned order shipment has been created            |\n| [order.shipment.return.cancelled](app/Actions/Order/ShipmentReturnCancelled.js) | This is triggered when a returned order shipment has been cancelled          |\n| [order.shipping.address.updated](app/Actions/Order/ShippingAddressUpdated.js)   | Occurs when an Order shipping address is updated                             |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n#### Product Related Webhooks/Actions\n\n| ** Action Name **                                          | ** Description **                                                                    |\n| ---------------------------------------------------------- | ------------------------------------------------------------------------------------ |\n| [product.created](app/Actions/Product/Created.js)          | A new product is created. Payload of the new product are to accompanying the product |\n| [product.updated](app/Actions/Product/Updated.js)          | Add/Modify details of a product                                                      |\n| [product.deleted](app/Actions/Product/Deleted.js)          | Delete a product along with all its variants and images                              |\n| [product.available](app/Actions/Product/Available.js)      | Flags a product as stock available                                                   |\n| [product.quantity.low](app/Actions/Product/QuantityLow.js) | Shows warnings whenever a stock is of low quantity                                   |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n#### Shipping Companies Related Webhooks/Actions\n\n| ** Action Name **        | ** Description **                                                                     |\n| ------------------------ | ------------------------------------------------------------------------------------- |\n| shipping.zone.created    | This is triggered when a shipping zone has been created for a custom shipping company |\n| shipping.zone.updated    | This is triggered when a shipping zone has been updated for a custom shipping company |\n| shipping.company.created | This is triggered when a custom shipping company has been created                     |\n| shipping.company.updated | This is triggered when a custom shipping company has been updated                     |\n| shipping.company.deleted | This is triggered when a custom shipping company has been deleted                     |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n#### Customer Related Webhooks/Actions\n\n| ** Action Name **                                          | ** Description **                        |\n| ---------------------------------------------------------- | ---------------------------------------- |\n| [customer.created](app/Actions/Customer/Created.js)        | Create a new customer record             |\n| [customer.updated](app/Actions/Customer/Updated.js)        | Update details for a customer            |\n| [customer.login](app/Actions/Customer/Login.js)            | Triggered whenever a customer log in     |\n| [customer.otp.request](app/Actions/Customer/OtpRequest.js) | One-Time Password request for a customer |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n#### Category Related Webhooks/Actions\n\n| ** Action Name **                                   | ** Description **                                   |\n| --------------------------------------------------- | --------------------------------------------------- |\n| [category.created](app/Actions/Category/Created.js) | Creates a new category for products to be put under |\n| [category.updated](app/Actions/Category/Updated.js) | Add new or reform existing category details         |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n#### Brand Related Webhooks/Actions\n\n| ** Action Name **                             | ** Description **                                                                    |\n| --------------------------------------------- | ------------------------------------------------------------------------------------ |\n| [brand.created](app/Actions/Brand/Created.js) | Creates a new Brand.                                                                 |\n| [brand.updated](app/Actions/Brand/Updated.js) | Triggered when Information about a sepcific Brand is updated/refurbished/streamlined |\n| [brand.deleted](app/Actions/Brand/Deleted.js) | An existing brand is then deleted and removed from a store                           |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n#### Store Related Webhooks/Actions\n\n| ** Action Name **                                                | ** Description **                  |\n| ---------------------------------------------------------------- | ---------------------------------- |\n| [store.branch.created](app/Actions/Store/BranchCreated.js)       | Creates a new store.               |\n| [store.branch.updated](app/Actions/Store/BranchUpdated.js)       | Updates an existing branch         |\n| [store.branch.setDefault](app/Actions/Store/BranchSetDefault.js) | Sets for default a specific branch |\n| [store.branch.activated](app/Actions/Store/BranchActivated.js)   | Activates a disabled branch        |\n| [store.branch.deleted](app/Actions/Store/BranchDeleted.js)       | Deletes a branch                   |\n| [storetax.created](app/Actions/Store/TaxCreated.js)              | Creats a new Store Tax             |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n#### Cart Related Webhooks/Actions\n\n| ** Action Name **                                            | ** Description **                               |\n| ------------------------------------------------------------ | ----------------------------------------------- |\n| [abandoned.cart](app/Actions/Miscellaneous/AbandonedCart.js) | Outputs a list of abandoned carts               |\n| [coupon.applied](app/Actions/Miscellaneous/CouponApplied.js) | Creates a discount code in the form of a coupon |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n#### Special Offer Related Webhooks/Actions\n\n| ** Action Name **                                                        | ** Description **           |\n| ------------------------------------------------------------------------ | --------------------------- |\n| [specialoffer.created](app/Actions/Miscellaneous/SpecialofferCreated.js) | Creates a new special offer |\n| [specialoffer.updated](app/Actions/Miscellaneous/SpecialofferUpdated.js) | Updates a special offer     |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n#### Miscellaneous Related Webhooks/Actions\n\n| ** Action Name **                                        | ** Description **               |\n| -------------------------------------------------------- | ------------------------------- |\n| [review.added](app/Actions/Miscellaneous/ReviewAdded.js) | A product review has been added |\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n<!-- COMMANDS -->\n\n<!-- ## Examples\n\nTBD -->\n\n## Tests\n\n    $ npm install --dev\n    $ npm test\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n## Support\n\nThe team is always here to help you. Happen to face an issue? Want to report a bug? You can submit one here on Github using the [Issue Tracker](https://github.com/SallaApp/Salla-CLI/issues/new). If you still have any questions, please contact us via the [Telegram Bot](https://t.me/SallaSupportBot) or join in the Global Developer Community on [Telegram](https://t.me/salladev).\n\n## Contributing\n\nContributions are what make the open-source community such an amazing place to learn, inspire, and create.\nAny contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request.\nYou can also simply open an issue with the tag \"enhancement\". Don't forget to give the project a star! Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n\n## Security\n\nIf you discover any securitys-related issues, please email security@salla.sa instead of using the issue tracker.\n\n## Credits\n\n- [Salla](https://github.com/sallaApp)\n- [All Contributors](../../contributors)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n<p align=\"right\">(<a href=\"#top\">back to top</a>)</p>\n","readmeFilename":"README.md"}