Guest Order Link
v1.0.0
Guest Order Link
- Updates and support included for 12 months
- License key delivered immediately by email
- 30-day money-back guarantee
- Full documentation included
- Compatible with Hyvä themes
- Composer-ready installation
Guest Order Link
Een klant bestelt als gast en maakt daarna een account aan: "Mijn bestellingen" is leeg. Wimakeit_GuestOrderLink koppelt de bestellingen die als gast met hetzelfde e-mailadres zijn geplaatst aan dat account — bij het aanmaken van het account, bij de volgende bestelling, en voor de volledige historiek die al in de database staat.
De koppeling steunt niet alleen op een gelijk e-mailadres. Magento bevestigt e-mailadressen standaard niet: zonder voorzorg zou het volstaan om zich te registreren met het adres van een gastkoper om diens bestellingen, adressen en telefoonnummer te lezen. Standaard wacht de module tot de accounthouder op een link heeft geklikt die op dat adres is ontvangen.
Voor wie
- Winkels die guest checkout toelaten en tickets krijgen als "ik vind mijn bestelling niet terug in mijn account"
- Handelaars die hun gastkopers naar een klantaccount willen brengen zonder dat ze hun historiek verliezen
- Winkels waarvan klanten een account hebben maar uit gemak als gast bestellen
- Bureaus die een catalogus overnemen met jaren aan gastbestellingen die in één keer gekoppeld moeten worden
Belangrijkste voordelen
- Koppeling bij het aanmaken van het account — een klant die al als gast bestelde, ontvangt de e-mail "Voeg uw eerdere bestellingen toe aan uw account"; één klik en de bestellingen staan in "Mijn bestellingen".
- Bewijs van het e-mailadres — de link is ondertekend, beperkt in de tijd (standaard 7 dagen) en doet niets zonder een sessie die op dat account is ingelogd. De accountbevestiging van Magento en een wachtwoordreset per e-mail gelden ook als bewijs. Standaard aan, per website uit te schakelen.
- Koppeling bij de bestelling — een gastbestelling met het adres van een bestaand account wordt bij het plaatsen aan dat account toegewezen. De klant vindt ze terug in zijn account zonder iets te doen.
- Adressen exact vergeleken — de SQL-collatie beschouwt
naam@gmaïl.comennaam@gmail.comals gelijk. De module vergelijkt de adressen zelf: de houder van een lookalike-adres krijgt de bestellingen van iemand anders niet. - Adresboek, optioneel — het verzend- en/of factuuradres van de gekoppelde bestellingen wordt aan het adresboek van het account toegevoegd, zonder dubbels, en wordt enkel het standaardadres als het account er geen heeft.
- Historiek inhalen via CLI —
bin/magento wimakeit:guest-orders:link, met simulatie (--dry-run), filter per website of per adres, en een limiet per run. Idempotent, en één e-mail per klant zolang de link geldig is: opnieuw uitvoeren valt klanten niet opnieuw lastig. - Melding "er bestaat geen account" — optioneel zeggen de formulieren voor inloggen en wachtwoord vergeten duidelijk dat er geen account bestaat voor het ingevulde adres, met een link om er één aan te maken en een vooraf ingevuld formulier.
- Instellingen per website, standaard uit — er wordt niets gekoppeld en geen e-mail verstuurd zolang de module niet op de website is ingeschakeld. Een fout blokkeert nooit het aanmaken van het account of de bestelling.
Compatibiliteit
- Magento 2.4.6-p4+ / Mage-OS 3.x
- PHP 8.1 tot 8.5
- Vereist
wimakeit/module-core^3.2 - Geen JavaScript of statisch bestand: geen
setup:static-content:deploynodig,sales_orderwordt niet gewijzigd - Getest op het Luma-theme; de e-mail en de meldingen gebruiken de standaardmechanismen van Magento
- Vertalingen meegeleverd voor Engels (en_US), Frans (fr_FR), Nederlands (nl_NL) en Spaans (es_ES)
Installeer deze module via Composer. Zorg ervoor dat uw auth.json is geconfigureerd met uw Wimakeit-inloggegevens.
$ composer require wimakeit/module-guest-order-link:^1.0.0
$ bin/magento setup:upgrade
$ bin/magento setup:di:compile
Installation notes
The standard composer require + setup:upgrade + setup:di:compile flow applies. The points below cover what's specific to this module.
Required dependency
This module requires wimakeit/module-core ^3.2. Composer will pull it automatically from the Wimakeit registry as long as the registry is declared in your project's composer.json.
What the installation changes
- Two tables are created:
wimakeit_guest_order_link_proof(which accounts proved their address; stores a hash, not the address) andwimakeit_guest_order_link_claim(when the last email was sent). sales_orderis not altered.- No JavaScript and no static file:
setup:static-content:deployis not needed for this module.
Nothing happens until you enable it
The module is off by default. While it is off, nothing is linked and no email is sent. Enable it per website under Stores → Configuration → Wimakeit → Guest Order Link, or:
bin/magento config:set --scope=websites --scope-code=<code> wimakeit_guest_order_link/general/enabled 1
bin/magento cache:clean config
ACL permissions
After installation, the following ACL resource is available under System → Permissions → User Roles:
| Resource | Default |
|---|---|
Wimakeit_GuestOrderLink::config (edit module configuration, under Wimakeit) | granted to Administrator role only |
Configuration
All settings are scoped to the website, because a customer account is: a customer who ordered on two store views of the same website gets both orders back.
Guest orders - link to the customer account
| Setting | Default |
|---|---|
| Enable linking | No |
| Require proof of email ownership | Yes |
| Link new guest orders of existing accounts | Yes |
| Also overwrite the order's customer group | No |
| Save the shipping address in the address book | No |
| Save the billing address in the address book | No |
Email "Add your orders to your account"
| Setting | Default |
|---|---|
| Email Sender | General Contact |
| Email Template | the module's template (can be overridden in Marketing → Email Templates) |
| Link lifetime (days) | 7 |
Login - message when no account exists
| Setting | Default |
|---|---|
| Say that no account exists for the address | No |
How proof of email ownership works
With Require proof of email ownership on, guest orders are linked only once the account holder has clicked a link received at the account's address:
| Event | Effect |
|---|---|
| An account is created and guest orders exist for its address | The email is sent |
| The customer clicks the link while logged in to that account | Orders are linked |
Magento account confirmation (when customer/create_account/confirm is on) | Orders are linked, no extra email |
| Password set or reset through the link received by email | Orders are linked |
The link is signed with the installation's encryption key and expires. It does nothing without a session logged in to the account, so a mail scanner opening it triggers nothing. One email is sent per link lifetime, however many guest orders the customer places in the meantime.
Linking the existing order history
At installation no account has proved its address yet. Run the catch-up command once. It covers every website unless you pass --website, and it sends emails only on the websites where linking is enabled:
bin/magento wimakeit:guest-orders:link --dry-run # 1. count, writes nothing, sends nothing
bin/magento wimakeit:guest-orders:link # 2. run
bin/magento wimakeit:guest-orders:link --dry-run # 3. check
| Option | Effect |
|---|---|
--dry-run | Simulation: shows what would be done, writes nothing and sends no email |
--website=<code> / -w <code> | Restricts to one website (code or ID). Default: all |
--email=<address> | Restricts to a single address |
--limit=<n> | Caps the number of accounts processed, to split the work into several runs |
--ignore-proof | Also links accounts that have not proved their address |
-v | Details account by account |
Accounts that have proved their address get their orders linked. The others receive the email, and their orders are linked as they click. The first real run therefore sends one email to each account that has guest orders: check the count with --dry-run first.
Worth knowing
- Turning proof off. Orders are then linked as soon as the account is created, and later guest orders placed with an account's address go straight to it. Only do this on a store where Magento's account confirmation is required: otherwise whoever registers with someone else's address reads that person's guest orders.
- Linking at order placement. Anyone can place a guest order with the address of a proven account, and it lands in that account's history. Nothing leaks from the account, but its holder sees an order they did not place. With the address book options on, the address typed at checkout is also added to the account.
- "No account exists" message. It lets anyone check whether an address has an account, which Magento's native messages avoid on purpose. Forgotten password requests stay rate-limited by Magento. On the login form, enable it only with a captcha (
customer/captcha/forms). - Customer group. The group stored on an order is a snapshot taken at purchase time and it carries a tax class. Overwriting it relabels past sales in reports without recalculating the tax already stored, which is why the option is off by default.
- Order save. Each linked order goes through
OrderRepository::save(): the order grid is resynchronised andsales_order_save_afterobservers run. Test it on a project that exports orders to an ERP on save. - Up to 50 orders are linked per customer action, to keep the request fast. The catch-up command picks up the rest.
- Password reset as proof relies on the core passing the account's email to
AccountManagement::resetPassword(), verified on Magento 2.4.6-p4, 2.4.7 and Mage-OS 3.x. On older cores this path links nothing; the email link and the account confirmation still work. - Large order tables. No index is added on
sales_order.customer_email. Beyond roughly 100,000 orders, add an index on(customer_email, store_id)in your project. - A failure never blocks account creation or the order: it is logged in
var/log/(lines starting withGuest order link:).
Cron jobs
None.
- Versie
- v1.0.0
- Ondersteuning
- 12 maanden
- Last updated
- 15 okt. 2026
- Magento
- Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
- PHP
- PHP 8.1 PHP 8.2 PHP 8.3
- Hyvä
- Compatibel
- Pakket
-
wimakeit/module-guest-order-link
Compatibility checker
Pick your stack to see if this module fits.
Categories: Security, Feature, Fix, Perf, Admin, Deps.
[1.0.0] - 2026-10-02
Feature
- Guest orders linked to the account created afterwards. A customer who ordered as a guest and then creates an account finds those orders in "My Orders", across the store views of the website.
- Linking at order placement. A guest order placed with the email address of an existing account is given to that account when it is placed.
- Address book. Optionally, the shipping and/or billing address of the linked orders is added to the account's address book, without duplicates and without replacing an existing default address.
- Catch-up command.
bin/magento wimakeit:guest-orders:linklinks the existing order history, with a simulation mode and filters by website or address. - "No account exists" message. Optionally, the login and forgotten password forms say that no account exists for the address entered and link to account creation.
Security
- Proof of email ownership, on by default. Orders are linked only after the account holder has clicked a signed, time-limited link received at the account's address, confirmed the account, or reset the password by email. Registering with someone else's address does not give access to their guest orders.
- Exact address comparison. Look-alike addresses that the database treats as equal (
name@gmaïl.comandname@gmail.com) are told apart.
Admin
- Per-website settings under Stores → Configuration → Wimakeit → Guest Order Link. Linking is off by default.
- Translations for English, French, Dutch and Spanish.
Een bug gevonden? Laat het ons weten.
Een kort formulier opent in een nieuw tabblad — de modulenaam en uw taal zijn al ingevuld. Beschrijf wat u probeerde, wat misging, en wij komen binnen één werkdag bij u terug.
Een bug melden voor Guest Order LinkHulp nodig?
Ons team helpt u graag met de integratie.