Connects OpenCart 4.x and 3.0.x to the merchant’s own Klaviyo or Brevo account: customer profiles, marketing consent from an opt-in box on the checkout confirm step (guests too) and from the OpenCart newsletter flag, a consent log with time, source, text and IP (CSV export), Placed Order, Ordered Product, Fulfilled, Cancelled, Started Checkout and Viewed Product events sent once each, a queue with retries and an activity log, a history import and a Klaviyo catalog feed / Brevo product sync. Server side, no tracking script, no OCMOD. Tested against a local mock of the Klaviyo and Brevo APIs.
Tested on 4.1.0.4 & 3.0.5.1Updated Nov 3, 2026Version 1.0.0Compatible with OpenCart 4.1.0.4, 3.0.5.1 No core file edits
Built forOpenCart
Consent at checkout, guests too1 of 6
What it does
Connects OpenCart 4.x and 3.0.x to the merchant’s own Klaviyo or Brevo account: customer profiles, marketing consent from an opt-in box on the checkout confirm step (guests too) and from the OpenCart newsletter flag, a consent log with time, source, text and IP (CSV export), Placed Order, Ordered Product, Fulfilled, Cancelled, Started Checkout and Viewed Product events sent once each, a queue with retries and an activity log, a history import and a Klaviyo catalog feed / Brevo product sync. Server side, no tracking script, no OCMOD. Tested against a local mock of the Klaviyo and Brevo APIs.
Feed your email platform with clean, consented data. Klaviyo and Brevo flows only work with the right events and a list you are allowed to mail. This extension sends both from the server, without a tracking script on your pages.
Features
Consent
Unticked opt-in box above Confirm Order, for guests and customers
The OpenCart newsletter flag (registration, account page, admin) subscribes and unsubscribes
Consent log with time, source, the exact text and IP, CSV export
Events
Placed Order and Ordered Product, once per order
Fulfilled and Cancelled Order on the statuses you choose
Started Checkout for abandoned checkout flows, Viewed Product for signed-in customers
Reliable
Queue sent right after the page or by cron, never blocking the checkout
Retries on temporary errors, the reason the API gave for anything that failed
Activity page with the data of every job, retry and send now
Start fast
History import of customers, subscribers (with sign-up date) and orders
Klaviyo catalog feed and daily Brevo product sync
Your own account and key, stored encrypted; events only, no OCMOD
One license for OpenCart 4 and 3, tested on 4.1.0.4 and 3.0.5.1 against a local mock of the Klaviyo and Brevo APIs
What you get
Download & installTwo installer packages (.ocmod.zip): one for OpenCart 4.0.2 – 4.1.x and one for 3.0.3 – 3.0.5. One license key covers both. Download it from My licenses right after payment.
12 months of updates & supportNew versions and help for 12 months (24 or 36 months at checkout). After that the extension keeps working; renew anytime at 50%.
License for your storeOne production domain with all its subdomains; staging and local development hosts are free. How licensing works
30-day refundFull refund within 30 days of your first purchase, no reason needed. Refund policy
Tested buildsOpenCart 4.1.0.4, 3.0.5.1. Tested on OpenCart 4.1.0.4 and OpenCart 3.0.5.1.
Documentation & supportFull guide (Installation, Configuration, Usage, FAQ) on this page. Tickets from your account, first reply within 1 business day.
Compatibility
Klaviyo & Brevo Email Marketing Connect works with OpenCart 4.1.0.4, 3.0.5.1.
We list the builds we install and test on. “Tested” means the test plan ran on that build; “Supported” means the build is inside the supported range.
Compatibility
Version
Range
Runs on
Status
OpenCart 4.1.0.x
4.1.0.0 – 4.1.0.4
PHP 8.1 – 8.3
Tested on 4.1.0.4
OpenCart 4.0.2.x
4.0.2.0 – 4.0.2.3
PHP 8.0 – 8.2
Supported
OpenCart 3.0.x
3.0.3.8 – 3.0.5.x
PHP 7.4 – 8.1
Tested on 3.0.5.1
1.0.0
Nov 3, 2026
Latest
First release: connects OpenCart to your own Klaviyo (private API key) or Brevo (API key v3) account; customer profiles with name, phone and address; marketing consent from an opt-in box on the checkout confirm step (guests too, consent counted when the order is placed) and from the OpenCart newsletter flag (registration, account page, admin customer form); consent log with time, source, text and IP, CSV export; subscriptions and unsubscribes synced to the chosen list; Placed Order, Ordered Product, Fulfilled Order, Cancelled Order, Started Checkout and Viewed Product events, each once; queue sent right after the page or by cron, retries with back-off, activity page with the reason the API gave, data view, retry and send now; history import of customers, subscribers and orders with progress; Klaviyo catalog feed and daily Brevo product sync; API key stored encrypted; overview with setup steps, KPIs and charts.
How do I install the extension?
Upload. Extensions > Installer: upload the .ocmod.zip for your OpenCart version (4.x or 3.0.x). Both packages come with every license.
Install and enable. Extensions > Extensions > Modules: install, open the settings and switch it on. Events register themselves; nothing is patched.
Enter the license key. Paste the key from My licenses. Subdomains, staging and local hosts are included; you have 14 days to do it.
OpenCart 4.1.0.4, 3.0.5.1. Tested on OpenCart 4.1.0.4 and OpenCart 3.0.5.1. The Compatibility tab lists every version range.
Do the extensions change core files?
No. They work through OpenCart events and standard extension types (modules, order totals, themes). No core file edits, no OCMOD patches, no theme template edits, so OpenCart updates and other extensions keep working.
Do I get packages for OpenCart 4 and OpenCart 3?
Yes. Every download has a package for OpenCart 4.0.2 to 4.1.x and one for OpenCart 3.0.3 to 3.0.5, and the license key works with both. Moving from OpenCart 3 to 4 later costs nothing.
What does the license cover?
One production store domain with every subdomain (www, shop., staging.), plus local development hosts such as localhost, *.local and *.test. A store on another domain needs its own license; a second-store license is 40% off. You have 14 days after installing to enter the key. 12 months of updates and support are included; after that the extension keeps working and renewals are 50% off. How licensing works
Can I get a refund?
Yes. Ask for a full refund within 30 days of your first purchase, no reason needed: open a ticket or write to [email protected] with your order number. The money goes back to the card or bank account you paid with within 5 business days of approval. Refund policy
How do I get help?
Open a ticket from your account, so your license details are attached. We answer Monday to Friday: bug reports within 1 business day, how-to questions within 2. Support policy. Not a customer yet? Ask a pre-sales question.
Email Marketing Connect feeds your own Klaviyo or Brevo account with clean, consented data from OpenCart: customer profiles, marketing consent and the order and checkout events your flows need. Everything is sent from the server, so no tracking script is added to your pages.
Consent you can prove. An unticked opt-in box on the checkout confirm step (guests too) and the OpenCart newsletter flag (registration, account page, admin customer form). Every change goes to a consent log with time, source, the exact text and the IP address, with CSV export.
Lists stay in step. Opt-ins are added to the list you choose, opt-outs are removed again.
Events for your flows. Placed Order, Ordered Product (Klaviyo), Fulfilled Order, Cancelled Order, Started Checkout for abandoned checkout flows and Viewed Product for signed-in customers, each sent once.
Never blocks the checkout. Every change is a job in a queue, sent right after the page or by cron, retried on temporary errors. The activity page shows waiting, sent and failed jobs with the reason the API gave.
Start with your history. The import sends past customers, newsletter subscribers (with their sign-up date) and orders, so segments work from day one.
Product catalog. A JSON feed for a Klaviyo custom catalog source, and a daily product sync to Brevo.
No OCMOD, no core file edits. One licence covers OpenCart 4 and 3. Tested on OpenCart 4.1.0.4 and 3.0.5.1 against a local server that answers like the Klaviyo and Brevo APIs; a test with your live account is up to you. Other 4.0.2.x to 4.1.x and 3.0.3.8 to 3.0.5.x versions are expected to work but are not tested. You need your own Klaviyo or Brevo account; their plans and limits apply.
Installation
Requirements
OpenCart 4.0.2.0 to 4.1.x, or 3.0.3.8 to 3.0.5.x
PHP 7.4 or newer with cURL and OpenSSL
A Klaviyo account (private API key) or a Brevo account (API key v3)
Install on OpenCart 4
Go to Extensions > Installer and upload kv_email_connect.ocmod.zip.
Press the install button next to Klaviyo & Brevo Email Marketing Connect.
Go to Extensions > Extensions, choose Modules and install Klaviyo & Brevo Email Marketing Connect. A cron job "Email Marketing Connect" is added under System > Maintenance > Cron Jobs.
Install on OpenCart 3
Go to Extensions > Installer and upload kv_email_connect-oc3.ocmod.zip.
Go to Extensions > Modifications and press Refresh.
Go to Extensions > Extensions, choose Modules and install Klaviyo & Brevo Email Marketing Connect.
First steps
Open Marketing > Email Marketing Connect > Settings, choose Klaviyo or Brevo and paste the API key. Save.
Press Load lists, choose the subscriber list and save again. Press Test connection: the account name appears.
Check the opt-in text, then place a test order: the box sits above the Confirm Order button.
Open Import & catalog and start the history import if you want your existing customers and orders in the service.
Call the cron address from the Import & catalog page every 5 minutes, so retries and imports continue. On OpenCart 4 the built-in cron job does the same when the OpenCart cron is set up.
Updating
Upload the new package the same way. The queue, the consent log and the settings stay; tables and settings are brought up to date the next time you open the extension.
Removing
Uninstalling removes the queue, the consent log, pending opt-ins, the settings (API key included), the events and the cron job. Export the consent log as CSV first if you need it for your records. Your data in Klaviyo or Brevo is not touched.
Configuration
Connect Klaviyo
In Klaviyo open Settings > Account > API keys > Create private API key, with these scopes: Accounts read, Events write, Lists read and write, Profiles write, Subscriptions write.
Choose Email service: Klaviyo, paste the key (pk_...) and save. The key is stored encrypted and never shown again.
Load lists, choose the list for subscribers, save, then Test connection.
If the Klaviyo list uses double opt-in, Klaviyo sends its confirmation e-mail to new subscribers.
Connect Brevo
In Brevo open SMTP & API > API keys > Generate a new API key.
Choose Email service: Brevo, paste the key (xkeysib-...), save, load the lists, choose one, save and test.
Only the default Brevo attributes are used: FIRSTNAME, LASTNAME and SMS (phone in international format). When the phone already belongs to another Brevo contact, the contact is saved without it.
Consent
Setting
Default
Meaning
Opt-in box at checkout
on
On the confirm step, above Confirm Order, for guests and customers who are not subscribed. The consent counts when the order is placed
Opt-in text
Email me news and special offers...
Stored with every consent
Pre-tick the box
off
Keep it off where the law asks for an active opt-in (GDPR)
OpenCart newsletter flag is consent
on
Registration, the account newsletter page and the admin customer form subscribe and unsubscribe
Send every customer as a profile
on
Off: only customers who opted in are sent as profiles
A customer who ticks the box also gets the OpenCart newsletter flag, so both stay in step.
Events
Event (Klaviyo / Brevo)
When
Placed Order / order_placed
Once per order, when it first reaches a status of the processing or complete status list (System > Settings > Option)
Ordered Product (Klaviyo only)
With Placed Order, one per order line
Fulfilled Order / order_fulfilled
Once, on the statuses you choose (default Complete)
Cancelled Order / order_cancelled
Once, on the statuses you choose (default Canceled)
Started Checkout / checkout_started
When the checkout knows the e-mail (signed-in customers on the checkout page, everyone on the confirm step); once per cart and day
Viewed Product / product_viewed
Signed-in customers, once per product and day
Amounts are in the default currency of the store. Order events carry the lines (name, SKU or model, quantity, price, link, image, categories), totals, coupon, shipping and payment method and the addresses.
Sending
Send right after the page (on): jobs go out when the page has been sent to the browser. Off: only the cron job sends.
Temporary errors (no connection, 408, 429, 5xx) are retried after 5 minutes, 30 minutes, 2 hours, 6 hours and 1 day. Other errors fail at once with the reason the API gave.
Sent jobs are kept 30 days, failed jobs 90 days.
Catalog
Klaviyo: copy the feed address from Import & catalog and add it in Klaviyo under Content > Products > Add custom catalog source (JSON). Enabled products with the Klaviyo field names, cached for an hour.
Brevo: tick Sync products to Brevo daily; the cron job sends enabled products once a day (E-commerce must be activated in Brevo).
Products in the catalog limits both (default 5000).
Usage
Overview
Setup steps, the number of subscribed e-mails, events sent in the last 30 days, orders synced, started checkouts, waiting and failed jobs, a chart of what was sent in the last 14 days, events by type and the latest activity.
Activity
Every job: profile, subscribe, unsubscribe, event or product batch, with the e-mail, the order, the state and the number of tries. Filter by state and type, search by e-mail, order or job number. Data shows exactly what is sent. Retry puts one job back in the queue, Retry all failed all of them, Send now sends the queue at once.
Consent log
Every change of marketing consent: time (UTC), e-mail, subscribed or unsubscribed, source (checkout box with the order number, registration, account page, admin, import), the text the customer saw and the IP address. Filter and export as CSV; cells that a spreadsheet would run as a formula are written as text.
Import & catalog
History import: customer accounts as profiles, newsletter subscribers as consents (source "import", with the sign-up date of the account, sent to Klaviyo as a historical import), and orders of the last days as Placed / Fulfilled Order events with their order date. The page shows the progress; the cron job continues if you close it. Each record is sent once, a second run skips it.
Catalog: the Klaviyo feed address and the state of the Brevo product sync.
Background job: the cron address and when it last ran.
FAQ
Do I need a Klaviyo or Brevo account?
Yes, your own. The extension uses your API key; their plans and limits apply.
Does it add a tracking script to my store?
No. Everything is sent from the server.
Does it send e-mails?
No. It sends data to Klaviyo or Brevo; your flows and campaigns there send the e-mails.
Can guests subscribe?
Yes, with the opt-in box on the checkout confirm step. The consent counts once the order is placed.
What if a customer unsubscribes in OpenCart?
Unticking the newsletter on the account page or in the admin customer form records an opt-out and removes the e-mail from your list.
Does an unsubscribe in Klaviyo or Brevo come back to OpenCart?
No. The sync goes from OpenCart to the service. The service keeps its own unsubscribe state and never e-mails people who unsubscribed there.
What happens when the service is down?
Jobs wait and are retried up to five times over a day. Nothing is lost and the checkout is never slowed down.
Was it tested with live accounts?
It was tested end to end against a local server that answers like the Klaviyo and Brevo APIs. A test with your own account is up to you: use Test connection and a test order.
Does it use OCMOD?
No. Events only, no core file edits.
What does the licence check do?
Without a valid licence (after the 14-day trial) nothing new is collected or sent; the admin pages keep working.
Server-side tracking for OpenCart 4.x and 3.0.x: purchases, refunds, add to cart, checkout, product views and leads go from your server to the free official GA4 Measurement Protocol, Meta Conversions API and TikTok Events API, deduplicated with the browser pixels through shared event ids. Consent-aware, SHA-256 hashed customer data, order status mapping, queue with retries, test mode and an event log. No paid relay, events only, no OCMOD.
The department store theme for OpenCart 4.x and 3.0.x: colour-coded departments, a department list beside the hero slider with two side promos, a big search with a department selector, tabbed product blocks, a 2 + 1 + 2 offer grid, deals of the day with real countdowns, a department showcase, a promotions band and a three-column product page with a sticky buy box. Four styles (Meridian, Harbor, Citrus, Night) and your own colours on top. Events only, no core changes.
Stop AI crawlers, scrapers, vulnerability scanners and unwanted countries before OpenCart 4.x or 3.0.x builds a page. Googlebot and Bingbot are verified by DNS and always allowed; 50+ bots get one switch each; country rules use free GeoIP databases and can close only the checkout; IP and network lists, rate limits, honeypots and the cart flood fix; a one-second challenge instead of a captcha; learning mode, dashboard, log, IP tester and Cloudflare export. No core changes, no OCMOD.