{"id":374373,"date":"2026-09-24T20:54:18","date_gmt":"2026-09-24T20:54:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/checkout-connector-for-doterra\/"},"modified":"2026-09-24T20:54:06","modified_gmt":"2026-09-24T20:54:06","slug":"zoryna-checkout-connector-doterra","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/zoryna-checkout-connector-doterra\/","author":23570185,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Zoryna Checkout Connector for doTERRA","header_author":"Apollo Software LLC","header_description":"Connects WooCommerce checkout to doTERRA's hosted checkout service, carrying cart lines and crediting the Wellness Advocate. Works with any theme.","assets_banners_color":"","last_updated":"2026-09-24 20:54:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"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":"sergeylipin","date":"2026-09-24 20:54:06","revision":3712003}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[3047,3148,282563,727,286],"plugin_category":[45],"plugin_contributors":[282564],"plugin_business_model":[],"class_list":["post-374373","plugin","type-plugin","status-publish","hentry","plugin_tags-cart","plugin_tags-checkout","plugin_tags-doterra","plugin_tags-redirect","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-sergeylipin","plugin_committers-sergeylipin"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/zoryna-checkout-connector-doterra.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Integrates your WooCommerce store with <a href=\"https:\/\/www.doterra.com\/\">doTERRA<\/a>'s hosted checkout\nservice. WooCommerce continues to run your catalog, product pages, and cart. At checkout,\nthis connector builds a secure doTERRA checkout URL from your settings and the current cart,\nthen routes the customer to that service with every line included and your Wellness Advocate\nID attached.<\/p>\n\n<p>doTERRA's service provides payment, shipping, tax calculation, and fulfillment for those\ncheckouts. Review doTERRA's own terms of use and policies before you use it.<\/p>\n\n<p>WooCommerce 8.0 or newer must be installed and active. The plugin works with any theme.<\/p>\n\n<h4>Checkout connection<\/h4>\n\n<ul>\n<li>Builds the checkout URL from the Advocate ID, market, and related values you enter in\n<strong>WooCommerce &gt; Settings &gt; doTERRA<\/strong>. Those values are never hardcoded, so more than one\nadvocate can use the plugin.<\/li>\n<li>Prefills the United States (<code>US\/en<\/code>, Sales Org <code>USOTG<\/code>) and Canada (<code>CA\/en<\/code>, Sales Org\n  CAOTG). For any other market, choose <strong>Other market<\/strong> and copy the market path, Sales\nOrg, account type, and referral parameter from your own doTERRA referral link.<\/li>\n<li>Merges duplicate cart lines of the same product so quantities are added together.<\/li>\n<li>Blocks the connection instead of sending a broken cart. If a product has no doTERRA\nproduct ID, or if that ID would overwrite a reserved checkout parameter (<code>OwnerID<\/code>,\n  salesOrg, or <code>acctType<\/code>), the customer sees an explanation and nothing is sent.<\/li>\n<li>Warns you in the admin when a published product is missing a doTERRA product ID.<\/li>\n<\/ul>\n\n<h4>WooCommerce storefront adjustments<\/h4>\n\n<ul>\n<li>Hides sale badges. Local list prices are not the totals doTERRA's checkout service will\ncharge.<\/li>\n<li>Notes on the cart total that shipping and tax are calculated by doTERRA's checkout\nservice, and hides the block-cart totals wrapper that would otherwise show local shipping\nestimates.<\/li>\n<li>On activation, turns off WooCommerce coupons, product reviews, and customer\nself-registration at checkout and on My Account. You can turn any of those back on in\nWooCommerce settings. Existing local users can still sign in.<\/li>\n<li>Shortens the cart session to two hours (expiring) and three hours (expired).<\/li>\n<\/ul>\n\n<h4>Integrations<\/h4>\n\n<ul>\n<li><strong>Product import via WooCommerce REST API<\/strong>: create keys under <strong>WooCommerce &gt;\nSettings &gt; Advanced &gt; REST API<\/strong>. Use a Shop Manager or Administrator user with\nRead\/Write for catalogue import (or Read for the connector's market-path endpoint\nonly). Copy the consumer key and secret into your importer. Use HTTPS. The connector\nsettings screen links to that WooCommerce screen.<\/li>\n<li><strong>Read-only market path<\/strong>: <code>GET \/wp-json\/wc-zccd\/v1\/settings<\/code> returns <code>{ \"market_path\":\n\"US\/en\" }<\/code> (or whatever market your store connects to). Authenticate with a WooCommerce\nREST API key whose user can manage WooCommerce. The route cannot change settings.<\/li>\n<\/ul>\n\n<h4>What it does not do<\/h4>\n\n<ul>\n<li>It does not call doTERRA's servers with a background API. It builds an https\n  www.doterra.com checkout URL and routes the customer's browser there.<\/li>\n<li>It does not send telemetry, analytics, or other traffic to the plugin author.<\/li>\n<li>It does not process payment or store customer personal data for the connected checkout.\nIt reads the cart the customer already has in WooCommerce and builds the service URL.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>No data is sent to the plugin author. At checkout, the customer's browser is routed to\ndoTERRA's checkout service with product identifiers, quantities, and your Advocate ID in\nthe URL. doTERRA then completes payment and fulfillment under its own terms and privacy\npolicy.<\/p>\n\n<h4>Independence<\/h4>\n\n<p>This plugin is an independent tool. It is not affiliated with, endorsed by, or sponsored\nby doTERRA. \"doTERRA\" is used only to identify the checkout service the connector works\nwith.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce 8.0 or newer if it is not already active.<\/li>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip through\n<strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>Zoryna Checkout Connector for doTERRA<\/strong>.<\/li>\n<li>Go to <strong>WooCommerce &gt; Settings &gt; doTERRA<\/strong>.<\/li>\n<li>Enter your Advocate ID and choose your market. Listed markets fill in the remaining\nfields. If your market is not listed, choose <strong>Other market<\/strong> and copy the values from\nyour own doTERRA referral link.<\/li>\n<li>Put each product's doTERRA product ID in that product's SKU field.<\/li>\n<\/ol>\n\n<p>If WooCommerce is missing or too old, the plugin shows an admin notice and does not hand\noff checkout.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20does%20the%20customer%20pay%3F\"><h3>Where does the customer pay?<\/h3><\/dt>\n<dd><p>Through doTERRA's hosted checkout service. This connector builds the checkout URL from your\nWooCommerce cart and settings and routes the customer there. You do not need a separate\nlocal payment gateway for those checkouts.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20my%20advocate%20id%3F\"><h3>Where do I find my Advocate ID?<\/h3><\/dt>\n<dd><p>In your doTERRA back office, or in your own referral link \u2014 it is the number after\n    OwnerID=.<\/p><\/dd>\n<dt id=\"which%20markets%20are%20supported%3F\"><h3>Which markets are supported?<\/h3><\/dt>\n<dd><p>Any market. The United States (<code>US\/en<\/code>, Sales Org <code>USOTG<\/code>) and Canada (<code>CA\/en<\/code>, Sales Org\n    CAOTG) come prefilled from working production checkout links. For anything else, choose\n<strong>Other market<\/strong> and enter the market path, Sales Org, account type, and referral\nparameter from your own doTERRA referral link.<\/p><\/dd>\n<dt id=\"why%20are%20some%20fields%20greyed%20out%3F\"><h3>Why are some fields greyed out?<\/h3><\/dt>\n<dd><p>A listed market owns those values. Overwriting them would produce the wrong checkout\naddress. Choose <strong>Other market<\/strong> to enter them yourself.<\/p><\/dd>\n<dt id=\"where%20does%20the%20referral%20parameter%20come%20from%3F\"><h3>Where does the referral parameter come from?<\/h3><\/dt>\n<dd><p>From the advocate link observed for that market: <code>60219088=1<\/code> for the United States,\n    60218439=1 for Canada. If doTERRA has given you a different pair, choose <strong>Other\nmarket<\/strong> and enter it. Leave both boxes empty to send no referral parameter.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20product%20has%20no%20sku%3F\"><h3>What happens if a product has no SKU?<\/h3><\/dt>\n<dd><p>Checkout stops and the customer is shown a message naming the product. An admin notice\nalso names published products that are missing a doTERRA product ID.<\/p><\/dd>\n<dt id=\"a%20product%27s%20sku%20matches%20ownerid%2C%20salesorg%2C%20or%20accttype.%20what%20then%3F\"><h3>A product's SKU matches OwnerID, salesOrg, or acctType. What then?<\/h3><\/dt>\n<dd><p>The handoff is blocked. That collision would overwrite a checkout parameter and\nmisattribute the order. Give the product its real doTERRA product ID.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20theme%3F\"><h3>Does it work with my theme?<\/h3><\/dt>\n<dd><p>Yes. Sale-badge hiding, the shipping note, and the checkout redirect do not depend on a\nparticular theme.<\/p><\/dd>\n<dt id=\"how%20do%20i%20give%20a%20product%20importer%20api%20access%3F\"><h3>How do I give a product importer API access?<\/h3><\/dt>\n<dd><p>Create a WooCommerce REST API key under <strong>WooCommerce &gt; Settings &gt; Advanced &gt; REST API<\/strong>.\nChoose a Shop Manager or Administrator, set <strong>Read\/Write<\/strong> for catalogue import (or\n<strong>Read<\/strong> for the market-path endpoint only), generate the key, and copy the consumer key\nand secret into your importer over HTTPS. The connector settings screen links to that\nWooCommerce page. Delete keys you no longer need from the same list.<\/p><\/dd>\n<dt id=\"can%20another%20system%20read%20my%20connector%20settings%3F\"><h3>Can another system read my connector settings?<\/h3><\/dt>\n<dd><p>It can read one value: the market path, at <code>GET \/wp-json\/wc-zccd\/v1\/settings<\/code>, using a\nWooCommerce REST API key (Read is enough) whose user can manage WooCommerce. On plain\npermalinks use <code>\/?rest_route=\/wc-zccd\/v1\/settings<\/code>. Nothing else is exposed, and nothing\ncan be changed through this route.<\/p><\/dd>\n<dt id=\"can%20a%20developer%20change%20how%20the%20doterra%20product%20id%20is%20resolved%3F\"><h3>Can a developer change how the doTERRA product ID is resolved?<\/h3><\/dt>\n<dd><p>Yes. <code>zccd_product_external_id<\/code> filters the identifier (SKU by default). <code>zccd_redirect_url<\/code>\nfilters the finished https <code>www.doterra.com<\/code> URL; any other host blocks the handoff.\n    zccd_before_redirect fires immediately before the redirect \u2014 handlers must not print\noutput.<\/p><\/dd>\n<dt id=\"what%20is%20removed%20when%20i%20uninstall%3F\"><h3>What is removed when I uninstall?<\/h3><\/dt>\n<dd><p>The connector settings option and the cached product-scan result. WooCommerce REST API\nkeys you created for an importer are not removed; delete those under <strong>WooCommerce &gt;\nSettings &gt; Advanced &gt; REST API<\/strong> if you no longer need them.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Renames the plugin to Zoryna Checkout Connector for doTERRA (slug\n  zoryna-checkout-connector-doterra) with the <code>zccd_<\/code> prefix.<\/li>\n<li>Removes in-plugin Store management API key provisioning; documents native WooCommerce\nREST API keys for product import instead.<\/li>\n<li>Limits connector admin notices to WooCommerce and product screens.<\/li>\n<\/ul>\n\n<h4>1.0.27<\/h4>\n\n<ul>\n<li>Reframes readme and settings copy around connecting WooCommerce to doTERRA's hosted checkout service.<\/li>\n<\/ul>\n\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>Raises Tested up to WordPress 7.1 and drops the manual textdomain load for WordPress.org hosting.<\/li>\n<\/ul>\n\n<h4>1.0.25<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>Updates the plugin readme for the WordPress Plugin Directory.<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li>Keeps management API access inside the WooCommerce settings content area, below Save\nchanges, with spacing so it does not overlap the footer.<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>Places API access below the settings form and its Save changes button, shows only the\nStore URL, and aligns Copy buttons beside their fields.<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>Adds administrator-controlled product import access on the doTERRA settings page, with a\ndedicated Shop Manager account, one-time API credentials, a copyable store URL, and\nregeneration and revocation controls.<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Disables WooCommerce product reviews and customer self-registration at checkout and on\nMy Account when the plugin is activated.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Hides the generated totals wrapper that owns the shipping section's border and padding,\nremoving the orphaned double divider above the cart total.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Hides the named block-cart and block-checkout shipping containers.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Hides local shipping estimates from the block cart because shipping is calculated at\ndoTERRA checkout.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Disables WooCommerce coupons on activation so the local cart does not offer discounts\nthat disappear at doTERRA checkout.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Adds a read-only REST endpoint that returns the market path the store hands off to.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Connects WooCommerce checkout to doTERRA&#039;s hosted checkout service, carrying cart lines and your Advocate ID. Works with any theme.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/374373","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=374373"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sergeylipin"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=374373"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=374373"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=374373"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=374373"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=374373"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=374373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}