diff --git a/app/Actions/ActionsReport.php b/app/Actions/ActionsReport.php
index 7879aa4..6743592 100644
--- a/app/Actions/ActionsReport.php
+++ b/app/Actions/ActionsReport.php
@@ -1,88 +1,97 @@
 <?php
 
 namespace Nasqueron\Notifications\Actions;
 
+use Keruald\OmniTools\Collections\HashMap;
+
 class ActionsReport {
     /**
      * List of actions
      *
      * @var Action[]
      */
     public $actions = [];
 
     /**
      * Report created date
      *
      * @var int
      */
     public $created;
 
     /**
      * The entry gate
      *
      * @var string
      */
     public $gate;
 
     /**
      * The entry door
      *
      * @var string
      */
     public $door;
 
     /**
      * Initializes a new instance of an actions report
      */
     public function __construct () {
         $this->created = time();
     }
 
     ///
     /// Properties
     ///
 
     /**
      * Sets the gate and the door for this report
      *
      * @param string $gate The gate
      * @param string $door The door
      */
     public function attachToGate (string $gate, string $door) : void {
         $this->gate = $gate;
         $this->door = $door;
     }
 
     /**
      * Adds an action to the list of actions to report
      *
      * @param Action $action The action to add
      */
     public function addAction (Action $action) : void {
         $this->actions[] = $action;
     }
 
     /**
      * Determines if one of the action has failed.
      */
     public function containsError () : bool {
         foreach ($this->actions as $action) {
             if ($action->error !== null) {
                 return true;
             }
         }
 
         return false;
     }
 
     ///
     /// Output
     ///
 
+    /**
+     * Gets an array representation of the current instance
+     */
+    public function toArray() : array {
+        return HashMap::from($this)->toArray();
+    }
+
     /**
      * Gets a JSON string representation of the current instance
      */
     public function __toString () : string {
         return json_encode($this, JSON_PRETTY_PRINT);
     }
 }
diff --git a/app/Http/Controllers/Gate/GateController.php b/app/Http/Controllers/Gate/GateController.php
index 3961095..bd3f68b 100644
--- a/app/Http/Controllers/Gate/GateController.php
+++ b/app/Http/Controllers/Gate/GateController.php
@@ -1,120 +1,132 @@
 <?php
 
 namespace Nasqueron\Notifications\Http\Controllers\Gate;
 
+use Nasqueron\Notifications\Actions\ActionsReport;
 use Nasqueron\Notifications\Config\Features;
 use Nasqueron\Notifications\Config\Services\Service;
 use Nasqueron\Notifications\Facades\Services;
 use Nasqueron\Notifications\Facades\Report;
 use Nasqueron\Notifications\Http\Controllers\Controller;
 
 use Illuminate\Support\Facades\App;
 use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\Response;
 use Illuminate\View\View;
 use Symfony\Component\HttpFoundation\Response as BaseResponse;
 
 /**
  * Represents a controller handling an entry-point for API payloads
  */
 abstract class GateController extends Controller {
 
     ///
     /// Private members
     ///
 
     /**
      * @var string
      */
     protected $door;
 
     ///
     /// Requests
     ///
 
     /**
      * Handles GET requests
      */
     public function onGet () : View {
         // Virtually all the push APIs will send they payloads
         // using a POST request, so we can provide a sensible
         // default GET error message.
         return view('gate/ispostonly');
     }
 
     /**
      * Logs the request
      */
     protected function logRequest (array $extraContextualData = []) : void {
         Log::info('[Gate] New payload.', [
             'service' => $this->getServiceName(),
             'door' => $this->door,
         ] + $extraContextualData);
     }
 
     ///
     /// Reports
     ///
 
     /**
      * Initializes the report and registers it
      */
     protected function initializeReport () : void {
         if (Features::isEnabled('ActionsReport')) {
             Report::attachToGate($this->getServiceName(), $this->door);
         }
     }
 
     /**
      * Renders the report
      */
     protected function renderReport () : BaseResponse {
         if (!Features::isEnabled('ActionsReport')) {
             return response("");
         }
 
         $report = App::make('report');
         $statusCode = $report->containsError() ? 503 : 200;
+
+        $this->logResponse($report, $statusCode);
+
         return Response::json($report)
             ->setStatusCode($statusCode);
     }
 
+    /**
+     * Logs the action reports sent as response by the controller
+     */
+    protected function logResponse (ActionsReport $report, int $statusCode) : void {
+        Log::info("[Gate] Actions report.", $report->toArray());
+        Log::info("[Gate] Response is HTTP $statusCode");
+    }
+
     ///
     /// Credentials
     ///
 
     abstract public function getServiceName ();
 
     /**
      * Gets service credentials for this gate and door
      */
     public function getService () : ?Service {
         return Services::findServiceByDoor(
             $this->getServiceName(),
             $this->door
         );
     }
 
     /**
      * Checks if a registered service exists for this service and door.
      */
     protected function doesServiceExist () : bool {
         return $this->getService() !== null;
     }
 
     /**
      * Gets secret for this service and door.
      *
      * @return string the secret, or if unknown, an empty string
      */
     protected function getSecret () : string {
         $service= $this->getService();
 
         if ($service !== null) {
             return $service->secret;
         }
 
         return "";
     }
 
 }
diff --git a/composer.json b/composer.json
index 6e1579d..1c56807 100644
--- a/composer.json
+++ b/composer.json
@@ -1,63 +1,64 @@
 {
   "name": "nasqueron/notifications",
   "description": "Nasqueron notifications center",
   "keywords": [
     "nasqueron",
     "activemq",
     "AMQP",
     "notifications"
   ],
   "license": "BSD-2-Clause",
   "type": "project",
   "require": {
     "php": ">=8.1.0",
     "laravel/framework": "^9.30.0",
     "guzzlehttp/guzzle": "7.5.0",
     "keruald/dockerhub": "^0.1.0",
     "keruald/github": "^0.2.1",
     "keruald/broker": "^0.5.0",
     "keruald/mailgun": "^0.1.0",
+    "keruald/omnitools": "^0.8.0",
     "netresearch/jsonmapper": "^1.1.1",
     "sentry/sentry-laravel": "^3.2"
   },
   "require-dev": {
     "laravel/browser-kit-testing": "^v6.3.0",
     "mockery/mockery": "^1.5.0",
     "nasqueron/codestyle": "^0.1.0",
     "pdepend/pdepend": "^2.10",
     "phan/phan": "^5.3",
     "sebastian/phpcpd": "6.0.3",
     "phploc/phploc": "7.0.2",
     "phpmd/phpmd": "^2.12",
     "phpspec/phpspec": "^7.2",
     "phpunit/phpunit": "^9.5.20",
     "rector/rector": "^0.14.2",
     "squizlabs/php_codesniffer": "^3.6"
   },
   "autoload": {
     "psr-4": {
       "Nasqueron\\Notifications\\": "app/",
       "Nasqueron\\Notifications\\Tests\\": "tests/"
     }
   },
   "scripts": {
     "post-root-package-install": [
       "php -r \"copy('.env.example', '.env');\""
     ],
     "post-create-project-cmd": [
       "php artisan key:generate"
     ],
     "phpmd": [
       "vendor/bin/phpmd app/ xml ruleset.xml"
     ],
     "test": [
       "phpunit --no-coverage"
     ]
   },
   "config": {
     "preferred-install": "dist",
     "allow-plugins": {
       "kylekatarnls/update-helper": true
     }
   }
 }