Ecomail

Popis

Ecomail connects a WooCommerce store with an Ecomail account. It can synchronize contacts and transactions, maintain newsletter subscription state, and send consent-aware storefront events for Ecomail automations.

Main features

  • Subscribe or update WooCommerce customers in a selected Ecomail contact list.
  • Support classic checkout, Checkout Blocks, guest checkout, pay-for-order, and the customer My Account subscription control.
  • Send new orders and maintain Ecomail transaction status updates. Transaction features require an eligible Ecomail plan.
  • Run resumable customer, historical-order, and known-order synchronization through WooCommerce Action Scheduler.
  • Track carts and last-viewed products for automations when the relevant feature and marketing consent are enabled. These features require an eligible Ecomail plan.
  • Use a token-protected webhook to keep local subscription status synchronized from Ecomail.
  • Preserve existing contact tags during safe single-contact updates and retain legacy wp_order and wp_newsletter automation compatibility.
  • Store searchable, redacted API outcomes without request payloads, response bodies, credentials, or customer contact details.
  • Provide English source text plus Czech, Slovak, and Polish translations.

Administration and checkout

Loading the Ecomail settings page does not contact Ecomail. Test connection and Refresh lists are explicit administrator actions. Checkout and order creation are not made dependent on a successful Ecomail response.

Podpora

For help, contact support@ecomail.cz or use chat in the Ecomail application. When reporting an API problem, include the timestamp and correlation ID from the redacted API request logs. Never send your API key or token-protected webhook URL.

Requirements and compatibility

  • WordPress 7.0 or later; tested through WordPress 7.1.
  • PHP 8.2 through PHP 8.5.
  • WooCommerce 10.9 or later; tested through WooCommerce 11.0.
  • WooCommerce HPOS is supported. Legacy order storage is retained where WooCommerce still supports it.
  • WordPress cron and WooCommerce Action Scheduler must be able to run background actions.
  • The PHP OpenSSL extension is required for authenticated encryption of the saved API key.
  • Single-site WordPress is supported. Multisite has not been validated and is not currently claimed as supported.
  • HTTPS is strongly recommended, especially for authenticated administration and storefront tracking.

Updating from an earlier version

  1. Back up the site and test the update on staging when possible.
  2. Install the new plugin package without deleting the existing ecomail option or WooCommerce data.
  3. Open Settings -> Ecomail and verify the cached connection status, selected list, checkout behavior, and tracking consent configuration.
  4. Refresh lists explicitly if the list cache is old.
  5. Confirm that the token-protected webhook URL configured in Ecomail still matches the URL shown in WordPress.
  6. Review Initial synchronization. Pending legacy synchronization is migrated to one resumable Action Scheduler job.
  7. Place test orders through every checkout type used by the store before production rollout.

Saved settings, customer metadata, WooCommerce orders, and order metadata are preserved during the supported upgrade path. A legacy plaintext API key is automatically migrated to authenticated encrypted storage derived from the WordPress installation salts and is never returned to the settings page.

Configuration

Connection

  • Enable Ecomail integration: enabled by default so existing stores retain their 2.4.3 behavior. Disabling it blocks outbound Ecomail API calls, checkout integration hooks, browser tracking, webhook processing, and new synchronization starts without deactivating the WordPress plugin. Settings and local diagnostics remain available.
  • API key: save the Ecomail API key. It is encrypted in the WordPress database and the field remains blank after saving. Leaving the field blank preserves the current key. If WordPress authentication salts are rotated, enter the API key again so it can be encrypted with the new installation keys.
  • App ID: enter the first part of the Ecomail account URL.
  • Test Ecomail connection: checks the saved key and updates only the cached connection status.
  • Refresh lists: explicitly downloads and caches available contact lists. Merely opening settings never refreshes them.
  • Unsaved changes: after editing a setting, use the sticky Save changes or Discard changes controls. Leaving a dirty settings page triggers the browser’s standard warning.

Checkout and contacts

  • Subscribe on checkout enables the newsletter/contact flow.
  • Show checkbox on checkout displays the configured newsletter opt-out field. Review its wording and default behavior against the store’s legal basis and consent policy.
  • The selected checkout preference is stored on the order before deferred Ecomail work. Opting out schedules no contact operation and does not unsubscribe an existing Ecomail contact. Opt-in contact work is idempotent, retries bounded transient failures, and updates a registered customer’s local status only after Ecomail succeeds. Pay-for-order preserves the preference already recorded on the order.
  • Update subscriber data sends the selected checkout fields for existing contacts.
  • Resubscribe subscriber with new order controls whether a new order may resubscribe a previously unsubscribed contact when the checkout preference permits it.
  • List for checkout subscriptions selects the cached Ecomail contact list.
  • Skip confirmation disables double opt-in. Enable it only when the store has an appropriate legal basis.
  • Trigger autoresponders asks Ecomail to run applicable autoresponders when adding the contact.
  • Fields to register controls first name, last name, address, company, phone, and store language. Empty optional values are omitted.
  • API Source adds the configured source value to contact payloads. It defaults to woocommerce and uses lowercase ASCII letters, digits, and underscores. Live and historical transfers use the same value; _import and _webhook suffixes are not added automatically.
  • My Account subscribe and unsubscribe requests are nonce-protected, recorded as Pending, and processed by WooCommerce Action Scheduler. Transient API failures retry up to five times with bounded backoff. The final local preference changes only after Ecomail succeeds; permanent or exhausted failures restore the previous state.

Orders and storefront tracking

  • Enable order tracking queues one idempotent order-scoped transaction job. Repeated classic, Blocks, or pay-for-order events reuse the same generation; transient failures retry up to five times with bounded backoff, and a five-minute watchdog restores missing actions. Successful live transactions are marked as remotely known for later historical synchronization.
  • Later WooCommerce status transitions use a separate durable per-order job. Rapid changes coalesce to the latest mapped status, stale actions cannot overwrite newer state, and transaction creation completes before a queued status PUT consumes its retry budget.
  • Add tracking code to website loads Ecomail storefront tracking only after marketing consent.
  • Enable manual tracking identifies a consented visitor using the WooCommerce billing email, with the WordPress account email as fallback.
  • Enable cart tracking sends the server-authoritative WooCommerce cart for abandoned-cart automations.
  • Successful checkout queues one durable order-scoped cart-clear event. Replayed checkout events reuse the same generation, transient failures retry with bounded backoff, and a five-minute watchdog restores missing actions without delaying checkout.
  • Enable Last view tracking sends the last viewed product for the ECM_LAST_VIEW merge tag.

Tracking uses the WordPress Consent API when available. Without it, both Marketing cookie name and Marketing cookie value must match the consent-management platform. Missing or mismatching consent disables browser tracking.

Webhook

Copy the complete token-protected webhook URL shown in Settings -> Ecomail into the Ecomail list settings. Treat it as a secret. Regenerating the token immediately invalidates the previous URL, so update Ecomail at the same time.

Initial synchronization

The Initial synchronization panel is below the main settings form in Settings -> Ecomail. Progress is stored in WordPress, so the page can be closed while Action Scheduler continues.

  • Sync customers sends only registered WooCommerce customers or account holders with a WooCommerce order to the selected contact list. Other WordPress accounts are skipped unless they have an order. Explicitly unsubscribed customers and customers who declined on their latest order are skipped. Guests without accounts are not included in this contact import.
  • Sync customers and orders first discovers known Ecomail transactions, then sends customers and missing historical orders belonging to registered customers. Historical guest orders remain outside this import; new guest orders use the live order-tracking flow when enabled.
  • Update known orders refreshes transactions already known to Ecomail.
  • Retry job resumes a failed job from durable progress.
  • Cancel job requests cancellation after the current accepted batch is saved.
  • Clear finished job removes only the terminal job history so a new job can start.

Only one durable synchronization job runs per site. The default customer batch is 100, with one existing-contact lookup per customer to protect remote tags; the default transaction batch is 1,000, with a 250-record local database chunk. The server caps batches at 3,000 subscribers, 1,000 transactions, and 500 local records. Larger customer batches may be slowed by API and hosting time limits.

Turning off Enable Ecomail integration pauses an active Initial synchronization job at its exact stage, cursor, counts, and retry deadline without sending another batch. The recovery watchdog resumes that preserved work after the integration is enabled again. Cancellation remains available while synchronization is paused.

Already queued My Account, checkout contact, cart clearing, live transaction, and transaction status jobs are paused in the same way. Their retry attempt, deadline, and order or customer state remain unchanged until the integration is enabled again.

Initial customer sync checks existing Ecomail tags before updating a contact and adds only the integration tags. A new registered customer without an order or a known newsletter opt-in is imported as unsubscribed. Existing Ecomail subscription states are preserved.

Historical bulk imports do not trigger Ecomail automations based on the Makes an order trigger.

Tags and contact enrichment

Safe single-contact updates fetch the existing Ecomail subscriber and merge tags before sending:

  • wp identifies a contact synchronized by this integration.
  • wp_order identifies a contact with a WooCommerce order.
  • wp_newsletter identifies a known newsletter opt-in. Initial sync does not infer historical opt-in.
  • An explicit unsubscribe removes wp_newsletter and the older woocommerce_newsletter tag if present.
  • Unrelated existing tags are preserved.
  • If an existing subscriber cannot be read safely, live updates omit the tags field; initial sync retries before sending the batch.
  • Store language is optional and is sent as the woocommerce_language custom field.

Administrators can see the locally recorded newsletter status and filter it in WordPress Users. This local value can be unknown or lag behind Ecomail when webhooks are not configured. Guest buyers have no WordPress user row.

Privacy

Depending on enabled features, the plugin can send contact identity and selected billing fields, newsletter preference, WooCommerce transaction details, cart contents, and last-viewed product data to Ecomail. Configure only the data needed for the store’s stated purpose and document the processing in the store privacy notice.

Behavioral tracking fails closed without marketing consent. Cart and product events use an email known to WooCommerce for the current customer; an ecmid campaign parameter is not used as the event email. The browser tracker identifies visitors through its separate consent-aware path.

The local API request table stores bounded, redacted outcomes for 7 days by default, up to 1,000 rows. It does not store request payloads, response bodies, API credentials, webhook tokens, or customer contact details. Logs are preserved on uninstall unless Delete API request logs on uninstall is explicitly enabled. Settings, including the encrypted API key, and cached contact lists are preserved unless Delete Ecomail settings on uninstall is enabled. These options are independent; neither removes WooCommerce customers or orders.

Uninstall never deletes WooCommerce customers, orders, products, addresses, or other business data. It removes generated tokens and transient synchronization state. By default, Ecomail settings remain available for a later reinstall; enabling Delete Ecomail settings on uninstall removes them.

Troubleshooting

  1. Save the API key, then run Test Ecomail connection. A blank API-key field after saving is expected. If the connection stops working immediately after WordPress salts were rotated, enter and save the API key again.
  2. Use Refresh lists if a contact list is missing or stale.
  3. Open WooCommerce -> Status -> Scheduled Actions and confirm Action Scheduler is running. Check the site’s WP-Cron or real system cron if a job does not advance.
  4. Open API request logs in Settings -> Ecomail. Filter by result, method, endpoint, date, order, job, or correlation ID.
  5. Retry a failed synchronization from its stored progress. If hosting limits are involved, clear the finished job, reduce batch sizes, and start a new job.
  6. If tracking does not run, verify that the tracking feature is enabled and that WordPress Consent API marketing consent or both fallback cookie values match.
  7. If a webhook is rejected, copy the currently displayed URL exactly. Regenerate only if the URL may have leaked, then update Ecomail immediately.
  8. If checkout or an order succeeds but Ecomail data is missing, use the redacted logs and Action Scheduler status. Ecomail failures are isolated from WooCommerce checkout success.

Snímky obrazovky

Instalace

  1. Back up the WordPress database and files.
  2. Upload the plugin ZIP through Plugins -> Add New -> Upload Plugin, or copy the plugin to /wp-content/plugins/ecomail.
  3. Activate WooCommerce, then activate Ecomail.
  4. Open Settings -> Ecomail.
  5. Enter the Ecomail API key and App ID, then save. The App ID is the first part of the Ecomail account URL and is required for storefront tracking.
  6. Use Test Ecomail connection. Then use Refresh lists and save the list used for checkout subscriptions.
  7. Review checkout, tracking, consent, webhook, and synchronization settings before enabling them on a production store.

Nejčastější dotazy

Why is the API key field empty after I save it?

The stored key is encrypted in the WordPress database and deliberately not returned to the browser. Leave the field blank to keep it, or enter a new value to replace it. After rotating WordPress authentication salts, enter the key again.

Does opening Settings -> Ecomail contact Ecomail?

No. The page shows cached status and lists. Test Ecomail connection and Refresh lists are the explicit network actions.

Can I close the page during initial synchronization?

Yes. Durable progress is stored in WordPress and Action Scheduler continues in the background.

Why are bulk WooCommerce tags disabled by default?

Ecomail bulk contact updates replace the complete tag set. The explicit checkbox and warning prevent accidental removal of tags managed directly in Ecomail.

Why is storefront tracking not firing?

The plugin requires marketing consent. Configure a WordPress Consent API-compatible consent plugin or both fallback cookie fields. Missing or mismatching consent intentionally disables tracking.

Does uninstall delete store data?

No. WooCommerce business data is never deleted. API logs are deleted only after explicit opt-in; settings are preserved.

Is WordPress multisite supported?

Multisite has not been validated and is not currently claimed as supported.

Recenze

11. 11. 2025 1 odpověď
Vopred napisem, ze toto nie je recenzia na plugin, ktory si tych 5* zasluzi (s vyhradami, stale som nazoru, ze tak jednoduchy plugin nepotrebuje strukturu hodnu produkcneho riesenia na Symfony). Recenzia je na dlhodoby problem, kde zakaznik je nikto, hlavne tuto na wp.org s ohladom na "reakcie v supporte", lebo co nenapise clovek priamo na WPify support, to jednoducho neexistuje. Live chat na Ecomail vzdy odkaze len na WPify support. Od verzie 2.2.0 je pre vsetkych mojich klientov plugin nepouzitelny. Z pohladu Ecomailu je vsetko spravne, z pohladu WPify je vsetko spravne, lebo implementacia je presne podla zadania od Ecomail. Ecomail sa ohradi vzdy rovnakymi pravnickymi tvrdeniami, citaciami zakonov a podobne, no tu narazame na tvrdenie proti tvrdeniu resp. rozne vyklady rovnakych zakonov. Kazdy, s kym som sa stretol potrebuje implementaciu newslettera ako OPTIN, teda nezaskrtnuty checkbox "Prajem si dostavat newsletter". Nasledne pride email na potvrdenie prihlasenia a newsletter chodi. Ti co nezaskrtnu, no zial, nedostanu sa ani do opravneneho zaujmu v Ecomail ani to nie je ulozene v DB, kedze prazdny checkbox, ziadny checkbox. Po novom to ale funguje "pravne spravne" ako OPTOUT, teda mam nezaskrtnuty checkbox "Nechcem dostavat newsletter". Vo vysledku nasrati zakaznici, lebo zakaznik nebude citat kazdy smalltext! Vo vysledku brutalny prepad novych subscriberov v newslettri z objednavok. Skusili sme na 2 tyzdne "pravne spravne" a prepad 88% je hadam dost jasny problem. Ludia nebudu zaskrtavat, ze nechcu newsletter, jednoducho asi skor cakaju opak, ze ak nieco chcem, tak si o to poziadam. Ked im teda pride mail na potvrdenie pridania, su skor vytoceni, ze o nic take neziadali a bud to ide do spamu (podla postmastra v case zapnuteho pluginu bol narast presunu mailov do spamu) alebo to odignoruju ale urcite nekliknu potvrdenie. Takze co, ostavame na verzii 2.1.6 a utrieme slzu zakazdym, ked vyjde nova ficura, lebo radsej stary polofunkcny plugin ako aktualizovany a ziadni subscriberi.
3. 6. 2021
V porovnání s původním pluginem je to velký krok kupředu, přidáno bylo velké množství funkcí a hlavně se opravily chyby. Díky.
Přečtěte si všechny 3 recenze

Autoři

Ecomail je otevřený software. Následující lidé přispěli k vývoji tohoto pluginu.

Spolupracovníci

Plugin „Ecomail“ byl přeložen do 2 jazyků. Děkujeme všem překladatelům za jejich pomoc.

Přeložte “Ecomail” do svého jazyka.

Zajímá vás vývoj?

Prohledejte kód, podívejte se do SVN repozitáře, nebo se přihlaste k odběru protokolu vývoje pomocí RSS.

Přehled změn

2.5.0

  • Improve compatibility with current WordPress and WooCommerce versions.
  • Fix Store API coupon handling, isolate invalid email addresses during bulk import, and allow independent background jobs to proceed without blocking each other.
  • Improve saved-key feedback, source formatting, webhook copying, and log pagination.
  • Add durable Action Scheduler synchronization with resumable progress, locking, cancellation, retries, stale-job recovery, bad-record isolation, and configurable batches.
  • Harden webhook, tracking, and administrator actions with tokens, capabilities, nonces, validation, rate limits, and redacted diagnostics.
  • Move checkout contacts, live transactions, order-status updates, and cart clearing away from the checkout response path.
  • Improve classic checkout, Checkout Blocks, pay-for-order, and My Account subscription behavior.
  • Preserve unrelated contact tags during single-contact updates and safely migrate legacy WooCommerce tags.
  • Add WordPress Consent API support with fail-closed tracking fallback behavior.
  • Add searchable, paginated API outcome logs with bounded retention and conservative uninstall handling.
  • Add a native settings and synchronization interface with explicit connection testing and list refresh.
  • Add English, Czech, Slovak, and Polish customer-facing translations.
  • Validate WordPress 7.0-7.1, WooCommerce 10.9-11.0, PHP 8.2-8.5, HPOS, legacy order storage, and persistent object cache compatibility.
  • Raise the minimum requirements to PHP 8.2, WordPress 7.0, and WooCommerce 10.9. Sites on older versions stay on 2.4.3 until they upgrade.

2.4.3

  • Oprava hromadné synchronizace objednávek: zajistit, aby se synchronizace importovaných objednávek dokončila před importem uživatelů a objednávek
  • Oprava problému, kdy se po změně klíče API zachovávají zastaralá ID importovaných objednávek
  • Oprava parametru pro opětovné přihlášení k odběru, který ignoruje nastavení odhlášení z odběru newsletteru
  • Opravit nefunkční zaškrtávací políčko pro odběr newsletteru v blokové pokladně
  • Oprava: tag wp_newsletter se při odhlášení neodstraňuje
  • Upravit serializaci značek jako objekt JSON namísto pole

2.4.2

  • Změnit cenu transakční položky z jednotkové ceny na celkovou cenu
  • Změnit parametr kategorie na pole kategorií (podporuje více kategorií pro jeden produkt)
  • Nastavit částku transakce na celkovou částku včetně daně

2.4.1

  • Oprava dvojitého potvrzení po objednávce v Woo
  • Oprava přidávání značky wp_newsletter při přihlášení k odběru z účtu
  • Opravit textovou doménu
  • Přidat lepší kontrolu platnosti e-mailové adresy

2.4.0

  • Přidat funkci hromadné aktualizace stávajících objednávek
  • Přidat sledování preferencí odběru u objednávek a uživatelů
  • „Přidat informace o předplatném do zákaznického účtu“
  • Přidat přepínací tlačítko pro přihlášení k odběru/odhlášení z odběru do zákaznického účtu
  • Přidejte webhooky pro aktualizaci údajů o předplatném
  • Přidejte protokolování procesů pomocí nástroje WooCommerce Logger
  • Opravit hromadný import stávajících objednávek

2.3.2

  • Nastavit, aby se stávající značky nepřepisovaly

2.3.1

  • Při vytváření objednávky a/nebo přihlášení k odběru newsletteru přiřaďte uživatelům štítky
  • Změnit zaškrtávací políčko pro souhlas na políčko pro odmítnutí
  • Opravit uživatelská data při hromadném importu
  • Aktualizovat závislosti

2.3.0

  • Opravit nasazení
  • Minimální požadovaná verze PHP byla zvýšena na 8.1

2.2.1

  • Opravit nasazení

2.2.0

  • Přidat hromadný import transakcí
  • Přidat další možnosti pro zaškrtávací políčko při placení
  • Přidat štítky WooCommerce k objednávkám
  • Aktualizovat závislosti
  • Různé opravy a vylepšení

2.1.6

  • Opravit kategorii u variabilních produktů

2.1.5

  • Nastavit podporu HPOS

2.1.4

  • Nezobrazovat e-maily týkající se sledování košíku

2.1.3

  • Sledování obrázku v plné velikosti v košíku

2.1.2

  • Přidat podporu předplatného na stránce platby za objednávku

2.1.1

  • Přidat filtr pro hodnotu možnosti

2.1.0

  • Přidat nastavení pro zakázání sledování pomocí souborů cookie

2.0.0

  • Přejít na nové jádro
  • Přidat možnost odeslat zákazníkovi telefonní číslo
  • Přidat sledování naposledy prohlíženého produktu
  • Hromadně nahrát všechny stávající zákazníky
  • Minimální požadovaná verze PHP byla zvýšena na 7.4

1.0.7

  • Opravit kategorii položky objednávky

1.0.4 – 1.0.6

  • Hotfixy

1.0.3

  • Opravit závažnou chybu v případě, že relace neexistuje

1.0.2

  • Přidání loga pluginu

1.0.1

  • Přidání loga pluginu

1.0.0

  • První verze