OpenCart 3.0.3+ Brevo integráció Alap API kulcs – nincs MA kulcs szükség

Brevo – Elhagyott Kosár Modul

Automatikus elhagyott kosár emlékeztető rendszer OpenCart 3.x webshopokhoz, Brevo (korábbi nevén Sendinblue) email marketing platformmal integrálva. Nincs Marketing Automation kulcsra szükség – csak az alap API kulcs elég.

Mit csinál?

A modul az elhagyott kosár folyamat teljes életciklusát kezeli: felismeri az elhagyott rendeléseket, triggereli a Brevo Automationt, és leállítja az emlékeztetőket, ha a vevő végül vásárol.

  • Elhagyott kosár detektálás – Automatikusan felismeri azokat a vevőket, akik elkezdték a checkoutot, de nem fejezték be a vásárlást.
  • Kosár visszatöltő link – SHA-256 tokenes, biztonságos recovery link, amely egy kattintással visszatölti a vevő kosarát.
  • Brevo Automation trigger – Lista alapú automation: a modul a megfelelő listára helyezi a kontaktot, a Brevo Automation innen veszi át az email sorozatot.
  • Duplikáció szűrés – Nem küld emlékeztetőt, ha a vevő az elmúlt X napban már vásárolt hasonló terméket.
  • Hírlevél szinkronizálás – Az összes rendelést leadó vevő email címe automatikusan szinkronizálható egy Brevo hírlevél listára.
  • Multi-store & multi-currency – A rendelésből veszi a store URL-t és a valutát; több webshop és pénznem is támogatott.

Hogyan működik?

A rendszer három cron script és egy recovery link kezelő segítségével valósítja meg az elhagyott kosár funkciót:

1

Rendelés létrejön

Vevő checkoutot kezd → oc_order rekord jön létre order_status_id = 0 állapotban (fizetés előtt).

2

Elhagyott kosár detektálás

brevo_abandoned.php cron fut óránként. Feltétele: status=0, van email-cím, legalább 1 órája várakozik, és még nem küldtünk triggert ehhez a rendeléshez.

3

Brevo API hívás

A cron frissíti a kontakt adatait (CART_RECOVERY_URL, CART_TOTAL, CART_ITEMS_HTML attribútumok) majd hozzáadja az Elhagyott Kosár listához.

4

Brevo Automation elindul

A listára kerülés triggereli az automationt → email sorozat indul (pl. 1h, 24h, 3 nap időközönként).

5

Befejezés vagy lejárat

Ha a vevő vásárol: brevo_completed.php eltávolítja a listáról → az automation azonnal leáll. Ha nem vásárol: az automation utolsó lépése veszi le a listáról → az automation lezárul, és egy jövőbeli elhagyott kosárnál újra tud triggerelni.

Adatbázis táblák

A telepítés során két tábla jön létre automatikusan (CREATE TABLE IF NOT EXISTS):

TáblaMezőTípusLeírás
oc_brevo_sent order_id INT(11) PK OpenCart rendelés ID
sent_at DATETIME Mikor lett elküldve a trigger
purchase_notified TINYINT(1) 0 = függőben, 1 = vásárolt / lejárt
oc_brevo_contacts email VARCHAR(255) PK Vevő email címe
synced_at DATETIME Mikor lett szinkronizálva

Cron scriptek áttekintése

ScriptAjánlott időzítésFeladata
brevo_abandoned.php Óránként Elhagyott kosarasok Brevo listára helyezése, recovery link generálás
brevo_completed.php 30 percenként Vásárolt vevők eltávolítása a listáról, automation leállítása
brevo_sync_contacts.php Naponta (02:00) Összes vevő email szinkronizálása hírlevél listára

Követelmények

KomponensVerzióStátusz
OpenCart 3.0.3.x+ Tesztelt
PHP 7.2 / 7.4 / 8.0 Kompatibilis
MySQL / MariaDB InnoDB engine Szükséges
Brevo fiók Alap API kulcs Nem MA kulcs!
Cron hozzáférés SSH vagy cPanel crontab Szükséges
FTP / SFTP Fájl feltöltéshez
Marketing Automation kulcs nem szükséges. A modul kizárólag a Brevo alap REST API-ját használja (kontakt kezelés, listákhoz adás/eltávolítás). Az email sorozatot a Brevo Automation kezeli lista-trigger alapon.

1. Előkészítés Brevóban

A. Két lista létrehozása

Brevo → Contacts → Lists → New list

Lista neveMire való
Elhagyott Kosár Automation trigger – ide kerülnek az elhagyott kosarasok
Vevők (vagy tetszőleges) Hírlevél lista – ide kerülnek az összes vevő emailjei (szinkronizáláshoz)
Jegyezd fel mindkét lista ID számát – a lista neve melletti szám a Brevo felületén. Ezekre a 4. lépésben lesz szükség.

B. Contact attribútumok létrehozása

Brevo → Contacts → Contact attributes → New attribute

Hozd létre az alábbi 3 attribútumot, mind TEXT típusú:

Attribútum neveTípusLeírás
CART_RECOVERY_URLTEXTKosár visszatöltés link
CART_TOTALTEXTKosár végösszege (pl. „45 900 HUF")
CART_ITEMS_HTMLTEXTTermékek HTML táblázatként
Megjegyzés: A FIRSTNAME és LASTNAME attribútumok általában már léteznek. Ha nem, azokat is hozd létre TEXT típusként.

2. Fájlok feltöltése

Töltsd fel az összes fájlt FTP/SFTP-vel a webshop gyökérkönyvtárába. A ZIP struktúrája megfelel a szerver struktúrájának (1:1 másolás).

admin/
  └── controller/extension/module/
        brevo.phpAdmin controller – routing, mentés, install/uninstall
  └── model/extension/module/
        brevo.phpDB tábla létrehozás / törlés
  └── view/template/extension/module/
        brevo.twigAdmin beállítások oldal sablonja
  └── language/hu-hu/extension/module/
        brevo.phpMagyar nyelvfájl
  └── language/en-gb/extension/module/
        brevo.phpAngol nyelvfájl
catalog/
  └── controller/extension/module/
        brevo_recover.phpRecovery link kezelő – kosár visszatöltés
system/
  └── cron/Ezt a mappát létre kell hozni!
        brevo_abandoned.phpElhagyott kosarasok feldolgozása
        brevo_completed.phpVásárolt vevők eltávolítása a listáról
        brevo_sync_contacts.phpVevők szinkronizálása hírlevél listára
        .htaccessWeb hozzáférés tiltása a cron mappától
Figyelem: A system/cron/ mappa valószínűleg nem létezik az alaprendszerben – hozd létre FTP-n keresztül.

3. Telepítés az OpenCart adminban

1

Bejelentkezés

Lépj be az OpenCart admin felületre.

2

Navigáció

Extensions → Extensions → Modules

3

Modul keresése

Keresd meg: Brevo – Elhagyott Kosár a listában.

4

Install gomb

Kattints az Install gombra (zöld + ikon). Ez automatikusan létrehozza az oc_brevo_sent és oc_brevo_contacts táblákat az adatbázisban.

5

Beállítások megnyitása

Kattints az Edit gombra (ceruza ikon) a beállítások megadásához.

Megjegyzés: Az Install gomb megnyomása után az adatbázis táblák automatikusan, CREATE TABLE IF NOT EXISTS utasítással jönnek létre – nem kell manuálisan futtatni SQL-t.

4. Beállítások megadása az adminban

Általános beállítások

MezőLeírásAlapértelmezett
Státusz Modul engedélyezése/letiltása Letiltva
Brevo API kulcs * Brevo → Settings → API Keys → Generate a new API key
Recovery titkos kulcs * Random string a recovery linkek aláírásához (lásd lent)
Elhagyott kosár időkorlát (óra) Hány óra után számít elhagyottnak a kosár 1
Elhagyott kosár lejárat (nap) Hány napig próbálja feldolgozni; ennél régebbi ordereket figyelmen kívül hagyja 30
Elhagyott kosár Lista ID * Az 1. lépésben létrehozott „Elhagyott Kosár" Brevo lista ID-ja
Termék HTML sablon HTML sablon a termékek megjelenítéséhez az emailben (részletek a 6. lépésben) Beépített sablon

Duplikáció szűrés

MezőLeírásAlapértelmezett
Duplikáció szűrés Ha be van kapcsolva, nem küld emailt ha a vevő az utóbbi X napban már vásárolt hasonló terméket Engedélyezve
Ellenőrzési időablak (nap) Hány napig visszamenőleg ellenőrizze a korábbi vásárlásokat 7
Minimum termék egyezés Minimum hány terméknek kell egyeznie. 1 = elég ha 1 termék megegyezik 1

Vevők szinkronizálása

MezőLeírásAlapértelmezett
Szinkronizálás Vevők szinkronizálása hírlevél listára (be/ki) Letiltva
Brevo Lista ID A hírlevél lista ID-ja (pl. a „Vevők" lista)
Kizáró lista ID-k Vesszővel elválasztott lista ID-k (pl. 42, 58, 103). Ha a vevő már ezen a listán szerepel, nem kerül szinkronizálásra. Üresen hagyva: mindenki szinkronizálódik.

Recovery titkos kulcs generálása

PHP – Terminálban futtatandó
php -r "echo bin2hex(random_bytes(16));"

Az eredményt illeszd be a mezőbe. Titkosan kezeld – ha megváltoztatod, az összes korábban kiküldött recovery link érvénytelenné válik.

5. Brevo Automation létrehozása

Brevo → Automations → Create an automation → Create from scratch

Trigger (Triggers fül)

Húzd a canvasra: Contact added to list → válaszd ki az Elhagyott Kosár listát.

Lépések (Actions fül)

Automation flow
Contact added to list: Elhagyott Kosár
  ↓
Send email  ← 1. emlékeztető levél (azonnali)
  ↓
Time delay: 23 óra
  ↓
Send email  ← 2. emlékeztető
  ↓
Time delay: 2 nap
  ↓
Send email  ← 3. emlékeztető (esetleg kuponnal)
  ↓
Remove from list: Elhagyott Kosár  ← lista tisztítás

Exit condition (Rules fül)

Contact removed from listElhagyott Kosár lista

Hogyan áll le az automation? Ha a vevő vásárol, a brevo_completed.php cron eltávolítja a listáról → az automation azonnal leáll. Ha nem vásárol, az automation utolsó lépése veszi le → a lista tiszta marad, és egy jövőbeli elhagyott kosárnál az automation újra tud triggerelni.

6. Email sablon változók

Az email sablonban az alábbi Brevo contact attribútumok érhetők el:

VáltozóTartalom
{{ contact.FIRSTNAME }}Vevő keresztneve
{{ contact.CART_TOTAL }}Kosár végösszege (pl. „45 900 HUF")
{{ contact.CART_RECOVERY_URL }}Visszatérés link – a kosarat visszatölti
{{ contact.CART_ITEMS_HTML }}Termékek kész HTML sorokban

Visszatérés gomb sablonban

HTML – Brevo email sablon
<a href="{{ contact.CART_RECOVERY_URL }}"
   style="display:inline-block; background:#e74c3c; color:#fff;
          padding:12px 28px; text-decoration:none; border-radius:4px;
          font-size:15px;">
  Folytatom a vásárlást →
</a>

Termékek táblázat sablonban

HTML – Brevo email sablon
<table style="width:100%; border-collapse:collapse;">
  <tr style="background:#f5f5f5;">
    <th style="padding:6px;"></th>
    <th style="padding:6px; text-align:left;">Termék</th>
    <th style="padding:6px;">Mennyiség</th>
    <th style="padding:6px;">Ár</th>
  </tr>
  {{ contact.CART_ITEMS_HTML }}
</table>
<p><strong>Összesen: {{ contact.CART_TOTAL }}</strong></p>

Termék HTML sablon változói (admin beállítás)

Az admin felületen a Termék HTML sablon mezőben az alábbi változók használhatók (minden termékre ismétlődik):

VáltozóTartalom
{IMAGE}Termék képe <img> tagként
{NAME}Termék neve
{OPTIONS}Kiválasztott opciók (pl. szín, méret)
{QTY}Mennyiség
{PRICE}Egységár

7. Cron beállítása

Az admin felület Cron szekciójában láthatod a pontos fájlútvonalakat a szerveredhez igazítva.

SSH-n futtasd: crontab -e

Bash – crontab
# Elhagyott kosár – óránként
0 * * * * php /home/user/public_html/system/cron/brevo_abandoned.php >> /home/user/logs/brevo_abandoned.log 2>&1

# Vásárlás befejezve – 30 percenként
*/30 * * * * php /home/user/public_html/system/cron/brevo_completed.php >> /home/user/logs/brevo_completed.log 2>&1

# Vevők szinkronizálása – naponta egyszer hajnali 2-kor
0 2 * * * php /home/user/public_html/system/cron/brevo_sync_contacts.php >> /home/user/logs/brevo_sync.log 2>&1
Figyelem: Az útvonalat (/home/user/public_html/) cseréld a saját szervered útvonalára. A PHP bináris elérési útját a which php paranccsal ellenőrizd.

Kézi tesztelés

Bash
php /home/user/public_html/system/cron/brevo_abandoned.php

Elvárt output:

Output
[INFO] 2026-02-10 14:00:01 – Feldolgozandó orderek: 2
[OK]    order_id=1042 → valaki@example.com
[OK]    order_id=1043 → masik@example.com

8. Meglévő vevők szinkronizálása (opcionális)

Ha korábban már szinkronizáltad a vevőket Brevóba, töltsd fel a tracking táblát, hogy a cron ne próbálja újra az összes emailt:

SQL – phpMyAdmin vagy MySQL CLI
INSERT IGNORE INTO `oc_brevo_contacts` (email, synced_at)
SELECT DISTINCT email, NOW()
FROM `oc_order`
WHERE email != '';
Mikor szükséges ez? Csak akkor, ha a modul telepítése előtt már manuálisan szinkronizáltad a vevőket Brevóba. Ha most telepíted először a modult, hagyd ki ezt a lépést.

Eltávolítás

1

Admin Uninstall

Admin → Extensions → Extensions → Modules → Brevo → Uninstall (piros – gomb). Ez automatikusan törli az oc_brevo_sent és oc_brevo_contacts táblákat.

2

Fájlok törlése

Manuálisan töröld a feltöltött fájlokat a szerverről (lásd Fájlszerkezet szekció).

3

Cron sorok eltávolítása

crontab -e – töröld a három Brevo cron sort.

Figyelem: Az Uninstall gomb az adatbázis táblákat és az összes benne tárolt adatot (tracking rekordok) visszavonhatatlanul törli. Ha szükséges, előtte mentsd el az adatokat.

Hibaelhárítás

„Nincs jogosultságod" hiba az admin mentésnél

  • Admin → System → Users → User Groups → adjunk hozzá extension/module/brevo jogosultságot (view + modify).

Cron script nem fut

  • Ellenőrizd a PHP bináris útvonalát: which php.
  • Győződj meg róla, hogy az útvonal helyes a crontab sorban.

HTTP 400 / 404 hiba a cron outputban

  • Ellenőrizd az API kulcsot (Brevo → Settings → API Keys).
  • Győződj meg róla, hogy a Lista ID helyes – a Brevo felületén a lista neve mellett látható a szám.

Recovery link nem működik

  • Az order order_status_id már nem 0? Ez szándékos védelem – leadott rendelést nem lehet visszatölteni.
  • A RECOVER_SECRET megváltozott? Ha igen, az összes korábban kiküldött link érvénytelen lett.

Termék nem töltődik vissza a kosárba

  • A termék valószínűleg status=0 (deaktivált) – a rendszer szándékosan kihagyja az inaktív termékeket.

Email nem érkezik meg, de a cron [OK]-t ír

  • Ellenőrizd a Brevo Automation beállítását – aktív-e az automation, és a helyes listára van-e beállítva a trigger.
Általános tipp: Minden módosítás után töröld az OpenCart cache-t (Admin → Dashboard → fogaskerék → Refresh) és a böngésző cache-t is (Ctrl+Shift+R / Cmd+Shift+R).

Fájlszerkezet

brevo_opencart_oc3/
├── docs/brevo_opencart_oc3.htmlEz a dokumentáció
└── upload/1:1 másolás a webshop gyökerébe
    ├── admin/controller/extension/module/
    │   brevo.phpAdmin controller
    ├── admin/model/extension/module/
    │   brevo.phpDB tábla kezelés
    ├── admin/view/template/extension/module/
    │   brevo.twigAdmin beállítások oldal
    ├── admin/language/hu-hu/extension/module/
    │   brevo.phpMagyar nyelvfájl
    ├── admin/language/en-gb/extension/module/
    │   brevo.phpAngol nyelvfájl
    ├── catalog/controller/extension/module/
    │   brevo_recover.phpRecovery link kezelő
    └── system/cron/
        brevo_abandoned.phpElhagyott kosár cron
        brevo_completed.phpVásárlás befejezés cron
        brevo_sync_contacts.phpVevő szinkronizálás cron
        .htaccessWeb hozzáférés tiltása

Változásnapló

VerzióDátumVáltozás
1.0 2026-03-31 Első kiadás. Elhagyott kosár detektálás, Brevo lista trigger, recovery link, duplikáció szűrés, vevő szinkronizálás. Tesztelve: OpenCart 3.0.3.x, PHP 7.4 / 8.0.