Promotions

  • INTERVENTION PLUS - Complete Management of Interventions

    The “Intervention Plus” module is a revolutionary tool that simplifies and optimizes intervention management, from planning to invoicing. Designed for sales and technical teams, it offers a complete suite of features to ensure transparent and efficient monitoring of each intervention.

    250.00 €  (500€)
  • CRM 360

    This module provides a comprehensive overview of customer interactions and data, centralizing all relevant information in one place.

    175.00 €  (350€)

New products

  • create your own personal consistency rules

    Consistency enables the creation of custom consistency checks. It relies on an SQL query to validate the desired check, and a tooltip appears on the item's record. It is also possible to display a consistency indicator in item lists. Consistency comes with multiple examples in the xmlsample folder.

    50.00 €
  • DoliScribe — Audio notes and Mistral transcription in Dolibarr

    DoliScribe lets you record voice notes from Dolibarr, transcribe them with the Mistral API (Voxtral), then insert the text into your fields. Every recording is kept: audio file, transcript, and link to the related object — so you always have a searchable history.

    150.00 €

Doli2Shop - ERP Integration

mp21640d20250417205854

Shopify ↔ Dolibarr synchronization: products both ways, import orders/customers from Shopify. License provided upon purchase. Also available on the Shopify App Store. 5 languages.

250.00 €
Excl. tax

  • Author Association P'tite Tête
  • Module version 2.5.5
  • Release date 04/17/2025
  • Access to download and updates 1 year
  • How to contact support doli2shop@ptitetete.org (Temps de réponse : 5 jours ouvrés)
  • Compatibility Dolibarr V18 - V24   -   PHP7.2.5 - 8.5
  • Last update 09/22/2026 08:24 PM

More info...

Doli2Shop - ERP Integration

Professional synchronization module between your Shopify store and your Dolibarr ERP.

Features

  • Real-time webhooks: orders, products, stock, shipments synchronized instantly
  • Automatic export of products, variants, images and stock from Dolibarr to Shopify
  • Import of products from Shopify to Dolibarr
  • Automatic import of orders with customers, addresses and discounts from Shopify
  • Automatic invoice and payment creation from Shopify orders
  • Catch-up CRON: no order lost even if a webhook fails
  • 6-step configuration wizard for quick setup
  • Multi-price and Shopify variant management
  • Complete administration interface with logs, diagnostics and webhook viewer
  • Compatible Dolibarr 18 to 24, Docker, Cloudron

License and activation

When purchasing on the DoliStore, you will receive a serial number by email within 24 business hours to activate your module. Enter it in Doli2Shop > License in your Dolibarr.

Doli2Shop is also available on the Shopify App Store (https://apps.shopify.com/doli2shop) with instant automatic license activation via Shopify Billing, no email required.

What's new in v2.5.5

  • The module now keeps its own log, separate from Dolibarr's general log, with a "Download the module log" button on the Support tab. If something goes wrong you attach it to your message, and the diagnosis starts from facts instead of a round of questions. Rotation, archiving and purge are handled by Dolibarr itself: no extra setting to learn
  • Fix, accounting impact: a global discount spread across line items was never applied on two import paths — the historical import and the single-order fetch, that is, the path used after a new order notification. A piece of information needed for the decision was not requested from Shopify, so the condition was always false: the order was recorded at full price, with no error and no warning
  • A product left without images on Shopify is now counted and named, on screen and in the scheduled task report. The module declines the upload when it finds no image on the Dolibarr side, so as not to remove your existing visuals without a replacement — until now it said so only in a technical line nobody read
  • Fix: the stock of a variant with no matching SKU was never sent to Shopify, and nothing said so. The variant stayed indefinitely at whatever quantity it held when the mismatch appeared — sellable while out of stock, or unsellable while in stock — all the while the report announced a successful synchronisation
  • Dolibarr variants with no Shopify counterpart, and Shopify variants with no Dolibarr counterpart, are now counted, listed per product and flagged as not synchronised, both in the synchronisation report and on the diagnostics screen
  • Fix: a product whose photos had disappeared on the Shopify side (product deleted then recreated, media removed by hand, backup restore) never got them back. The module relied on a fingerprint of the Dolibarr images to conclude that Shopify already held them, and no purge cleared that fingerprint: the correct procedure, correctly applied, could not work
  • Purges now clear the image memory, a skipped upload is reported in the synchronisation report, and a "force a full image re-upload" action for a single product is available in the configuration — with no SQL query and no global purge
  • Accessibility: 52 pieces of text shown in our brand colours fell short of the contrast required by WCAG AA. Fixed in our emails, the website screens and the module stylesheets, using darkened variants that keep the same hue

What's new in v2.5.4

  • Important: from 12 November 2026, an expired licence stops the module's synchronisation — in both directions, including the import of your Shopify orders into Dolibarr. An active licence is only concerned when it expires. You are warned inside the module throughout the preceding period, with the exact date. As this mechanism is embedded in the module, it only applies to updated installations: an earlier version keeps working
  • The stop date comes from our servers rather than your installation, and it is signed: a date altered locally is ignored. If our servers do not respond, nothing stops — an outage on our side must never cut off an up-to-date customer
  • Fix: "Your licence has expired" no longer appears when it is our server that failed to respond. The message was false and affected customers who had paid, on a mere network outage. A licence that was never activated is also no longer announced as expired
  • Licence expiry emails are finally sent: 30 days before, 7 days before, then on the expiry date. They were planned but had never been written
  • The renewal link now leads to the right place depending on the purchase channel: a DoliStore customer is no longer sent to Shopify
  • The licence warning appears on every administration screen of the module, instead of two
  • Stock now flows from Dolibarr to Shopify by default. This only concerns installations that never chose an explicit direction; an existing setting is kept as is
  • New audit screen: on stores set to tax-exclusive prices, it reports which orders were recorded below their true value, with the amount at stake. It reports and changes nothing — a validated invoice is corrected by a credit note, which remains your decision

What's new in v2.5.3 (cumulative, covers 2.5.0 to 2.5.3)

  • Critical fix, accounting: on a Shopify store set to tax-excluded prices (tax is added at payment), every imported order was undervalued by about 17% — lines, discounts, shipping and invoice included. The module divided the price by the VAT rate assuming it was always tax-included, without ever reading the store's actual setting. The gap was not visible from Dolibarr: the payment was recorded at the already-wrong amount, so the invoice appeared settled. If the setting cannot be determined, the order is no longer imported and the rejection is shown on screen with its reason
  • Fix, accounting impact: the "do not import unpaid orders" setting was only honored by two of the three import paths. Webhooks ignored it: an order awaiting payment was imported AND invoiced. Every rejected order is now shown on screen with its reason, and comes in normally once it is paid later
  • New: amount discrepancies between Shopify and Dolibarr are now shown in the diagnostic, with the number of orders affected. The module distinguishes a rounding gap of a few cents from a proportional gap, which points to a systematic calculation error
  • Multicompany fix: photos imported from Shopify are finally registered in the Dolibarr file index at the moment they are stored. Without this, Dolibarr indexed them itself later, with no protection against concurrent access — causing repeated "record already exists" errors on product and order records
  • Fix: an installation whose store table was incomplete could no longer get out of that state. Connecting a store failed on a missing column, and the diagnostic recommended a reactivation that fixed nothing. The repair is now automatic on activation, without ever emptying or recreating a table
  • Multi-store fix: disconnecting a store always acted on the default store, regardless of which one was displayed, and deleted the order data for the whole entity. It is now limited to the store named in the confirmation
  • Ten admin screens existed with no link leading to them: order status mapping, support tickets, collection mapping, maintenance. They are now reachable. Two obsolete scripts were removed
  • Fix: the order status mapping screen crashed as soon as it opened, its four write buttons did nothing, and its "Restore default values" button emptied the tables without reinserting anything. The default values are now complete, including for refunded, cancelled or authorized-without-capture orders
  • The screen that sets the direction of synchronisations is fixed and reachable again, and it now clearly shows which directions are actually active
  • An administrator is no longer wrongly flagged as lacking rights on the diagnostic screen
  • Supported Dolibarr versions: 18.0 to 24.x. Three versions are actually tested on every release — 18.0, the previous one and the latest. Intermediate versions install and work, without dedicated testing
  • Critical Multicompany fix: on installations where the module is configured on an entity other than the first one, no webhook was ever accepted. The entry point always ran in the first entity and could not find the signing secret there — orders, products and shipments stopped coming through, without a single error message, and nothing was kept to be replayed
  • Fix, all installations: product photos were duplicated on every Shopify notification — a mere price or stock change dropped another copy. A cleanup screen is provided for the duplicates already accumulated, with a preview before deletion
  • Multicompany fix: product photos never reached Shopify, and the diagnostic screen reported "no product with at least one photo" while the ERP showed them. VAT on imported orders was also computed using the company record of the first entity. Default payment mappings, meanwhile, were never created on a secondary entity
  • Critical fix: on some installations, the Shopify connection had to be re-established manually every day. The default store kept two copies of its credentials and automatic renewal updated only one of them
  • Fix: each variant label was replaced by the parent product title on every update coming from Shopify, including a simple price or stock change
  • Fix: the product synchronisation screen and the scheduled task did not look at the same scope — a product filed under a sub-category was synchronised without ever appearing on screen. A go-live date now lets you exclude orders predating your move to Shopify
  • Configurable directional flows: for products, stock, orders and payments, you choose the direction of each synchronisation — Dolibarr to Shopify, the other way round, both, or none
  • New document, in five languages: the go-live procedure for connecting the module to a Dolibarr that already holds your sales history, including what it does not protect against

What's new in v2.4.6 (cumulative, covers 2.4.3 to 2.4.6)

  • Critical fix: on hardened installations (anti-CSRF token renewed on every page), every admin action of the module was silently rejected — including the setup wizard. Clicking "Save" produced neither effect nor message. Token checking now matches Dolibarr core, and any rejection is reported on screen
  • Fix: with several stores connected, the Webhooks page displayed the selected store but saved against another one — webhooks could not be disabled. Error messages on that page, previously empty, are now shown in full
  • Critical fix: on Dolibarr 18 to 22, connecting a store returned an HTTP 500 error on the way back from Shopify and the store was lost. On strict SQL mode hosting, webhooks were never registered (Shopify timestamps rejected by the database)
  • Performance: stock push to Shopify is now asynchronous — validating an invoice returns immediately, even when Shopify is slow or unreachable. A scheduled task pushes stock every 5 minutes, merging movements and retrying automatically after a failure
  • Real Dolibarr variants on import: variant products imported from Shopify now create a genuine Dolibarr variant (visible in the interface), with a label distinct from the parent product. New "Repair variants" button to retroactively link catalogues already imported, with no re-import and no duplicates
  • New "Discount repair" tool: repairs orders imported before 2.2.9 whose percentage discount was under-valued — preview before applying, drafts only, audit trail preserved
  • More robust import: full error message when a variant cannot be created, reuse of the existing product when the reference (SKU) already exists, and order lines coming from pack/bundle apps finally imported when they are billable

What's new in v2.4.2

  • Critical fix: Dolibarr stock was never pushed to Shopify (restocking, in-house production, manual corrections) — Shopify stock drifted with each sale, down to false negative values. Every Dolibarr stock movement is now synchronized to Shopify in real time (absolute value, never negative)
  • New "Realign stock to Shopify" button: pushes the Dolibarr stock of all mapped products at once — immediately repairs Shopify values skewed in the past
  • Multi-store: stock is pushed to every store where the product is mapped, using each store's own credentials
  • Observability: every stock push is traced in the action log, and the "last realignment" state (date, products, errors) is shown in the admin

What's new in v2.4.1

  • Shopify 2026 compliance: native support for expiring OAuth tokens (60-minute access token + refresh token), required by Shopify by January 1, 2027. Transparent automatic refresh; already-connected stores migrate in one click via the "Reconnect" button
  • New Shopify Collections API 2026-07: collections created with the new model (Shopify rollout from July 1, 2026) are now visible and synchronized, no more silent disappearance
  • Critical fix: more reliable product/stock sync — a disabled variant sometimes remained visible on Shopify, and diverging stock levels (sometimes negative) were no longer silently corrected; errors are now logged and surfaced
  • Instant diagnostics: per-store connection and health tests now run in the background, without slowing down the page
  • More reliable telemetry: the module now reports its real domain and Dolibarr version on every channel, eliminating false pending installations

What's new in v2.4.0

  • Multi-store: connect several Shopify stores to a single Dolibarr installation, with unified accounting. Store selector and context bar to switch between stores, full per-store configuration (settings, orders, products, shipping, tags automatically renamed after the store)
  • Per-store license: activate your DoliStore serial number directly from each secondary store's page
  • Per-store Health diagnostic: connection, webhooks, license and local data checked at a glance for each store
  • More reliable shipment synchronization: reinforced automatic catch-up, no more orphaned shipments after a temporary failure
  • Display fixes (accented characters) and About page update
  • Single-store installations remain strictly unchanged: no reconfiguration needed when updating

What's new in v2.3.1 (hotfix)

  • Fix: blank page on module activation for multi-store installations (the Categorie class was not loaded before using its constants). Activation and per-store category creation work again. Single-store installations were not affected

What's new in v2.3.0

  • Multi-store: manage several Shopify stores from a single Dolibarr installation with unified accounting. Per-store connection and configuration, isolation of products, orders and invoices via categories and tags, per-store license check. Single-store installs work exactly as before
  • Hardened Shopify connection security: the OAuth return is now signed with an asymmetric cryptographic signature (public/private key), removing any shared secret on the module side; transparent server-side rotation
  • Support tools: one-click export of the raw JSON of a Shopify order or product, and ZIP export of several orders at once, to send to support without any technical handling
  • Order view: shipping and billing addresses, plus pickup point, shown directly without opening the Contacts tab
  • Post-installation verification wizard: at-a-glance check of connection, configuration, CRON, webhooks and migrations, with corrective actions
  • Automatic order closing after delivery and payment, email alerts on critical errors, module action log
  • Enriched order data (financial summary, statuses, context); SQL compatibility with MySQL 8.x and MariaDB validated in continuous integration

What's new in v2.2.9 (hotfix)

  • Fix: percentage discounts undervalued — the discount was computed on the tax-excluded base then divided a second time by (1 + VAT) as if it were a tax-included amount. Orders with a percentage promo code now match the exact amount shown by Shopify (e.g. 5% = -151.20 EUR incl. tax, not -126 EUR)
  • Fixed-amount discounts (sent tax-included by Shopify) keep their tax conversion
  • Documentation: table of the 4 Dolibarr stock decrease rules and recommendation for mixed TakePOS counter + Shopify shops

What's new in v2.2.8 (hotfix)

  • Critical fix: stock not decremented when importing Shopify orders — the warehouse was not passed at invoice validation. All 4 Dolibarr stock decrease rules (order, invoice, shipment, shipment closing) are now covered
  • Fix: the v2.2.4 permissions migration (module ID change) now runs automatically on activation — user rights preserved when upgrading from a version older than 2.2.4
  • Webhooks fix: wrong callback URL (missing /custom/ path) when no explicit configuration was set, and the events retention days setting is now honored by the purge
  • Robustness: explicit log warnings when no warehouse can be resolved, and safeguards against fatal errors

What's new in v2.2.7 (hotfix)

  • Critical fix: documents API calls returning 404 on Dolibarr installations in a subdirectory — a leading slash was overriding the subfolder (issue #288). All documents endpoints (product and category images) now honor the installation subfolder

What's new in v2.2.6 (hotfix)

  • Critical fix: resilient product image sync — automatic SQL fallback (llx_ecm_files) when the Dolibarr REST API /documents endpoint is unreachable (Apache 404, timeout, HTML in body). No more missing images in Shopify even on restrictive hosting environments (issue #286, Philazerty / Click & Play support ticket)
  • Critical fix: multi-tenant entity filter added to the image SQL query — prevents exposing images from other Dolibarr entities in multi-company installations
  • Fix: image sort key mismatch (filename vs relativename) — sort by position now actually works
  • Enhancement: image instance cache reduces 3 redundant SQL+API calls per product to 1 during sync

What's new in v2.2.5 (hotfix)

  • Critical fix: verifToken() function not loaded on some PHP-FPM stacks (notably ISPConfig with strict open_basedir) blocking Shopify OAuth — 4 module files now explicitly include the compatibility.lib.php polyfill

What's new in v2.2.4 (patch)

  • Critical fix: Dolibarr module ID migration (436950 → 351003, official range allocated to Association P'tite Tete) — automatic SQL migration preserves existing user permissions, no manual action required

What's new in v2.2.3 (hotfix)

  • Critical fix: 3 admin pages (setup, configuration wizard, product sync) referenced a non-existent CSS file — style loading and display now correct

What's new in v2.2.2

  • Critical fix: variant stock sync now runs every hour instead of 24h
  • Critical fix: no more duplicate products created on Shopify after purging a product with variants
  • Improved anti-loop: inter-process sync/webhook protection against deadlocks
  • Enhanced diagnostic: old image path detection + server loopback test
  • Dynamic versions everywhere (no more hardcoded versions in UI)
  • Modernized setup guide page with recommended wizard
  • Fixed webhook products/delete (SQL error corrected)
  • Smart version.php fallback for partial FTP deployments
  • Fixed admin pages (maintenance, version_check) for non-standard installations

Video tutorial

Complete installation and update tutorial: https://youtu.be/NaTBQp4_aq8

5 languages

Francais, English, Deutsch, Espanol, Italiano

Information

Website: https://doli2shop.ptitetete.org Email: doli2shop@ptitetete.org Complete documentation included in the module

P'tite Tete Association - Dolibarr modules since 2021




If you think this module is a fork of another one (published after the first one) or violates some terms or conditions of use (for users or vendors), you can make a report at dolistore@dolibarr.org