Sylius plugin · integration from the inside

The store opens.
Orders still do not come in.

A channel with no active payment or shipping method looks, from the outside, like a store in perfect shape: the page answers, the certificate is valid, product cards open. The cart ends at the one step no probe from the internet ever takes. The plugin checks it from the inside.

Requirements: Sylius 1.12 and newer, including 2.x, Symfony 6.4 or 7.x, PHP 8.1 and newer

A healthy store is not the same as a store that sells.

Three situations on a perfectly healthy site. A probe knocking from the internet has no way of seeing any of them.

The Messenger queue is stuck.

Order messages, recalculations and integrations all travel through it. When a consumer dies the store keeps selling, only nobody receives a confirmation and the messages pile up for a later that never comes.

The checkout path cannot close.

A disabled payment or shipping method in an active channel breaks no single address. It shows up in a weaker day in the sales report.

Scheduled commands stopped running.

Cron disappeared during a server move and nobody noticed, because the store works. A marker the command stamps on every run is what catches it.

What we read on every check.

Every minute by default. Each parameter carries its own state and its own response time, so the panel shows not just that something broke, but exactly what stopped.

  • Database

    A test query on every read, together with its response time.

  • Job queues (Messenger)

    The backlog and the failed messages. Order emails and store recalculations travel this way.

  • Checkout path

    Whether the active channel has a payment and a shipping method enabled.

  • Scheduled tasks

    Whether the recurring commands really run, rather than merely sitting in the crontab.

  • Application cache

    Writing and reading a control key.

  • Disk space

    Whether the working and media directories are writable, the size of the installation and how much of the hosting quota is used, if the host exposes it.

  • Outgoing email (SMTP)

    The connection to the mail server: TCP, greeting and EHLO. It tests the connection, not the delivery.

  • Elasticsearchwhen you use it

    The state of the cluster behind search and product listings.

Security hygiene, once a day.

This is not a malware scan and we do not pretend it is one. We check the settings that most often survive a release, and for each of them we say what the target state is.

  • Admin panel accounts

    How many enabled accounts reach orders and prices, and whether the set has changed.

  • Application mode

    Whether the store runs in production mode, with debugging off.

  • Error display

    Whether PHP errors and the profiler are unreachable from the outside, together with the server paths.

  • Application secret

    Whether the key signing sessions and tokens is neither default nor too short.

  • File and directory permissions

    Whether the files holding secrets and the working and media directories are not left wide open.

  • Pending updates

    How many packages have newer versions. Numbers only, no names.

Installation.

All of it on your side. You give us no server passwords and no access to your panel.

  1. 1Unpack the package next to the project and wire it in with Composer as a path repository.
  2. 2Add the bundle to config/bundles.php, register its routes and allow public access to the health address in security.yaml. Three snippets from the README.
  3. 3In the store admin open Calmfox Watch in the main menu and click „Connect through watch.calmfox.net”.
Commands, requirements and unusual setups: the integration catalogue ›
mkdir -p pakiety && unzip calmfox-watch-sylius.zip -d pakiety
composer config repositories.calmfox-watch '{"type":"path","url":"./pakiety/calmfox-watch","options":{"symlink":false}}'
composer require calmfox/watch-sylius:@dev

One button to connect.

In your own admin panel you click Connect, you can create the Calmfox Watch account along the way, and you come back with the integration in place. No key is copied by hand.

What the package never sends.

No page content, no customer data, no database rows and no passwords. What travels are numbers and service states. Even the set of accounts with full permissions travels as a one way fingerprint salted with your installation secret: enough to detect a change, useless anywhere outside your site.

What we store and for how long ›

Before you ask.

How much work is the installation?

Three snippets from the README: an entry in config/bundles.php, the plugin routes and letting the control address through security.yaml. The rest happens with the Connect button in your store panel.

Is Sylius 2.x supported?

Yes, the plugin supports 1.12 and above, including 2.x, on Symfony 6.4 or 7.x. The store version and the PHP version travel to the panel on every check.

Do you see orders and customer data?

No. From the checkout path we read the channel configuration only: whether a payment and a shipping method are active. Orders, carts and buyer data are never sent.

How is the address you read the data from protected?

It answers only with the secret key in the address (128 bits, compared in constant time), with headers that forbid indexing and caching. Without the key it returns 403. You rotate the key with one click and the previous one keeps working for another fifteen minutes, so the switch never raises a false alarm.

Your site runs on something else?

We have packages for WordPress, Neos, Sylius and Magento. Every other site stays on monitoring from the outside, which needs nothing installed on the server — we simply will not see the inside.

Check your website.
Free, in two minutes.

The free technical review covers availability, the certificate, the domain, email, content and forms. It ends with a score and a list of tasks you can hand to your developer. No payment card and no commitment.