Search by

emporiqa / sylius-plugin

Integrates Sylius with Emporiqa chat assistant.

Maintainers

Package info

github.com/emporiqa/sylius

Homepage

Documentation

Type:sylius-plugin

pkg:composer/emporiqa/sylius-plugin

Transparency log

Statistics

Installs: 7

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.10.1 2026-09-02 13:32 UTC

README

Packagist Version Packagist Downloads License PHP Version

Integrates Sylius with Emporiqa, an AI chat assistant that acts as an online salesperson on your storefront. The plugin provides webhook-based synchronization of products and pages, in-chat cart operations with checkout, an embeddable chat widget, order tracking, and order completion webhooks.

The chat reads your synced catalog and pages: a shopper describes what they need (or uploads a photo), and it returns matching products, answers questions from your own content, and drives cart and checkout through the plugin's APIs. It answers in 65+ languages, whichever locale the shopper writes in.

Try it yourself on the live demo store, or watch the 30-second demo (recommends, handles objections, closes).

The chat runs on your storefront, reads your catalog and answers in the shopper's own words:

Emporiqa chat widget open on a storefront, answering which laptop under 1200 euros suits a student editing video: it names the model and price, then flags the storage trade-off and offers to add it to the cart

Documentation

Everything beyond this page lives in the full developer documentation at emporiqa.com/docs/sylius/. It covers the configuration reference, webhook events and payloads, the cart and checkout API, order tracking, console commands, customization, and troubleshooting.

Features

  • Product Sync: Real-time synchronization of Sylius products and variants via webhooks
  • Page Sync: Synchronization of any translatable page entity (policies, FAQ, blog posts, etc.)
  • Multi-Channel: Consolidated events with per-channel pricing, availability, and content across all languages
  • Cart & Checkout: REST API for in-chat cart operations (add, update, remove, clear, view, checkout URL) with event hooks
  • Order Tracking: API endpoint for order lookup with HMAC signature and replay protection
  • Order Completion: Webhook notification when checkout completes (supports both Sylius 1.x and 2.x)
  • Chat Widget: Cache-safe embeddable chat widget with inline signed user tokens and currency/channel awareness
  • Visual Search: Shoppers upload a photo in the widget; the chatbot matches it against your synced Sylius catalog (no extra config required)
  • Multi-language: Syncs content in all configured Sylius locales with currency switcher support. The chat itself answers in 65+ languages, independent of which locales you sync
  • Console Commands: Memory-efficient sync commands with batching, dry-run, and session management
  • Webhook Retry: Automatic retry with exponential backoff for transient failures
  • Fully Extensible: Decorate any service interface, listen to events (PostFormatEvent, CartOperationEvent, PreSyncEvent, etc.)

Emporiqa also works with Drupal Commerce, WooCommerce, Magento, PrestaShop, Shopware, and any store via webhook API. One Emporiqa account and dashboard runs across all of them.

Requirements

  • PHP 8.1+
  • Sylius 1.12, 1.13 or 2.0
  • Symfony 6.4+ or 7.x (6.0 to 6.3 are not supported)
  • An Emporiqa account (sign up)

Installation

composer require emporiqa/sylius-plugin

Register the Plugin

Add to config/bundles.php:

return [
    // ... other bundles
    Emporiqa\SyliusPlugin\EmporiqaPlugin::class => ['all' => true],
];

Import Routes

Create config/routes/emporiqa.yaml:

emporiqa:
    resource: '@EmporiqaPlugin/config/routes.yaml'

This registers the order tracking endpoint, cart API endpoints, and user token endpoint. If you don't need some features, you can disable them individually in configuration.

Create Configuration

Create config/packages/emporiqa.yaml:

emporiqa:
    webhook_secret: '%env(EMPORIQA_WEBHOOK_SECRET)%'

All other settings have sensible defaults. See the Configuration Reference for the full list.

Environment Variables

Add to your .env file:

EMPORIQA_STORE_ID=your_store_id
EMPORIQA_WEBHOOK_URL=https://emporiqa.com/webhooks/sync/
EMPORIQA_WEBHOOK_SECRET=your_secret_key

Add the Chat Widget

In your shop layout template (e.g. templates/bundles/SyliusShopBundle/Layout/base.html.twig), add before </body>:

{# With cart support (recommended) #}
{{ emporiqa_cart_widget() }}

{# Or simple inline embed without cart #}
{{ emporiqa_widget() }}

Install Bundle Assets

bin/console assets:install

This copies the plugin's JavaScript files (emporiqa-cart.js) to public/bundles/emporiqa/js/.

Clear Cache

bin/console cache:clear

Set the Router Default URI

Console commands run without an HTTP request, so the router needs a base URI to generate absolute product links. In config/packages/framework.yaml:

framework:
    router:
        default_uri: '%env(SITE_URL)%'

And in .env:

SITE_URL=https://your-store.com

Verify the connection with bin/console emporiqa:test-connection, then run a first full sync with bin/console emporiqa:sync:all. The developer documentation has the widget variants and the rest of the reference.

The chat tells shoppers it is an AI

The default greeting says the shopper is talking to the store's AI assistant, in every language the chat speaks. A merchant who rewrites that greeting has to keep the disclosure: one that drops it is refused when saved. Emporiqa's Terms of Service section 8.6 treats removing it, including through custom CSS or custom code, as a breach.

Keeping your catalog in sync

Product, variant and page changes reach Emporiqa automatically through Sylius resource events and Doctrine listeners. Delivery is synchronous: events queue per request and flush on kernel.terminate, so no messenger:consume worker, supervisord setup, or background cron is required. Re-run bin/console emporiqa:sync:all after changes that do not re-save products (a new channel, locale or currency, a moved taxon, a changed tax rate or promotion, a renamed brand attribute, a bulk import that bypasses Doctrine events, or an extended outage on the Emporiqa side), and once a week as a safety net. The commands and their flags are documented in Console Commands.

Pricing

The plugin is free. Emporiqa is Pay-as-you-go: you pay only when the chat talks to a shopper. $0/month base + $0.25/conversation. New accounts get $25 of signup credit (about 100 conversations on us), no card required at signup. After the credit, the monthly cap defaults to $59 and is customer-adjustable from the billing dashboard. Enterprise option for catalogs over 100,000 products. Full pricing at emporiqa.com/pricing/.

Support

License

MIT License - see LICENSE file for details.

Who makes Emporiqa

Emporiqa is built by Rosel Group LTD, an EU company based in Sofia, Bulgaria, founded by Rosen Hristov, who has built e-commerce software for 15 years. It is GDPR-compliant and never uses shopper data to train AI models. This plugin is listed on Sylius Addons, which reviews every submission before it goes on the shelf, and it installs from Packagist with Composer.