PS PrestaShop Intermediate

DataFirefly Live Shopping — Complete Guide

Install, configure and run live selling: native video (HLS / MP4 / embed), real-time Studio, flash deals, chat, e-mail reminders, replays and native cart for PrestaShop 1.7, 8 and 9.

Updated Module version 1.1.0

Overview

The DataFirefly Live Shopping module (dflive) turns your PrestaShop store into a live video selling platform. You broadcast a live, pin products in real time, launch flash deals, your customers add to cart without leaving the stream, and the session remains available as a replay. Everything runs on your store: no third-party live shopping platform, no recurring subscription.

Three pillars: native video (HLS, MP4 or embed), a real-time Studio inside the back office to run the live, and a shopping layer (product pinning, flash deals, native cart, chat, reactions, social proof, e-mail reminders).

Compatibility

  • PrestaShop 1.7.0 to 1.7.8, 8.x and 9.x (since module version 1.1.0)
  • PHP 5.6 to 8.3, depending on the PrestaShop version
  • Classic and Hummingbird themes, and themes based on them
  • Single store and multistore
  • Multilingual (5 languages included: FR, EN, ES, DE, IT)
  • No dependency (no Composer, no framework); hls.js is bundled in the module
  • Shared hosting compatible (AJAX polling sync, no WebSocket or SFU)

On PrestaShop 1.7.0 to 1.7.5, labels handled by PrestaShop’s new translation system (XLF files) are shown in French, because these versions do not yet load module XLF translations. Everything is translated from 1.7.6 onwards.

Requirements

The module handles video playback and the whole shopping layer, but you provide the video source. Depending on the mode:

  • HLS: a .m3u8 stream served by your own HLS server, Mux or Cloudflare Stream, fed by an encoder such as OBS.
  • MP4: a URL pointing to a publicly accessible .mp4 file.
  • Embed: a YouTube, Twitch or Vimeo live (URL or <iframe> embed code).

For “Notify me” reminders, your store must be configured to send e-mails (Advanced Parameters > E-mail).

HTTPS is recommended: autoplay and full screen behave better on a store served over HTTPS, which almost every production store already uses.

Installation

  1. In the back office, open Modules > Module Manager.
  2. Click Upload a module and select the dflive.zip file.
  3. Once installed, open Sell > Live Shopping > Lives & Replays.

On installation, the module creates its tables (sessions, session products, messages, events, presence, reminders), registers its tabs under Sell, adds the /live and /live/{id}-{slug} routes, and enables the homepage widget.

Upgrading from version 1.0.0

  1. In Modules > Module Manager, upload the new dflive.zip (or replace the modules/dflive folder over FTP).
  2. Click Upgrade on the module row if PrestaShop offers it.

The 1.1.0 upgrade script runs automatically, with no data loss. It:

  • adds the required columns (guest anti-flood, reminder language and shop);
  • assigns your existing lives to all your shops;
  • replaces empty dates stored as 0000-00-00 with null values;
  • removes the displayHeader hook, which is no longer needed.

If you use CCC (combined CSS and JS), clear the PrestaShop cache after upgrading (Advanced Parameters > Performance > Clear cache) so the new player files are picked up.

Creating a live

From Sell > Live Shopping > Lives & Replays, click Add new. The form is organised in tabs:

General

  • Title and description of the live (multilingual).
  • Host: name shown as host in the chat and under the video.
  • Scheduled date / time: triggers the viewer countdown.
  • Status: scheduled, live or ended. Status can also be driven from the Studio; a change made from the form has the same effects (dates, deal cleanup, update for viewers).
  • Cover image: JPG, PNG, GIF or WebP, shown before the live and in listings. The actual file type is checked: any other file is rejected.

Video

  • Video source type: HLS, MP4 or embed.
  • Video source: the .m3u8 URL, the .mp4 URL, or the embed URL / <iframe> code depending on the type. For embed code, only the iframe address is used on the viewer side.
  • Replay URL (VOD) (optional): for example the recording from your HLS server, played automatically once the live has ended.

Products

Assign the products presented during the live with the AJAX search picker (name, reference or ID). Drag and drop the rows to set the rail order. A disabled product stays in the list but is not shown during the live.

Options

Enable or disable chat, reactions and replay for this session, and its visibility in the store. In multistore, choose the shops where the live is published.

SEO

Fill in the meta title, the meta description and, if you wish, the friendly URL of the live page (left empty, it is generated from the title).

Streaming

For an HLS live, the principle is:

  1. Configure your encoder (OBS, for example) to stream to your HLS server, Mux or Cloudflare Stream.
  2. Copy the output .m3u8 URL and paste it into the session’s Video source field.
  3. Start streaming from your encoder, then open the Studio and click Go live.

The stream is only loaded for viewers once the live starts. If the HLS stream is temporarily unavailable (encoder starting late, network drop), the player retries automatically.

The module does not lock you into any infrastructure: you choose your broadcasting chain (self-hosted or cloud) and simply paste the URL. For a quick test, an MP4 file or a YouTube / Twitch embed is enough.

The Studio (control room)

The Studio is the control room inside the back office. Open it from the Studio button in the live list.

  • Go live / End: switches the session status. On start, “Notify me” sign-ups receive their e-mail. On end, running flash deals are removed and the pinned product is unpinned.
  • Pin a product: its card appears immediately over the video for viewers, including those who join later. Pinning a product automatically unpins the previous one. The time of the first presentation is stored for the replay timeline.
  • Flash deal: enter a discount (for example 20% or 10) and, if needed, a duration (5 to 60 minutes, or unlimited). The module creates a SpecificPrice on the fly and the recalculated price appears instantly for viewers. The × button stops the deal and restores the regular price for everyone.
  • Pinned announcement: shows a banner over the viewers’ video and adds the message, pinned, to the chat.
  • Message as host: posts in the chat on behalf of the host.
  • Moderation: hide, show or pin any message. A hidden message also disappears for viewers who had already received it.
  • Live statistics: number of viewers, reactions and reminder sign-ups, in real time.

The Studio pushes events (pin, deal, announcement, status change, hide) that viewers pick up on the next polling cycle. The interval can be set in the module settings.

“Notify me” reminders

On a scheduled session, the viewer enters their e-mail (pre-filled when logged in) and clicks Notify me. The number of sign-ups is shown on the live page and in the Studio.

When you click Go live, a first batch of e-mails is sent immediately; the rest are sent in batches of 20 while the Studio stays open. Each sign-up receives the e-mail in the language they signed up in (FR, EN, ES, DE or IT, English by default for other languages), with a direct link to the live. A sign-up is notified only once.

The templates are in modules/dflive/mails/{language}/dflive_reminder.html and .txt. You can customise them like any PrestaShop e-mail.

Viewer side

A live page (/live/{id}-{slug}) shows:

  • The video player with a “LIVE” badge and the viewer count. Browsers only allow autoplay without sound: a Turn sound on button appears on the video.
  • The pinned product card over the video, with an add-to-cart button.
  • The live’s product rail, each product addable to the native PrestaShop cart in one click. The theme’s cart block refreshes without opening a pop-up, so the live is not interrupted. Stock, minimum quantities and cart rules are respected; for a product with combinations, the default combination is added.
  • The chat (customers and, if enabled, guests) with anti-flood, host messages and animated heart reactions.
  • Host announcements as a banner over the video.
  • Social proof toasts “Someone just added…” on add-to-cart.

For a scheduled session, the viewer sees a countdown (based on server time) and can sign up for reminders. When the live starts, the page switches to live automatically, without reloading.

Replays and product timeline

When the live ends, the page switches to replay mode automatically:

  • if a replay URL is set, the recorded video is loaded with its playback controls;
  • for an embed live, the embed stays on screen (or the replay URL if you entered one);
  • without a replay source, a “Live ended” screen is shown.

During replay playback, each product reappears over the video at the moment it was first pinned during the live. The marker is counted from the start of the live: for exact sync, your recording should start when you click Go live.

If the Replay available option is disabled, the page of an ended live redirects to the /live list.

Module settings

The configuration page (Modules > Module Manager > DataFirefly Live Shopping > Configure) groups the global settings. Out-of-range values are automatically brought back into the allowed range.

  • Polling interval (3,000 ms by default, 1,000 to 60,000): refresh rate of chat and events during a live. Before the live and in replay, the rate is slowed down automatically.
  • Live chat and guest chat: allow the chat and, if needed, participation by visitors who are not logged in.
  • Reactions and social proof: enable hearts and add-to-cart toasts.
  • Viewer timeout (30 s by default, 10 to 600): delay after which an inactive viewer is no longer counted.
  • Max. message length (300 by default, 20 to 500) and anti-flood (3 s by default, 0 to disable): frame the chat. For guests, anti-flood applies per IP address (stored as a hash, never in clear).
  • Homepage widget and lives shown (4 by default, 1 to 24): control the homepage block.

Listing page and homepage widget

The /live page lists live sessions, upcoming ones (soonest first) and replays (most recent first). The homepage widget highlights these sessions within the configured limit. In multistore, each shop only shows the lives assigned to it.

Security

  • Chat, add-to-cart and reminder sign-up are protected by PrestaShop’s standard anti-CSRF token.
  • Chat messages are stripped of any HTML before display.
  • Only real images are accepted as covers, and the upload folder blocks script execution.
  • For embed code, only the iframe address is used: no attribute or script is injected into the page.

FAQ and troubleshooting

The video does not start

Check the video type and source. For an HLS stream, make sure the .m3u8 URL is publicly accessible and your encoder is streaming; the player retries automatically for about 90 seconds. For an embed, check that the YouTube, Twitch or Vimeo URL is valid. Before the live starts, no video is loaded: this is expected.

The live has no sound

This is a browser rule: autoplay is only allowed without sound. The viewer clicks Turn sound on on the video.

The flash deal price does not change for viewers

The deal is applied through a SpecificPrice created on the fly and propagated on the next polling cycle. Check the polling interval, that the deal has not already been stopped and that its duration has not expired. An amount discount greater than or equal to the product price is rejected.

The chat does not show or rejects my messages

Check that chat is enabled for the session and globally. Guest chat must be enabled to allow visitors who are not logged in. Anti-flood enforces a minimum delay between two messages. If “Reload the page to continue” appears, the visitor’s session has changed (logging in from another tab, for example): reloading is enough.

Sign-ups did not receive the reminder e-mail

Check the store’s e-mail configuration (Advanced Parameters > E-mail, with a test e-mail) and look at the logs (Advanced Parameters > Logs). E-mails are sent when the live starts and then in batches while the Studio is open: keep the Studio open until sending is complete.

The countdown is not displayed

The countdown only appears for scheduled sessions with a date set. Without a date, “The live is about to start” is shown.

The cart counter does not update

The product is added to the cart; the cart block refresh depends on the theme’s cart module (ps_shoppingcart). If you use CCC, clear the cache after upgrading the module.

Does the module work on shared hosting?

Yes. Real-time sync uses AJAX polling, without a WebSocket server or SFU, which ensures compatibility with common shared hosting.

Version history

1.1.0 — 26 October 2026

  • PrestaShop 1.7.0 to 1.7.8 compatibility (PHP 5.6 to 8.3), in addition to 8 and 9.
  • “Notify me” reminders sent by e-mail when the live starts (5 languages).
  • Replays: automatic switch, video no longer hidden, product timeline.
  • “Turn sound on” button, automatic HLS recovery, pinned product visible to late joiners.
  • Flash deals with a duration, regular price restored when the deal ends.
  • Multistore: shop selection per live.
  • Security: anti-CSRF token, upload checks, IP-based guest anti-flood, filtered embed.
  • Clean URLs, SEO meta, breadcrumb, product drag & drop, banner announcements.

1.0.0 — 6 June 2026

  • Initial release for PrestaShop 8 and 9.
Was this page helpful?

Still stuck? Contact support