{"id":393720,"date":"2026-10-30T18:46:01","date_gmt":"2026-10-30T18:46:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/elenatec-bridge\/"},"modified":"2026-10-30T18:45:39","modified_gmt":"2026-10-30T18:45:39","slug":"elenatec-bridge","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/elenatec-bridge\/","author":23594132,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.2","stable_tag":"0.1.2","tested":"7.1.4","requires":"6.6","requires_php":"8.1","requires_plugins":null,"header_name":"ElenaTec Bridge","header_author":"Elena Technology","header_description":"Connect WooCommerce catalog and order notifications to your ElenaTec account.","assets_banners_color":"","last_updated":"2026-10-30 18:45:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/elenatec.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":144,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.2":{"tag":"0.1.2","author":"elenatec","date":"2026-10-30 18:45:39","revision":3775891}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[597,6601,286],"plugin_category":[45],"plugin_contributors":[289830],"plugin_business_model":[],"class_list":["post-393720","plugin","type-plugin","status-publish","hentry","plugin_tags-integration","plugin_tags-inventory","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-elenatec","plugin_committers-elenatec"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/elenatec-bridge.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Connect a WooCommerce store to a separate ElenaTec account for opt-in catalog\nreconciliation and native draft-order workflows. An ElenaTec account and an\napplicable service plan are required. Review service availability and pricing\non the service website before enabling a connection.<\/p>\n\n<p>Service: https:\/\/elenatec.com\/\nTerms: https:\/\/elenatec.com\/terminos\nPrivacy: https:\/\/elenatec.com\/privacidad\nSupport and privacy requests: https:\/\/elenatec.com\/soporte-legal<\/p>\n\n<p>Configure the existing connector in ElenaTec, choose independent catalog,\nprice, stock and order policies, and review the initial preview. This plugin\nuses WooCommerce Action Scheduler to deliver order identifiers and reconcile\ncatalog pages. New WooCommerce products are created as drafts.<\/p>\n\n<p>Supported scope: simple products and WooCommerce variations with distinct SKUs,\npersistent store-scoped identities, optional product creation\/content updates,\nexclusive prices in a matching base currency and tax policy, branch-level\navailable stock, and native wholesale or commercial draft orders.<\/p>\n\n<p>Each variation maps to an independent sellable ElenaTec Product SKU with its\nWooCommerce parent and variation IDs persisted separately. Existing WooCommerce\nvariation attributes are preserved. Existing grouped ElenaTec ProductVariant\nrecords require explicit migration\/review because the native order and stock\nledger cannot currently fulfill those records independently. New WooCommerce\nproducts are simple drafts; variable parent\/attribute creation is not automated.<\/p>\n\n<p>Cancellation and full refunds cancel eligible unpaid, unfulfilled native drafts\nidempotently. Partial refunds, physical returns, approved\/dispatched orders and\nlater content changes require the native review\/credit-note workflow. No\nautomatic payment, invoice, refund payment or shipment is performed.<\/p>\n\n<p>Catalog reconciliation processes 50 items per page, schedules subsequent pages\nfive seconds apart, and waits 60 seconds after the last page before restarting.\nLarge catalogs therefore take longer than one minute. Order reconciliation\nrestarts five minutes after each pass over the previous 24 hours, up to 10,000\norders per pass, with five seconds between pages.\nTiming depends on Action Scheduler\/WP-Cron and ElenaTec workers. Stock updates\npause while an order delivery remains unacknowledged or ElenaTec reports pending\nor conflicting import work. Each successful delivery acknowledges only its own\ngeneration\/UUID, including deduplicated retries. Other notifications stay pending.\nReconciliation retries up to 50 identified pending UUIDs per order before queuing\na fresh notification for the current state. Historical failed actions\nare retained unchanged and do not by themselves block a recovered order. Old\nunattributed draft-version pending markers require manual review and remain\nconservatively blocking. Monitor ElenaTec Health; no hard real-time guarantee.\nDelivery bookkeeping marks only _elenatec_pending as ephemeral through a private\nnative HPOS metadata store. It preserves metadata hooks, cache refresh and native\nbackfill without installing a global save filter. Nested commercial changes on\nthe same or another order retain their date and normal notifications. Adding or\nacknowledging debt alone does not move the business modified timestamp. The\nadded_order_meta and deleted_order_meta hooks are native WooCommerce metadata\nhooks, not plugin-defined hooks; their names and four-argument contracts are\npreserved for compatibility.\nSaving settings or deactivating invalidates in-flight work. A snapshot from an\nolder connection cannot be applied under a new connection, and stale workers\ncannot release a catalog lock owned by a newer worker. Existing queued actions\nwithout a revision argument remain compatible; new actions carry a settings\nrevision. An already transmitted request cannot be recalled by disconnecting.\nOperator capability metadata and role definitions are refreshed before writes,\nand a scoped final guard checks the connection inside WooCommerce's product-save\nhook. This does not turn WooCommerce's multiple native database writes into one\ncross-request transaction; unrelated plugins remain responsible for their own\nhooks and effects.\nCatalog conflicts retain up to 100 identifiers per pass in WooCommerce &gt; ElenaTec.\nOther products\/pages continue; correct identity or tax policy before retrying.\nInactive mapped ElenaTec products are suspended as Woo drafts with zero stock and\nbackorders disabled, even when ordinary stock writes are paused. Their mappings\nand history remain. Reactivation requires an administrator to publish in Woo;\nthe bridge does not automatically republish them. Unlinked inactive SKUs cannot\ndeactivate an unrelated Woo product by SKU alone.\nAn explicit remote ID owned by another local product is rejected before any\ncontent, stock or suspension-marker write, for simple products and variations.<\/p>\n\n<h3>Installation scope and translations<\/h3>\n\n<p>This candidate is qualified on single-site installations only. Multisite,\nnetwork activation and network-wide uninstall have not been qualified. The\nuninstall routine processes the current site's options and action groups; do\nnot rely on it to erase connection secrets across every site in a network.<\/p>\n\n<p>The interface currently ships in English with translatable strings. Spanish\ntranslations and language-pack behavior have not been verified. Some technical\nhealth and conflict codes remain visible as diagnostic codes.<\/p>\n\n<h3>External service and privacy<\/h3>\n\n<p>The plugin contacts ONLY the public HTTPS ElenaTec bridge endpoint entered by\nthe administrator after explicit enablement. It sends order IDs, event IDs and\ncatalog pagination offsets. It receives product identifiers, names, SKUs,\nbarcodes, configured prices and available quantities.<\/p>\n\n<p>Separately, ElenaTec retrieves WooCommerce order responses with the read-only\nWooCommerce REST credentials configured in ElenaTec. Current order requests do\nnot select a reduced set of response fields. Depending on the WooCommerce REST\nresponse, ElenaTec can receive order identifiers and status, customer identifiers,\nline items, quantities, prices, totals, taxes, billing and shipping contact\ndetails, payment-related order fields and order metadata. A read-only key limits\nwrites; it does not mean that only a small subset of order data is returned.<\/p>\n\n<p>The current import uses customer first\/last name and email, order and customer\nidentifiers, status, currency, line items, shipping amounts, tax and total data\nfor native customer\/draft-order records, identity matching, validation and\nreconciliation. The plugin does not add analytics, tracking or AI transmission.\nThis connector does not initiate payment or fiscal-document creation.<\/p>\n\n<p>ElenaTec's public privacy policy describes service processing, retention, rights\nrequests and exceptions. Local disconnect or uninstall does not delete customer\nor draft-order records already imported into ElenaTec. The plugin imposes no\nautomatic deletion schedule on those native records. Consult the current policy\nand contact the service operator for retention or deletion requests. WordPress\nbackups and Action Scheduler history follow the site's own retention policy.<\/p>\n\n<p>Review the linked service terms and privacy policy and obtain merchant\npermission before connecting a store. The PHP plugin is GPL-2.0-or-later; use of\nthe separate ElenaTec service is governed by its service terms. Installation and\nactivation alone do not enable a remote connection or provision credentials.<\/p>\n\n<p>Secrets are encrypted using AES-256-GCM and WordPress auth salts. Changing salts\nrequires re-pairing. ELENATEC_BRIDGE_SECRET in wp-config.php can supply the secret\ninstead. Neither secret is displayed again. Disconnect erases the local secret\nand cancels pending plugin actions; disconnect in ElenaTec and revoke the REST\nkey separately. Product identities and native orders are retained on uninstall.\nBackups and Action Scheduler history follow the site's retention policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Use a staging site with PHP OpenSSL, WordPress 6.6+ and WooCommerce 9.0+.<\/li>\n<li>Install the ZIP using Plugins &gt; Add New &gt; Upload Plugin, then activate.<\/li>\n<li>In ElenaTec &gt; Integrations &gt; WooCommerce, configure a public HTTPS shop URL,\nan existing read-only WooCommerce key, branch and policies. Enter a strong\nshared signing secret of at least 32 characters. Save and test.<\/li>\n<li>Under WooCommerce &gt; ElenaTec, copy the bridge endpoint, enter the same secret,\nreview the external-service disclosure and explicitly enable the connection.<\/li>\n<li>Review every initial preview page and run a bounded reconciliation in ElenaTec.<\/li>\n<li>Check WooCommerce &gt; Status &gt; Scheduled Actions (group elenatec-bridge) and\nElenaTec Health. Action groups have an elenatec-bridge- prefix and a connection\nsuffix. Use a real cron runner on staging to measure actual latency.<\/li>\n<\/ol>\n\n<p>No credentials or webhooks are provisioned automatically by installing the ZIP.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"are%20elenatec%20and%20woocommerce%20numeric%20ids%20interchangeable%3F\"><h3>Are ElenaTec and WooCommerce numeric IDs interchangeable?<\/h3><\/dt>\n<dd><p>No. Products are paired by persisted store identity or an unambiguous exact SKU\nor barcode. Conflicting candidates require review.<\/p><\/dd>\n<dt id=\"can%20i%20choose%20another%20currency%20or%20tax%20policy%3F\"><h3>Can I choose another currency or tax policy?<\/h3><\/dt>\n<dd><p>No conversion is performed. Currency, exclusive-price basis and effective tax\nrates must match. Differences fail closed for review; tax settings are preserved.<\/p><\/dd>\n<dt id=\"what%20about%20long%20outages%3F\"><h3>What about long outages?<\/h3><\/dt>\n<dd><p>The automatic recovery window is 24 hours. ElenaTec's manual order sync queues\nat most the newest 1,000 orders; it is not an arbitrary historical backfill.\nInspect source counts and obtain a reviewed recovery plan for changes beyond\nthose bounds before resuming. Never treat a bounded pass as a complete history.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.2<\/h4>\n\n<p>Preserve and document native WooCommerce metadata hooks. Fence in-flight work\nwhen settings, consent or credentials change, refresh operator permissions, and\nrelease catalog locks only when still owned. Reject non-text settings input\nand bound remote response size. No payment or fiscal-document behavior added.<\/p>\n\n<h4>0.1.1<\/h4>\n\n<p>Publication review candidate: align name and version metadata, add verified\npublic service links and clarify the order-response disclosure and retention.\nNo synchronization or payment behavior is changed.<\/p>\n\n<h4>0.1.0<\/h4>\n\n<p>Initial draft: signed identifier transport, durable retries, bounded catalog\nreconciliation and persistent identities.<\/p>","raw_excerpt":"An opt-in connection between a WooCommerce store and an ElenaTec account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/393720","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=393720"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/elenatec"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=393720"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=393720"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=393720"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=393720"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=393720"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=393720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}