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';tohtdocs/conf/conf.php(value2if the PHP system functionsexec,passthru,shell_exec,system,popenandproc_openare not disabled inphp.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.
- Download the module from DoliStore or clone the Git repository into
htdocs/custom/ultimatemarketplace - Go to Home → Setup → Modules/Applications
- Find Ultimate Market Place in the Websites and other frontal application family
- Enable the module by clicking the button in the Enabled column
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.phpand/_service_download.phpat 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_bufferingis disabled in PHP, the buyer's session does not start ("session expired" at login). - The
sitemap.xmland therobots.txtare 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:
- 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 (ultimatemarketplaceby default, see the "Website to use for the marketplace" setting). - PHP must be enabled there. The web server user must be able to read the Dolibarr files (
htdocs) and write to<documents>/websiteand<documents>/medias; ifopen_basediris used, it must include these directories. Allow symbolic links on the website directory: itsmediasfolder is a link to<documents>/medias. - Enable HTTPS on this domain: payment gateways require it.
- 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
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
| 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
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
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
| 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
| 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
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
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
The website generated by the module uses the logo and colors defined in the setup and offers:
- a catalogue organised by categories, with the "New" and "Promotions" badges and a carousel on the home page;
- a product page with the price (category discount already applied) and, for products with price levels, the choice of the duration;
- a cart, kept in session until validation, with a coupon code field;
- a checkout linked to the chosen online payment module;
- a customer area: personal information, "My addresses", order history and download area.
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.
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.