SW 6.7
- fixed the "Newsletter Sync Task" blocking the whole message queue
-> the task no longer sends one API request per newsletter recipient
-> a connection error or timeout is no longer just logged and followed by the next recipient
-> a rejected API key (HTTP 401/403) aborts the affected sales channel immediately instead of repeating the same failing request for every recipient; the remaining sales channels are still synced
-> rate limits now honor Klaviyo's "Retry-After" response header instead of always waiting a fixed 60 seconds
- fixed the task staying in status "failed" after an unexpected error
- the Klaviyo lists are now read with the maximum page size of 100 instead of 20
- newsletter recipients are processed in pages of 500 instead of being loaded into memory all at once, and status changes are written per page, so an interrupted run keeps the work it already did
- fixed the recipient comparison running once per sales channel domain, although it never filtered by domain
-> the comparison is skipped entirely (and retried on the next run) if any list could not be read completely
-> the comparison is also skipped if a Klaviyo list turns out to be empty
- fixed pagination of the Klaviyo lists silently stopping early
-> an empty result page no longer causes the same page to be requested over and over
-> a rate limit on the first page no longer ended the pagination instead of retrying it
-> the fallback for non-encoded "page[cursor]" parameters never matched and is fixed
SW 6.7
- line items are no longer filtered by a list of known types, but by whether they reference a real product
-> Shopware only fills order_line_item.product_id for items of type "product", so discounts, vouchers, bundle parts, configurator positions and unknown types from third party plugins are skipped automatically
-> fixes the errors that occurred when a plugin used a line item type that was missing from the exclude list and therefore did not provide the expected product data
- the plugin option "Exclude order item Types" is now optional and empty by default; existing configurations keep working and may be cleared
-> the configured types are trimmed now, so entries like "custom; promotion" are matched correctly
- product data of an event item is read defensively (missing payload, price or sales channel domain no longer abort the event)
SW 6.7
- new plugin option to send cross-selling groups of ordered products with the events "placed order" and "fulfilled order"
-> every item gets the property "CrossSellings" containing the group name and its products (id, sku, name, net/gross price, currency, url, image)
-> products of the order and variants of them are excluded from the suggestions (via Pluginoption)
-> number of products per group is limited to keep the event below the Klaviyo property limit
- added "ProductID" to the items of the "Placed Order" event, so all order events use the same key ("ProductId" is kept for compatibility)
SW 6.7
- fixed back in stock form not being rendered at all when the standalone CMS buy box element is used (e.g. on landing pages)
- fixed duplicate element ids when multiple back in stock forms are rendered on one page (form, basic captcha and privacy checkbox are now product specific)
SW 6.7
- added currency conversion to events
SW 6.6
- added currency conversion to events
SW 6.7
- fixed hidden input fields being rendered after
SW 6.7
- new plugin options for promotion task
- added access to promotion and historical order buttons in admin panel
SW 6.7
- keep DB alive during newsletter sync to prevent "MySQL server has gone away" errors
- product catalog sync via the Klaviyo Catalogs API, as an alternative/addition to the existing XML product export
-> new plugin config card "Produktkatalog Sync": enable/disable, sync scope (main products only / main products + variants), automatic sync interval (dropdown, 15 min – daily), option to remove deactivated/deleted products from the Klaviyo catalog
-> new button in the plugin config for an immediate manual sync (global or per selected sales channel)
-> new scheduled task "shopsy.klaviyo_catalog_sync_task" reconciles the catalog automatically in the background at the configured interval
-> local sync-state tracking (per sales channel) avoids unnecessary Klaviyo API calls for unchanged products and reliably detects create/update/delete
SW 6.7
- resolved all Shopware static code analysis findings
- new "Klaviyo List Mapping" admin module (Marketing menu): manually assign newsletter subscribers to specific Klaviyo lists per sales channel and/or language, instead of using the automatically generated "Shopware_Newsletter_" lists
SW 6.7
- the task "shopsy.klaviyo_update_promotions" now streams individual codes from the database in batches (RepositoryIterator) instead of eager-loading all codes at once, keeping memory usage constant regardless of promotion size
SW 6.7
- new config options to enable/disable individual events: "viewed product", "added to cart", "started checkout", "checkout completed", "recently viewed items"
- added "RecentlyViewedItems" profile property (max. 10, FIFO) — synced via session in serverside mode and via localStorage in javascript mode; works for guests and logged-in customers
- API key verification now works per sales channel: tests the key for the currently selected scope (global or sales channel) and falls back to the inherited global key if empty
- API key verification is now read-only (uses Klaviyo "Accounts" endpoint) — no test event or test profile is created in your Klaviyo account anymore
- new "Klaviyo Custom Field Mapping" admin module (Marketing menu): map any Shopware custom field (Customer, Order, Product) to a Klaviyo profile or event property without code
- per mapping: source entity, custom field (dropdown of available fields with manual-entry override), target Klaviyo property, sales-channel scope (global or specific), active flag, position
- customer mappings are merged into the Klaviyo profile properties of every event
- order mappings into the order events ("placed order", "checkout completed", "fulfilled order", "cancelled order", "refunded order", "purchased items", "ordered product");
- product mappings into product events ("viewed product", "ordered product", "placed review")
SW 6.7
- removed files from vendor directory, that are already provided by Shopware
The plugin bundles the Klaviyo SDK, eliminating the need for a manual Composer installation. Consequently, the Shopware notification regarding two autoloaders is expected and has no impact on operations.
SW 6.7
- "birthday" bugfix
SW 6.7
- back-in-stock confirmation link is now valid across devices (token stored in DB instead of session)
- added new table 'shopsy_klaviyo_back_in_stock_token' and scheduled task to clean up expired tokens
SW 6.7
- bugfix: manufacturer "null" error
- NewsletterSyncTask: added fallback to sales channel's name if no translation found
- KlaviyoHistoricalOrdersSyncTaskHandler: fixed bug that the first transaction state was checked only
- KlaviyoEventService: set time of fulfilled order to the time of the first delivery state
SW 6.6
- NewsletterSyncTask: added fallback to sales channel's name if no translation found
- KlaviyoHistoricalOrdersSyncTaskHandler: fixed bug that the first transaction state was checked only
- KlaviyoEventService: set time of fulfilled order to the time of the first delivery state
SW 6.7
- bugfix: ProductURL in several events
SW 6.7
- bugfix: salesChannelBaseUrl
- new property at customer: customerLanguage
SW 6.7
- bugfixes in NewsletterSyncTask
SW 6.6
- bugfixes in NewsletterSyncTask
SW 6.7
- NewsletterSyncTask: pagination and subscription status sync
- hidden input optimization
SW 6.6
- NewsletterSyncTask: pagination and subscription status sync
SW 6.7
- replaced rand() with Uuid::randomHex() for unique_id generation
- added javascript deduplication for "viewed product" and "checkout completed" events
- added configurable timeout settings for Klaviyo API
- optimized newsletter sync by removing unnecessary duplicate check
SW 6.7
- bugfix: persistent cart
- bugfix: wrong language in "placed review" event
- added language property to "fulfilled order", "cancelled order", "refunded order"
SW 6.6
- bugfix: persistent cart
- bugfix: wrong language in "placed review" event
- added language property to "fulfilled order", "cancelled order", "refunded order"
SW 6.7
- bugfix: wrong association for cover media
SW 6.6
- bugfix: wrong association for cover media
SW 6.6
- bugfix: fetch all coupon codes from a coupon from Klaviyo
SW 6.6
- bugfix: fetch all coupon codes from a coupon from Klaviyo
SW 6.7
- added more exclude types to config
- bugfix: trimmed DOM properties
- bugfix: don't load klaviyo.js multiple times
SW 6.6
- added more exclude types to config
- bugfix: trimmed DOM properties
- bugfix: additional check for product in getMedia function
- bugfix: don't load klaviyo.js multiple times
SW 6.7
- bugfix: umlaut in category names
- code improvements and refactoring
- updated Klaviyo PHP wrapper
SW 6.6
- bugfix: umlaut in category names
SW 6.6
- HOTFIX: missed an import
SW 6.7
- added brand to "added to cart" and "placed order" event
- changed "createEvent" to "createEventAsync" for "placed order" and "ordered product"
SW 6.6
- added brand to "added to cart" and "placed order" event
- changed "createEvent" to "createEventAsync" for "placed order" and "ordered product"
SW 6.7
- added additional price selector
- bugfix missing requestStack
- set timeout for reaching Klaviyo API
- removed sleep, using waitTime instead
SW 6.6
- added additional price selector
- bugfix missing requestStack
- set timeout for reaching Klaviyo API
SW 6.7
- updated klaviyo.js url
- changed format of birthdate
- set category to null if not available
- fixed "started checkout" event
- added price gross to "added to cart" event
- fixed missing properties in event "added to cart"
SW 6.6
- updated klaviyo.js url
- changed format of birthdate
- set category to null if not available
- fixed "started checkout" event
- added price gross to "added to cart" event
- fixed missing properties in event "added to cart"
SW 6.7
- changed buttons in orderlisting to dropdown
- fixed cookie check
SW 6.6
- changed buttons in orderlisting to dropdown
- fixed cookie check
- updated to newer Klaviyo API
SW 6.7
- added new plugin option to set prefix for image url
- bugfix "added to cart" javascript
SW 6.6
- added new plugin option to set prefix for image url
- bugfix shopurl
- bugfix "added to cart" javascript
SW 6.7
- added additional check for lineItems
- cookies bugfix
- added property "ProductId" to event "placed order"
SW 6.6
- added additional check for lineItems
- cookies bugfix
- added property "ProductId" to event "placed order"
SW 6.7
- added task for historical data transfer (via order-listing button or via console (recommended)): php console scheduled-task:run-single shopsy.klaviyo.historical_orders_sync)
- added new plugin option to set states when "fulfilled order" and "purchased items" events are sent for historical orders
SW 6.6
- added task for historical data transfer (via order-listing button or via console (recommended)): php console scheduled-task:run-single shopsy.klaviyo.historical_orders_sync)
- added new plugin option to set states when "fulfilled order" and "purchased items" events are sent for historical orders
SW 6.7
- shippingCost bugfix
- added "unique_id" to several events
SW 6.6
- shippingCost bugfix
- added "unique_id" to several events
- added "productId" to "started checkout"
- "back-in-stock" email bugfix
- newsletterlist sync optimized
SW 6.7
- SW 6.7 compatible
- update to latest Klaviyo API
- added productID to "started checkout" event
- fixed back-in-stock email template
SW 6.6
- removed "required" from api key fields
- changed "added to cart" javascript to be able to also have input field for quantity
SW 6.6
- added new event "placed review" when customer submit a product review (compatible with Product Reviews for Guest Customers bei pluszwei)
SW 6.5
- added new event "placed review" when customer submit a product review (compatible with Product Reviews for Guest Customers bei pluszwei)
SW 6.5
- add additional coupons to a coupon that is already existent in Klaviyo
SW 6.5
- add additional coupons to a coupon that is already existent in Klaviyo
SW 6.6
- checkoutUrl now also can handle custom product (Shopware plugin) positions
SW 6.5
- checkoutUrl now also can handle custom product (Shopware plugin) positions
SW 6.6
- fixed property "productUrl" when ServerSide method is used
SW 6.6
- javascript bugfix
--> javascript events were triggered even when ServerSide method is used
SW 6.5
- javascript bugfix
SW 6.5
- added additional button to promotion detail, to be able to only transfer that promotion to Klaviyo
SW 6.5
- added additional button to promotion detail, to be able to only transfer that promotion to Klaviyo
SW 6.6
- Shopware quality guideline changes
- new plugin option to add CAPTCHA to back-in-stock form
- double opt-in option for back-in-stock form
- added some third-party consent-manager (MndCookie, EightworksCookieConsentPlus6, ComanConsentManager, AcrisCookieConsentCS, wnmgmTrustedShop) to handle Klaviyo consent
SW 6.5
- Shopware quality guideline changes
- new plugin option to add CAPTCHA to back-in-stock form
- double opt-in option for back-in-stock form
- added some third-party consent-manager (MndCookie, EightworksCookieConsentPlus6, ComanConsentManager, AcrisCookieConsentCS, wnmgmTrustedShop) to handle Klaviyo consent
SW 6.5
- more than 1000 coupon-codes are supported
- newsletter bugfixes
SW 6.5
- more than 1000 coupon-codes are supported
- newsletter bugfixes
SW 6.6
- coupons bugfix
- added button to plugin config to open manual in new browser tab
SW 6.5
- coupons bugfix
- added button to plugin config to open manual in new browser tab
SW 6.6
- set checkoutUrl without extra plugin
-> additionally added console command to clean up old persistent carts: shopsy-klaviyo-persistent-cart:cleanup -help
- added scheduled task to update coupons state in Klaviyo:
shopsy.klaviyo_update_promotions
- new plugin setting to choose if order number or product ID should be used to match products in the Klaviyo catalog for "back in stock"
SW 6.5
- set checkoutUrl without extra plugin
-> additionally added console command to clean up old persistent carts: shopsy-klaviyo-persistent-cart:cleanup -help
- added scheduled task to update coupons state in Klaviyo:
shopsy.klaviyo_update_promotions
- new plugin setting to choose if order number or product ID should be used to match products in the Klaviyo catalog for "back in stock"
SW 6.6
- added property "salutation" to "placed order" event
- fixed wrong position of value property in "fulfilled order" event
SW 6.5
- added property "salutation" to "placed order" event
SW 6.6
- status of promotions can be updated through administration in promotions listing
SW 6.5
- status of promotions can be updated through administration in promotions listing
SW 6.6
- new property "customerNumber" in customer profile
- bugfixes
SW 6.5
- new property "customerNumber" in customer profile
- bugfixes
SW 6.6
bugfix: subscribeBackInStock route
SW 6.5
bugfix: subscribeBackInStock route
- Shopware 6.6 ready
- added feature to send promotion codes directly to Klaviyo
- updated deprecated back-in-stock function
- updated Klaviyo PHP-Wrapper
- skip setting property taxRate if no tax rate object is present (placed order event)
- bugfix: accidentally removed "cookieRequired" from template in last update
- updated Klaviyo PHP-Wrapper
- bugfix: SalesChannel has base-url property set
- bugfix: added extra block for hidden input fields
- bugfix: added check for manufacturer
- fix when using FroshShareBasket Plugin
- fix for javascript "add to cart" event when shop is in a subdirectory
- added new property to customer: customerTags
- compatible with SwkwebProductSetConfigurator
- updated Klaviyo SDK to 5.0.0
- added property "ItemNames"
- added scheduled task for syncing newsletter subscriber from Klaviyo to Shopware Database
- added scheduled task for syncing newsletter subscriber from Klaviyo to Shopware Database
- removed quotation marks from categories in "placed order" and "fulfilled order" events
- optimized getting Klaviyo lists (which is limited to ten items per request :( )
- load klaviyo.js when cookie is required and got accepted
- If a customer comes via an e-mail link of a Klaviyo campaign, it will now also being tracked when using the Javascript method
- when using the Javascript method: If Klaviyo forms are displayed in the shop and filled out by the customer with their e-mail address, then from this point on the customers are also tracked with all possible events (as if the customer is already registered in the shop)
- events "placed order" and "fullfilled order" now have own property categories on top level
- Shopware 6.5 compatible
- select all assigned categories of a product
- fixed typo
- added property "SalesChannel" and "Language" to event "purchased items"
- bugfix for property productUrl for statechanged events
- changed property name "$birthday" to "Birthday"