{"id":349421,"date":"2026-08-04T19:13:48","date_gmt":"2026-08-04T19:13:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/epox-connector-for-woocommerce\/"},"modified":"2026-08-04T20:51:52","modified_gmt":"2026-08-04T20:51:52","slug":"epox-connector-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/epox-connector-for-woocommerce\/","author":23543041,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1","stable_tag":"1.1.1","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Epox Connector for WooCommerce","header_author":"Epox","header_description":"Dedicated REST endpoints that let the Epox platform sync generated images and video into WooCommerce products in a single authenticated call.","assets_banners_color":"0c0b0e","last_updated":"2026-08-04 20:51:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/epox.ai","rating":0,"author_block_rating":0,"active_installs":0,"downloads":48,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"epoxtech","date":"2026-08-04 19:13:24"},"1.1.1":{"tag":"1.1.1","author":"epoxtech","date":"2026-08-04 20:51:52"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3634557,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3634557,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3634557,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3634557,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0","1.1.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[597,84,24716,66211,286],"plugin_category":[45,50],"plugin_contributors":[274464],"plugin_business_model":[],"class_list":["post-349421","plugin","type-plugin","status-publish","hentry","plugin_tags-integration","plugin_tags-media","plugin_tags-product-images","plugin_tags-product-video","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-media","plugin_contributors-epoxtech","plugin_committers-epoxtech"],"banners":{"banner":"https:\/\/ps.w.org\/epox-connector-for-woocommerce\/assets\/banner-772x250.png?rev=3634557","banner_2x":"https:\/\/ps.w.org\/epox-connector-for-woocommerce\/assets\/banner-1544x500.png?rev=3634557","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/epox-connector-for-woocommerce\/assets\/icon-128x128.png?rev=3634557","icon_2x":"https:\/\/ps.w.org\/epox-connector-for-woocommerce\/assets\/icon-256x256.png?rev=3634557","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin is the store-side half of the Epox integration. Install it on your WooCommerce\nstore and Epox can publish generated images and video straight into your products, reusing\nthe WooCommerce API key you have already issued \u2014 there is nothing extra to configure.<\/p>\n\n<p>It exists because the generic WooCommerce product endpoint cannot express what the\nintegration needs. Without this plugin, publishing one image takes three round trips\n(upload, attach, verify) and WooCommerce re-downloads the file itself, which fails on some\nhosting stacks and can leave duplicates behind on a retry. With it, the whole operation\nhappens once, on your server, in a single transaction.<\/p>\n\n<p>What it adds:<\/p>\n\n<ul>\n<li><strong>One call per sync.<\/strong> Download, media-library registration, gallery placement and\nmetadata all happen server-side in one request.<\/li>\n<li><strong>Safe retries.<\/strong> Every media item carries an idempotency key. If Epox retries a sync,\nthe plugin returns the attachment it already created instead of importing a second copy.<\/li>\n<li><strong>All-or-nothing.<\/strong> If any part of a sync fails, attachments created during that request\nare removed. A failed sync leaves no orphans in your media library.<\/li>\n<li><strong>Video support.<\/strong> Product video can be imported and linked to your gallery plugin's\nmetadata, which the standard WooCommerce product API has no way to express. The video file\nitself can be imported into your media library \u2014 not just referenced by URL \u2014 verified\nagainst \"WooCommerce Gallery Slider\" (<code>gallery-slider-for-woocommerce<\/code>, formerly WooGallery).<\/li>\n<li><strong>Variation images.<\/strong> One generated image can be assigned across several variations\nwithout importing it more than once.<\/li>\n<\/ul>\n\n<h3>Endpoints<\/h3>\n\n<p>All routes live under <code>epox\/v1<\/code> and authenticate with your existing WooCommerce\nRead\/Write API key.<\/p>\n\n<ul>\n<li><code>GET \/wp-json\/epox\/v1\/status<\/code> \u2014 reports the plugin version and capabilities.<\/li>\n<li><code>POST \/wp-json\/epox\/v1\/media-sync<\/code> \u2014 import media and attach it to a product or its variations.<\/li>\n<li><code>POST \/wp-json\/epox\/v1\/media-detach<\/code> \u2014 remove synced media from a product.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin zip via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, or extract it into\n   wp-content\/plugins\/.<\/li>\n<li>Activate <strong>Epox Connector for WooCommerce<\/strong>. WooCommerce must already be active \u2014 WordPress\nwill tell you so and block activation otherwise.<\/li>\n<li>In Epox, connect the store as usual using a WooCommerce API key with <strong>Read\/Write<\/strong>\npermissions. Epox detects the connector automatically.<\/li>\n<\/ol>\n\n<p>There are no settings screens. If the plugin is deactivated, Epox falls back to the\nstandard WooCommerce API and keeps working. Deleting the plugin removes only its own\nsettings \u2014 media it has already imported into your library is never touched.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20separate%20api%20key%20or%20password%3F\"><h3>Do I need a separate API key or password?<\/h3><\/dt>\n<dd><p>No. The plugin registers its routes with WooCommerce's own authentication, so the\nconsumer key and secret you already gave Epox authorise these endpoints too.<\/p><\/dd>\n<dt id=\"what%20permissions%20does%20it%20require%3F\"><h3>What permissions does it require?<\/h3><\/dt>\n<dd><p>The API key's user must be able to edit products (shop manager or administrator, with a\nRead\/Write key). Every request is also checked against the specific product being changed.<\/p><\/dd>\n<dt id=\"my%20gallery%20plugin%20shows%20videos%20from%20a%20custom%20field.%20will%20this%20work%3F\"><h3>My gallery plugin shows videos from a custom field. Will this work?<\/h3><\/dt>\n<dd><p>Probably, and if not it is one filter away. The plugin writes the video URL to its own\n    _epox_video_url field plus a configurable list of third-party keys \u2014 <code>wcgs_video<\/code> and\n    _product_video_url by default. To target a different key, add to the\n    epox_video_meta_keys filter or set the <code>epox_video_meta_keys<\/code> option.<\/p>\n\n<pre><code>wcgs_video is not a guess: it is the exact key \"WooCommerce Gallery Slider\" reads off the\n<\/code><\/pre>\n\n<p>gallery image's own attachment (<code>get_post_meta( $image_id, 'wcgs_video', true )<\/code>), confirmed\nagainst that plugin's real source.<\/p><\/dd>\n<dt id=\"does%20the%20video%20need%20to%20already%20be%20hosted%20somewhere%2C%20or%20can%20epox%20upload%20it%20here%3F\"><h3>Does the video need to already be hosted somewhere, or can Epox upload it here?<\/h3><\/dt>\n<dd><p>Either. Send <code>video_url<\/code> (a string) to point at an already-hosted video \u2014 nothing is\ndownloaded, the URL is written to your gallery plugin's meta as-is. Send <code>video<\/code> (an object\nwith a <code>url<\/code>) to have this plugin import the video file itself into your media library, the\nsame way it imports images, then write <strong>that<\/strong> attachment's own URL as the meta value. The\ntwo are mutually exclusive on one media item.<\/p><\/dd>\n<dt id=\"will%20it%20delete%20my%20own%20product%20photos%3F\"><h3>Will it delete my own product photos?<\/h3><\/dt>\n<dd><p>No. Removal only ever deletes files this plugin imported; anything you uploaded yourself\nis detached from the product but left in your media library.<\/p><\/dd>\n<dt id=\"can%20it%20fetch%20media%20from%20anywhere%20on%20the%20internet%3F\"><h3>Can it fetch media from anywhere on the internet?<\/h3><\/dt>\n<dd><p>Only over HTTPS, and only from public hosts \u2014 WordPress's own URL safety checks apply. To\nrestrict it further to specific hostnames, use the <code>epox_allowed_media_hosts<\/code> filter.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li><code>media-detach<\/code> with <code>delete_files<\/code> now also removes the video file an imported thumbnail\npoints at. Previously only the thumbnail itself was deleted, orphaning the raw video\nattachment in the media library on every video removal.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li><code>media-sync<\/code> items accept a <code>video<\/code> object (in addition to the existing <code>video_url<\/code>\nstring) to import the video file itself into the media library \u2014 not just reference an\nalready-hosted URL \u2014 then write the imported attachment's own URL as the video meta.\nIdempotent and rolled back atomically along with its thumbnail, same as everything else.\nNew <code>video_upload<\/code> capability reported by <code>status<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: <code>status<\/code>, <code>media-sync<\/code> and <code>media-detach<\/code> endpoints, idempotent media\nimport, atomic rollback, video metadata bridging and variation image assignment.<\/li>\n<\/ul>","raw_excerpt":"Companion plugin for Epox. Syncs AI-generated product images and video into WooCommerce in one authenticated call.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/349421","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=349421"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/epoxtech"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=349421"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=349421"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=349421"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=349421"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=349421"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=349421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}