Callback Requests – Documentazione
Installation
- Upload the ZIP through Modules > Module Manager > Upload a module, or extract it into
/modules/mprcallback. - Install it. The module creates its own tables, registers its hooks for your PrestaShop version and adds a Callback Requests entry under Customer Service.
- Open Callback Requests > Business Hours and set your opening hours before anything else. Until you do, the widget has no window to offer and will not accept requests. This is deliberate: it is better to accept nothing than to promise a call you were never going to make.
Setting your business hours
Each day takes one or more opening intervals. The gap between two intervals is your lunch break, and no callback window will ever straddle it.
- Overnight opening: tick past midnight on an interval that ends the next day, for example 22:00 to 02:00.
- Closed day: leave the day empty.
- Exception dates: replace an entire day, including an interval that started the previous evening. Use them for public holidays, stocktakes or a one-off late opening.
- Public holidays: choose a country and a year and import them as closed dates instead of typing them.
The panel below the grid shows exactly what a visitor would be offered at this moment, so a mistake in the schedule is something you notice here rather than something a customer tells you about.
How the windows are decided
The widget never counts down. It offers concrete choices computed from your hours:
| Option | When it appears |
|---|---|
| As soon as possible | Only while you are open, and only if the target time still fits before you close |
| This morning | When part of this morning is still ahead of you |
| Later today | When you have opening time left after 16:00 |
| Next open day | Always available while there is an open day within the next twelve months |
Outside opening hours the modal says plainly that you will call back within business hours, and offers the next valid windows. The "usually within N minutes" line is shown only while the shop is actually open.
Every window is stored in UTC together with the deadline you were shown, so the time in your queue is the same moment the customer was promised, whatever timezone either of you is in.
Working the queue
The queue is the product. Each row carries the number as a click-to-call link, the page or product the visitor came from, the window they chose, your deadline, and a place for notes.
- Status: new, called, no answer, done. Change it inline or with the row actions.
- Overdue is calculated when you look at the list, never stored, so it cannot be left stale by a job that did not run.
- Filters work on every column, including overdue.
- Export CSV exports exactly what your current filters show, not the whole table.
- Bulk actions handle a morning's worth of calls at once.
The four figures above the list are the ones that matter: new today, overdue now, called today, and your median time to call back.
Notifications
You receive an email as soon as a request arrives, and a second one when a request passes the window the customer was given. Recipients are set per shop in Settings > Notifications and can be a comma-separated list.
Reminders and the retention purge run as scheduled tasks. If your shop has no real cron, they run opportunistically after normal page requests, which is best effort rather than punctual. For dependable timing, point your host's cron at the URL shown on the Scheduled Tasks screen.
Choosing where the button appears
Settings > Placement turns on the floating button, the product page, the header, and a custom hook. For anything more specific, set Where the widget appears to "only on" or "except on" and pick products, categories or content pages with the selector that appears below the form.
To place the button yourself, enable the custom hook and add this to your theme:
{hook h='displayMprCallback'}
Privacy and data protection
- The exact consent wording shown to the visitor is stored with every request, along with a keyed digest and a timestamp, so you can show what was agreed rather than what the page says today.
- The official PrestaShop GDPR module can export and erase the requests of a registered customer.
- A guest leaves only a phone number, which the GDPR module cannot match. Settings > Guest requests by phone number lets you look up, export or erase by number, using the same validation the form uses so a typo cannot erase someone else's record.
- Requests are deleted automatically after 30 or 90 days, whichever you choose.
Keeping bots out
Four defences run before anything is stored: a honeypot field, a check that the form was not submitted impossibly fast, a per-visitor rate limit, and duplicate-number collapse so one impatient person is one lead rather than five. IP addresses are never stored, only a keyed hash.
Multishop
Every setting, every schedule and every request is scoped to its shop. One shop can never see or be notified about another shop's leads.
Troubleshooting
The button does not appear. Check that the placement is enabled, and that Where the widget appears is not excluding the page you are looking at.
The modal says callbacks are unavailable. No opening interval was found in the next twelve months. Add opening hours.
No emails arrive. Check the recipients in Settings, then check that your shop can send mail at all. Reminder emails also depend on cron, so confirm the scheduled tasks are running.
Times look wrong. Check the timezone in Settings > Scheduling. It is per shop and is what every window is computed from.