PrestaShop Monitoring & Alerts (DataFirefly Monitor)
Install the module, schedule the cron, set up alert channels and understand each detection.
DataFirefly Monitor watches your PrestaShop 8 or 9 shop continuously and warns you when it goes down, crashes, slows down or stops taking payments. This documentation covers installation, the cron task, notification channels, each detection and alert handling.
Installation
- In the back office, open Modules > Module Manager, click Upload a module and send the file
dfmonitor-1.1.0.zip. - The module creates its tables and a tab Advanced Parameters > Monitoring & Alerts. The module’s Configure button leads straight to it.
- On installation, the shop email is used as recipient and the Payment error status is selected as failure status. PrestaShop logs written before installation are not imported.
The module is compatible with PrestaShop 8.0 to 9.x, multistore and multilingual. It uses no Composer dependency. Upgrading from 1.0.0 is done by uploading the new ZIP: the upgrade script adds the new columns and fills in the origin of errors already recorded.
Getting started
The dashboard shows a four-step setup list until it is complete: receive a first notification, add the cron task, check the failed payment statuses, add an external heartbeat. Each step leads to the right settings tab.
Cron task
Fatal errors and failed payments are reported in real time. Everything else (availability, response time, payments, orders, server, report) is evaluated by a scheduled task that should run every 5 minutes.
Server cron (recommended)
*/5 * * * * php /path/to/prestashop/modules/dfmonitor/cron.php
The exact command, with your server path, is shown in Settings > Scheduled checks with a Copy button.
Cron by URL
If your host only allows web crons, call the token-protected URL shown in the same tab, from your hosting panel or a service such as cron-job.org. It answers in JSON and also works when the shop is in maintenance mode. The Generate a new token button invalidates the previous URL.
Without a cron
With PHP-FPM, the Fallback without cron option runs the checks from visitor traffic when no cron ran for 10 minutes, after the page has been sent. The uptime check and the heartbeat do not run in this mode, and an outage at night can go unnoticed when there are no visits.
External heartbeat
The module cannot report a complete server outage. Create a check on Healthchecks.io or Better Stack and paste its URL into Heartbeat URL: it is called at every cron run, and the service warns you when the calls stop.
Notification channels
Turn on as many channels as you like in Settings > Notification channels. Each channel has a minimum severity (warning and critical, or critical only) and a Save and send a test button that saves the form and then sends a real message. The result of the last delivery is shown under the channel name.
Enter one or more recipients separated by commas. Emails use the PrestaShop email configuration (Advanced Parameters > E-mail) and the default language of the shop.
Telegram
- In Telegram, open @BotFather, send
/newbotand follow the instructions. - Paste the token you receive into Bot token.
- Send a message to your bot, or add it to a group, then click Detect my chat: the chat ID is filled in automatically.
Slack
In Slack: Apps > Incoming Webhooks > Add to Slack, choose the channel and copy the webhook URL, which starts with https://hooks.slack.com/.
Discord
In Discord: Server settings > Integrations > Webhooks > New webhook, then Copy webhook URL.
Webhook
For Zapier, Make, n8n, an on-call tool or your own script. A JSON POST is sent for each new alert, reminder and resolution, with the header X-DataFirefly-Event:
{
"event": "open",
"alert": {
"id": 42, "key": "payment:1", "type": "payment", "severity": "critical",
"title": "...", "message": "...", "occurrences": 3,
"first_at": "2026-10-07 16:35:00", "last_at": "2026-10-07 16:45:00",
"ack_url": "https://..."
},
"shop": { "name": "...", "url": "https://..." },
"sent_at": "2026-10-07T16:45:01+02:00"
}
The values of event are open, repeat, resolved and test. When a signing secret is set, each request carries the header X-DataFirefly-Signature: sha256=…, the HMAC SHA-256 of the raw body with that secret.
Alert rules
- Reminder for an ongoing alert: delay between two notifications about the same problem (60 minutes by default).
- Maximum notifications per hour: 20 by default, 0 for no limit.
- Recovery message: a message is sent when a notified problem disappears.
- Quiet hours: during the chosen range, only critical alerts are sent. A warning still open at the end of the range is sent at the next cron run.
- Summary report by email: disabled, daily or every Monday, at the chosen hour. It covers availability, response time, PHP errors, orders, failed payments, alerts of the period and the most frequent errors.
Pause
The Pause button in the header suspends notifications for 30 minutes, 2 hours, 8 hours or 24 hours, for example during an update. Problems are still detected and recorded; those still open when the pause ends are notified.
What the module detects
PHP errors
The module captures fatal errors and warnings (and optionally notices and deprecations) on the storefront and, if the option is ticked, in the back office. Identical errors are grouped. A new fatal error triggers an immediate critical alert; the alert expires silently after 24 hours without a new occurrence. A spike alert is raised above 100 errors and warnings in 15 minutes (adjustable, 0 to disable). PrestaShop logs of severity 3 and 4 are imported at every cron run.
Each error gets a probable origin: module, theme, override, compiled template or core. When the error is raised in the core, the first module found in the call stack is used.
Response time and availability
- Response time is measured on real visits to the shop. The Share of pages measured is adjustable from 1 to 100%; each measured page costs one database write.
- An alert is raised when the 95th percentile over 15 minutes exceeds the threshold (3000 ms by default), from 20 measured pages.
- A critical alert is raised when the server error rate (HTTP 5xx or PHP fatal) exceeds 5% over 15 minutes, with at least 5 errors.
- The home page is loaded at every server cron run; two consecutive failures open the critical alert “Shop unreachable”. The check is suspended in maintenance mode.
Payments and orders
- Payment failures: orders moved to one of the selected statuses over the last hour, broken down by payment module. Default threshold: 3. The check also runs as soon as an order changes status. Tick the statuses your payment modules use for a refusal.
- Checkout conversion: the module records every cart that reaches the payment step, then compares, over a 2-hour window ending 30 minutes before the check, the share of those carts that became orders with the usual share over 28 days. The check starts after about 40 carts of history and 8 carts in the window (adjustable).
- Order drop: orders over the last 3 hours (adjustable) are compared with the average of the same time slot over the previous 4 weeks. The check is skipped when fewer than 4 orders are expected. Zero orders instead of the usual activity gives a critical alert.
- Sensitivity: low, medium (recommended) or high. High sensitivity alerts earlier but gives more false alarms.
In multistore, payments, conversion and orders are evaluated shop by shop.
Server health
- SSL certificate: read every 6 hours on the shop domain. Warning 14 days before expiry (adjustable), critical at 3 days.
- Disk space: warning below 2048 MB free (adjustable), critical below a quarter of that threshold. On shared hosting with a quota, the value read may be the whole server disk.
- Cron watchdog: once a server cron has run, an alert is raised from visitor traffic or the back office after 30 minutes without a run.
Handling alerts
A problem opens a single alert, updated while it lasts. The Alerts tab lists the history and the notifications sent, with the result of each delivery.
- Acknowledge: stops the reminders. The recovery message is still sent.
- Close: closes the alert. If the problem is still there, a new alert opens at the next check.
Acknowledging from a notification
Each alert notification contains an Acknowledge and stop reminders link. It opens a confirmation page on the shop, designed for phones; the alert is acknowledged only after you confirm, which stops mail security scanners from acknowledging it by opening the link.
PHP errors page
Filter by severity or origin, search a message, a file or a page. An expanded error shows the page, controller, dates, full message and, for warnings, the call stack. The Copy the report for a developer button copies a text with the PrestaShop and PHP versions, file, origin, page, occurrences, message and call stack. Mute keeps counting the error but never alerts on it again.
Data and privacy
- Page addresses are stored without URL parameters.
- The call stack is stored without function arguments.
- The server path and the admin folder name are removed from every stored and sent text.
- Telegram tokens and webhook paths are masked in the notification log.
- History is purged after 30 days by default (adjustable from 7 to 365 days); closed alerts are kept for 90 days.
Known limits
- A fatal error raised before modules are loaded is not caught by the error handler; the uptime check and the 5xx rate report it.
- Symfony back-office pages do not go through the hook used to capture back-office errors.
- Checkout conversion relies on the
displayPaymentTophook. If your one-page checkout module does not call it, disable this check: the order drop check still applies.
Troubleshooting
The email test fails
Check the configuration in Advanced Parameters > E-mail and send a test email from that page. The exact error message is shown after the test and in the Alerts tab.
“No server cron detected” stays displayed
Only the CLI cron or the cron URL count as server cron. Run the command by hand over SSH: it prints a JSON report. If it fails, check the PHP CLI path with your host.
The Telegram test returns “chat not found”
A bot can only write to a conversation that has already talked to it. Send it a message, then click Detect my chat.