Module UltimateMarketPlace EN

UltimateMarketPlace module

Overview

The UltimateMarketPlace module is an extension for Dolibarr ERP/CRM published by Atoo-Net.

It provides everything needed to publish a single-vendor online marketplace: a ready-to-use website template (product catalogue, cart, checkout, customer accounts, download area), used with the Dolibarr Website module, to sell your own products and services directly online.

It is a simplified fork of the Dolibarr "Marketplace" module (used for dolistore.com), from which everything specific to the Dolibarr association, as well as the multi-vendor circuit / module submission and review by third-party developers, has been removed.

Property Value
Author Philippe Grand — Atoo-Net
Version 24.0.1
License GNU GPL v3+
Minimum Dolibarr v24.0
Minimum PHP v8.2

Why use UltimateMarketPlace?

UltimateMarketPlace turns your Dolibarr installation into a standalone online shop, without relying on a CMS or a third-party e-commerce platform (PrestaShop, WooCommerce…). Catalogue, orders, invoices and customers stay natively in Dolibarr.

Use cases

Selling physical or digital products

Publish your catalogue of products or services directly from the Dolibarr product cards: just place them under the root category of the shop. Files attached to the product can be delivered to the customer in their download area after payment.

Subscriptions and time-limited licences

With the product validity duration and the Dolibarr price levels ("Multiprices"), sell the same product with several subscription durations: download links expire automatically at the end of the purchased period.

Preferential prices for your best customers

Category discounts link a customer category to a product category: the discounted price is displayed automatically as soon as the customer is logged in, with no code to enter.

Sales campaigns and coupon codes

Create discount codes (percentage or fixed amount), limited in time or in number of uses, each one reserved for a given product, to boost your online sales.

Online payment

Connect the checkout to the online payment modules already configured in Dolibarr (Stripe, PayPal…), either with a classic redirection to the public payment pages, or embedded in a frame of the shop.

SEO and audience tracking

Simplified URLs, automatically generated sitemap.xml, robots.txt and llms.txt, Schema.org markup, Google Search Console verification and Matomo Analytics integration to track traffic without relying on Google Analytics.

Installation

Requirements:

  • Dolibarr 24.0 or later and PHP 8.2 or later;
  • the shop pages contain dynamic PHP code: before enabling the module, add the line $dolibarr_website_allow_custom_php = '1'; to htdocs/conf/conf.php (value 2 if the PHP system functions exec, passthru, shell_exec, system, popen and proc_open are not disabled in php.ini). Without this line, Dolibarr refuses to import the website template and the shop remains empty;
  • the Dolibarr modules Third parties, Products, Services, Categories, Orders, Invoices, Banks, Emailings and Website are required: they are enabled automatically with the module.
  1. Download the module from DoliStore or clone the Git repository into htdocs/custom/ultimatemarketplace
  2. Go to Home → Setup → Modules/Applications
  3. Find Ultimate Market Place in the Websites and other frontal application family
  4. Enable the module by clicking the button in the Enabled column
 
Enabling the UltimateMarketPlace module

When enabled, the module automatically performs several actions:

  • Enables multilingual management (MAIN_MULTILANGS), since product cards can be translated
  • Creates a root product category and a "prospect/customer" third-party category if none is configured yet
  • Registers the module's own invoice PDF template
  • Creates (or re-enables) a dedicated website into which the website template provided by the module is imported

Update: after replacing the files, disable then enable the module again (your settings are kept). To bring the website pages in line with the new version, then use the Reset website template button (see Maintenance mode).

The module declares no permission of its own: the administration pages are reserved for Dolibarr administrators, and the shop pages use their own customer session.

Domain and virtual host

The shop must be served from its own domain (for example https://shop.example.com), through a virtual host of the web server (Apache, Nginx…). Dolibarr's preview address, …/public/website/index.php?website=…, is for testing only: without a domain, the shop does not fully work.

  • The cart and the downloads call /_service_page_ajax.php and /_service_download.php at the root of the domain. Without a virtual host, these calls end in a 404 error and the cart stops updating.
  • In preview, Dolibarr prints an HTML comment before the page. If output_buffering is disabled in PHP, the buyer's session does not start ("session expired" at login).
  • The sitemap.xml and the robots.txt are built from the virtual host set on the website: if it is empty, they are not generated, and the e-mailing unsubscribe links point to Dolibarr instead of the shop.

Setting it up:

  1. Create a virtual host whose root (DocumentRoot) is the website directory: <documents>/website/<ref> (<documents>/<entity>/website/<ref> for an entity other than the first one). <documents> is the Dolibarr documents directory, and <ref> the reference of the website created on activation (ultimatemarketplace by default, see the "Website to use for the marketplace" setting).
  2. PHP must be enabled there. The web server user must be able to read the Dolibarr files (htdocs) and write to <documents>/website and <documents>/medias; if open_basedir is used, it must include these directories. Allow symbolic links on the website directory: its medias folder is a link to <documents>/medias.
  3. Enable HTTPS on this domain: payment gateways require it.
  4. In Dolibarr, Websites menu, open Edit website properties and enter the full domain, https:// included, in the Virtual host or domain name field.

Example for Apache, to adapt (paths of a Debian or Ubuntu package):

<VirtualHost *:443>
    ServerName shop.example.com
    DocumentRoot "/var/lib/dolibarr/documents/website/ultimatemarketplace"

    <Directory "/var/lib/dolibarr/documents/website/ultimatemarketplace">
        AllowOverride FileInfo Options
        Options -Indexes -MultiViews +FollowSymLinks -ExecCGI
        Require all granted
    </Directory>
    <Directory "/var/lib/dolibarr/documents/medias">
        Options -Indexes -MultiViews -FollowSymLinks -ExecCGI
        Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/shop.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/shop.example.com/privkey.pem
</VirtualHost>

Configuration

The module is configured in Home → Setup → Modules/Applications → Ultimate Market Place, spread over several tabs: Settings, Setup of payments, Coupon codes, Category discounts, Security, Setup of API server (shown only if the REST API module is enabled), Matomo Analytics, Carousel, User guide and About.

Before opening the website to the public, go through the tabs in this order: Settings (Miscellaneous, Products, Third parties, Website and Email templates sections), Setup of payments, Security, then disable maintenance mode.

Settings

 
Settings tab of the module setup

Miscellaneous

Setting Constant Description
Market place name ULTIMATEMARKETPLACE_NAME Name of the shop: title of the home page, title of llms.txt, sender name on the PDF invoice
Market place description / Market place keywords ULTIMATEMARKETPLACE_DESCRIPTION / _KEYWORDS Meta description and keywords of the home page, translatable per language
Market place email ULTIMATEMARKETPLACE_EMAIL Public contact email displayed on the website
Maintenance mode ULTIMATEMARKETPLACE_MAINTENANCE_MODE Closes the shop to the public and blocks sales
Block new registrations ULTIMATEMARKETPLACE_BLOCK_REGISTRATION Closes the creation of new customer accounts
IP addresses allowed to bypass maintenance mode and the registration block ULTIMATEMARKETPLACE_MAINTENANCE_MODE_ALLOWED_IPS Whitelist of IP addresses (for example the office one)
Sidebar cache duration ULTIMATEMARKETPLACE_SIDEBAR_CACHE_ENABLED / _SIDEBAR_CACHE_DURATION Sidebar cache in minutes (5 by default), with a button to clear the website cache

Products

Setting Constant Description
Root category for products to sell on the marketplace ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID Products/services of this category and its subcategories make up the catalogue (mandatory)
Category featured in the central block of the home page ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID_BIS Optional, the root category otherwise
Category for the widget "Version" ULTIMATEMARKETPLACE_VERSIONS_CATEGORY_ID Products carrying version numbers (downloadable software)
Category for the widget "Promotions" ULTIMATEMARKETPLACE_SPECIAL_CATEGORY_ID Products displayed with a promotion badge
Minimum product price ULTIMATEMARKETPLACE_MIN_PRODUCT_PRICE Paid products below this price are excluded from the catalogue
Maximum age (in days) for a product to be visible into the "New products" section ULTIMATEMARKETPLACE_DELAY_FOR_NEW 30 days by default
Category to force the "New product" status ULTIMATEMARKETPLACE_NEW_CATEGORY_ID / _NEW_CATEGORY_MAX_AGE Forces the "New" badge; a daily scheduled job removes products from it after the given delay
Enable product validity duration ULTIMATEMARKETPLACE_ENABLE_PRODUCT_VALIDITY_DURATION Validity start and end dates on order lines, which drive the expiry of downloads; durations per price level if "Multiprices" are enabled

Third parties

Setting Constant Description
Category for all prospects or customers created from the marketplace website ULTIMATEMARKETPLACE_PROSPECTCUSTOMER_ID Category assigned to every third party created by the registration form
Enable multiple addresses ULTIMATEMARKETPLACE_ENABLE_MULTI_ADDRESS "My addresses" section of the customer account (billing and shipping addresses)
Convert prospect to customer on their first payment ULTIMATEMARKETPLACE_CONVERT_PROSPECT_TO_CUSTOMER_ON_FIRST_PAYMENT The prospect becomes a customer as soon as their first invoice is paid

Website

Setting Constant Description
URL for the logo of the marketplace ULTIMATEMARKETPLACE_URL_FOR_LOGO Logo of the website header; otherwise the company logo, then a logo provided with the module
URL of the welcome image / Hide the welcome image ULTIMATEMARKETPLACE_WELCOME_IMAGE_URL / _WELCOME_IMAGE_HIDE Banner of the home page
Main theme color / Secondary theme color ULTIMATEMARKETPLACE_THEME_COLOR / _SECONDARY_COLOR Theme colors (#a45931 and #333333 by default)
Enable simplified URLs ULTIMATEMARKETPLACE_FRIENDLY_URLS URLs such as /en/123-product-name.html
Google Search Console verification token ULTIMATEMARKETPLACE_GOOGLE_SITE_VERIFICATION Verification meta tag
llms.txt description ULTIMATEMARKETPLACE_LLMS_DESCRIPTION Presentation sentence of the website in llms.txt
User with permissions to perform website operations ULTIMATEMARKETPLACE_USER_MANAGE_WEBSITE Technical user used by the shop (creation of third parties, orders…)
Website to use for the marketplace ULTIMATEMARKETPLACE_WEBSITE_ID Dolibarr website managed by the module, set when the module is enabled
Always delete the draft order on logout ULTIMATEMARKETPLACE_DELETE_ORDER_ON_LOGOUT Empties the current cart when the customer logs out
Show a cookie consent banner ULTIMATEMARKETPLACE_ENABLE_COOKIE_BANNER Consent banner on the website

Important: if you change the associated website (ULTIMATEMARKETPLACE_WEBSITE_ID), the users, third parties and orders already created stay linked to the former website and are not migrated automatically.

Email templates

Three drop-down lists let you choose, among the Dolibarr email templates (Setup → Emails → Templates), the one of the welcome email sent when the account is created (ULTIMATEMARKETPLACE_WELCOME_EMAIL_TEMPLATE), the one of the "Forgotten password" email (ULTIMATEMARKETPLACE_FORGOT_PASSWORD_EMAIL_TEMPLATE) and the one of the buyer's order confirmation (ULTIMATEMARKETPLACE_BUYER_ORDER_CONFIRMATION_TEMPLATE).

Setup of payments

 
Setup of payments tab
Setting Constant Description
Block sales on the marketplace ULTIMATEMARKETPLACE_BLOCK_SALES The catalogue can still be browsed but ordering is disabled; forced while maintenance mode is active
Auto close orders on successful payment ULTIMATEMARKETPLACE_CLOSE_ORDER_AFTER_PAYMENT Closes the Dolibarr order once the payment is confirmed
Select the payment method to use ULTIMATEMARKETPLACE_MAIN_PAYMENT_METHOD Dolibarr online payment module used when the order is validated
Include the payment pages provided by Dolibarr inside a frame of the market place shop (advanced users) ULTIMATEMARKETPLACE_PAYMENT_IN_FRAME Payment displayed in a frame under the shop domain

Two payment integration modes are available:

  • Separate page (default): no particular setup, the customer is redirected to the public payment pages of your Dolibarr. Drawback: the back-office domain is visible to the customer.
  • Frame (advanced users, Stripe and Stancer): the payment page is called through a URL of the shop itself. A reverse proxy rule is required on the shop web server; a configuration example is displayed on the page once the option is enabled.

Coupon codes

 
Coupon codes tab

Each coupon code is linked to one given product and has a discount type (percentage or fixed amount), a value, optional validity dates and maximum number of uses, and an active/inactive flag. The buyer enters the code in the cart: it is accepted only if it is active, within its validity dates, under its usage limit and if the product concerned is in the cart. The usage counter is only incremented when the order is validated.

Category discounts

 
Category discounts tab

A category discount links a customer category to a product category with a discount percentage. For a logged-in customer belonging to this category, the discounted price is displayed directly on the product page and in the cart, with no code to enter. If several rules apply, the highest percentage wins.

Security

 
Security tab
Setting Constant Description
Captcha provider ULTIMATEMARKETPLACE_CAPTCHA_PROVIDER None, Google reCAPTCHA or Cloudflare Turnstile, with their site keys and secret keys
Enable this protection ULTIMATEMARKETPLACE_LOGIN_PROTECTION_ENABLED Limits the login attempts on the shop
Number of failures before blocking / Duration before unblocking (minutes) ULTIMATEMARKETPLACE_LOGIN_MAX_ATTEMPTS / _LOGIN_BLOCK_DURATION 5 failures and 15 minutes by default
IP addresses allowed to bypass this protection ULTIMATEMARKETPLACE_LOGIN_BYPASS_IPS Whitelist (automated tests, trusted network)

The captcha and the login protection are disabled by default: configure them before opening registration to the public.

Setup of API server

This tab only appears if the Dolibarr REST API module is enabled. It contains the Public API key (ULTIMATEMARKETPLACE_PUBLIC_API_KEY, with a button to generate one), passed as the apikey parameter to the two read-only public endpoints added by the module: /api/index.php/ultimatemarketplace/categories and /api/index.php/ultimatemarketplace/products.

Matomo Analytics

 
Matomo Analytics tab
Constant Description
ULTIMATEMARKETPLACE_ENABLE_MATOMO Enables Matomo on the website: the tracking code is injected into every page
ULTIMATEMARKETPLACE_MATOMO_SITE_KEY Matomo site ID
ULTIMATEMARKETPLACE_MATOMO_SERVER_URL Full URL of the Matomo server
ULTIMATEMARKETPLACE_MATOMO_AUTH_TOKEN Optional authentication token, needed to display Matomo statistics in Dolibarr

Carousel

 
Carousel tab

Settings of the home page carousel: transition type (none, fade, slide), speed in milliseconds, pause on mouse hover and loop. Each slide has an image, an optional link and a title; the order is changed by drag and drop and images are chosen or uploaded through an image selector.

User guide

 
User guide tab

The User guide tab displays, in the user's language, a complete guide to configuring and running the module, as text only: the screenshots are on this page.

Usage

Online shop

 
Home page of the shop

The website generated by the module uses the logo and colors defined in the setup and offers:

  1. a catalogue organised by categories, with the "New" and "Promotions" badges and a carousel on the home page;
  2. a product page with the price (category discount already applied) and, for products with price levels, the choice of the duration;
  3. a cart, kept in session until validation, with a coupon code field;
  4. a checkout linked to the chosen online payment module;
  5. a customer area: personal information, "My addresses", order history and download area.
 
Product page of the shop

Validating the cart creates a standard Dolibarr order; the payment produces a standard Dolibarr invoice.

Files delivered to the customer

The Shop files tab of the product card shows, for each attached file, whether it is displayed on the public product page. A file ticked "Main file" or "Visible to customer" can be downloaded by the customer once their order is paid; a warning is displayed if no file of the product is. If the product validity duration is enabled, the download link expires at the end of the purchased period; otherwise it never expires.

UltimateMarketPlace menu

 
Marketplace statistics

The Marketplace main menu gives access to:

  • Statistics: invoice statistics, customer statistics, product statistics, list of sales and, if Matomo is configured, Matomo statistics;
  • Products without tags: catalogue products without keywords, to check the quality of the catalogue;
  • Shopping carts and Invoices: standard Dolibarr order and invoice lists, filtered on those coming from the shop.

Maintenance mode and template reset

Maintenance mode closes the website to the public (except for the allowed IP addresses) and blocks sales. While it is active, the Settings tab offers two buttons:

  • Generate sitemap.xml: immediately regenerates sitemap.xml;
  • Reset website template: re-imports the module's website template into the existing website, overwriting the changes made by hand in the page editor. To be used after a module update.

Remember to disable maintenance mode once the checks are done: it does not turn itself off.

SEO

robots.txt, sitemap.xml and llms.txt are regenerated automatically when the module is enabled, when the Settings tab is opened and after a template reset. Once simplified URLs are enabled, the old URLs remain valid during the transition.

What's new in version 24.0.1

  • Documentation: the user guide and this page explain how to serve the shop on its own domain, through a virtual host whose root is the website directory (see Domain and virtual host). The module code is unchanged.

What's new in version 24.0.0

Compatibility

  • Dolibarr 24 and PHP 8.2 minimum: the module now requires Dolibarr 24.0.0 and PHP 8.2; it is tested up to PHP 8.5. The update check reads versionmodules/ultimatemarketplace/v24/ultimatemarketplace.txt.
  • Numbering aligned with Dolibarr: after 1.0.8, the module moves straight to 24.0.0, like the other Atoo-Net modules.

Translations

  • The shop cart block displayed raw keys (quantity, total, shipping, FreeShipping): it now loads the module translations. Reset the website template to benefit from it.
  • Added the missing labels of the shop pages (references, VAT, items, adding and removing addresses, registration form checks…) and of the administration messages, in the five languages.
  • Translated into French, German, Spanish and Italian the labels that only existed in English.

Documentation and distribution

  • User guide: requirements and compatibility section; the English guide becomes GUIDE_UTILISATEUR-EN.md.
  • Wiki page rewritten from the current screens, with screenshots in the five languages.
  • DoliStore package build script and continuous integration (dependency installation and syntax check under PHP 8.4 and 8.5).

Previous versions

The details of versions 1.0.0 to 1.0.8 (coupon codes, category discounts, carousel, login protection, simplified URLs, llms.txt, user guide…) are in the ChangeLog.md file shipped with the module.

FAQ