👋 futurefeathers - let’s improve your plugin! Thank you for submitting your plugin, "Order to External API Integration". Before your plugin reaches a human reviewer, our automated tools — which help the team handle around 1,000 plugin reviews per week — have flagged a few potential issues that you may need to address. To avoid delays and help streamline the manual review process, we’ve pended your submission to give you a chance to review and fix these common issues. 🤖 This is an automated message generated using a combination of algorithms and AI. It hasn’t necessarily been reviewed by a human. Its purpose is to help you resolve potential common issues early, before manual review begins. All AI outputs are marked with the emoji ✨ and it's quite accurate. Who are we? We are a group of volunteers who help you identify common issues so that you can make your plugin more secure, compatible, reliable and compliant with the guidelines. For consistency and better communication, your plugin review will be assigned to a single volunteer who will assist you throughout the entire review. However, response times may vary depending on how much time the volunteer is able to contribute to the team and if whether they need to consult something with the rest of the team. The review process A email envelope. Please read this email in full and check each issue, as well as the links to the documentation and the provided examples. Also, search for any other similar occurrences of the same issue that are not explicitly mentioned in the email. Make sure you understand the issues so that you can incorporate them into your existing skillset. A plugin author fixing the issues. If you decide to continue with the review process, you must fix any issues, test your plugin, upload a corrected version and then reply to this email. In case of any doubt, please fix everything else and ask your questions alongside the update. A volunteer reviewing the plugin. Your plugin is manually checked by a volunteer who sends you the remaining identified issues in the plugin. We will be devoting our time to reviewing your plugin, we ask that you honor this by following the instructions. Note: Volunteers are not your QA team. They are here to help you identify and understand issues so that you can improve and maintain your plugin in the future. Fixing the issues is your responsibility. A new review of the plugin. If there are no further issues, the plugin will be approved 🎉 A warning. Be brief and direct in your reply (please, avoid copy-pasting bloated AI responses, our AI is quite brief), be patient and make sure you have addressed all the issues and tested your plugin before responding. It is disheartening to receive an updated plugin only to find that only a few issues have been resolved, or that it causes a fatal error upon activation. When not making adequate progress in your review, it will be delayed and eventually rejected, for the sake of volunteers devoting their time and other plugin authors who correctly follow the review process. Each volunteer can review up to 300 plugins per week, and they love to have life besides reviewing plugins, so please make things easier for us. Understanding the Review Queue When you reply, your plugin enters the review queue again. Fewer review cycles mean quicker approval, while multiple reviews can extend the process to weeks or months. Tip: Carefully fix all issues and test your plugin before resubmitting to speed up approval. This process is designed to help you improve your plugin while making the review experience faster and more efficient for everyone. Have you read the guidelines and this plugin complies with them? Upon submitting your plugin, you agreed and confirmed that it complies with the WordPress.org Plugin Directory Guidelines, which apply to all plugins in the directory. Our automated tools have detected patterns that may require a closer look regarding compliance with certain guidelines. We will verify this during our manual review, but it’s best to address any potential issues beforehand. In particular, please pay attention to the following: Any included code must be GPL-compatible. This means, among others, that the users have to receive the four essential freedoms: (0) to run the program, (1) to study and change the program in source code form, (2) to redistribute exact copies, and (3) to distribute modified versions. (Guidelines 1 & 4) Plugins must not restrict or lock functionality. (Guidelines 1, 5, & 9 — see clarification on SaaS in Guideline 6) Plugins should not hijack the admin dashboard. Upgrade prompts, notices, alerts, and the like must be limited in scope and used with moderation. (Guideline 11) Please check it, and if you think everything is fine, do not worry. Our tools are very thorough and may highlight different things as potential issues. Is the name of this plugin descriptive and distinctive, and does it respect the trademarks and project names of others? Choosing a name for a plugin can be challenging - it needs to be distinctive and meaningful, but also carefully chosen to avoid overlapping with existing plugins or inadvertently use someone else's trademark or project name in a way that could lead to confusion. 📜 General plugin name/slug requirements Plugin names and slugs must not be too generic; they should briefly describe what the plugin does. Plugin names and slugs can be original and unique, even if they don’t describe the functionality directly — as long as they are recognizable and distinctive. Plugin names and slugs must be distinguishable from those of other plugins to avoid confusion. Plugin names and slugs must respect others' trademarks and project names. If your plugin includes a trademark or project name that you do not own, you must clearly mention it in a way that denotes that there is no affiliation. This plugin display name is "Order to External API Integration" and the slug is "order-to-external-api-integration" . We asked a trained AI about common issues with plugin names and it thinks there might be a problem. ✨ The name is generic and descriptive ("Order to External API Integration") and is similar to many existing API-integration plugins. It lacks a distinctive brand or unique term and could be confused with other plugins offering similar functionality. For example, for your plugin: An alternative name may be: ✨ FutureFeathers Order API Integrator for WooCommerce An alternative slug may be: ✨ futurefeathers-order-api-integrator ℹ️ These suggestions were made by the AI. Bear in mind that a skilled human, either you or a volunteer from the Plugin Review Team, may spot issues with the new suggested name. ⚠️ As with the rest of the review, you should address this issue and make any necessary changes. Simply changing the name without first checking what the issue is and how you can solve it won't help most of the time. Failure to address any of the issues raised will result in your submission being rejected for failing to demonstrate the expected level of effort in resolving the issues identified during the review process. ☑️ Steps to resolve this issue Choose a display name and slug that is distinctive, describes your plugin or uses a unique name, while respecting others’ trademarks and project names, (check for further details below) then: Update the display name in both the readme file and plugin headers. Update the slug in your plugin files, for example in the internationalization functions. Reply to this email requesting a new slug reservation. In addition to the changes you have made to your code, we also need to reserve and allocate the new slug that you have chosen for your submission. Upload a new version via the "Add your plugin" page. If you are confident that the new name is suitable, there is no need to wait for confirmation of the new slug reservation. You may see a warning regarding the 'Text Domain', as we haven't changed the slug on our side yet. That's fine. Also, please, don't check just this names, there are other places or resources where you may not use any trademarked (or commonly recognized) terms in a manner that that is likely to cause confusion. This includes (but is not limited to): Your username futurefeathers and your display name. The plugin contributor's username and display name. futurefeathers - futurefeathers The URLs of this plugin. Graphic resources such as this plugin icons and banners. Are you the owner? If there are any issues with the trademark or project name and this is indeed an official plugin, it is likely that we have not been able to identify the current owner of the plugin as the trademark / project owner. Keep in mind, if you were hired as a freelance developer or a consultant specifically to create this plugin, then they must own the plugin. This is for their legal protection as well as yours. They can add you as a committer to the plugin so you can manage it from your account, but the owner must be them, not a temp-employee. In order to solve this, you can do one of the following: Prove that you legally have the right to the original name/slug. Change your user email to an official one or provide us with the user account for an official owner to whom we should transfer the plugin (they can create a new account if they need to) Note: Should you have this plugin approved with the correct name and then go back to infringement of trademarks, we will close your plugin. Please don’t do this, even if you see other people ‘getting away with it.’ We have a lot of plugins and we’re contacting everyone in small batches to be manageable. They won’t get away with it forever, and they risk being banned from the directory. Which no one wants. ℹ️ Tips on choosing a suitable name (and avoiding back-and-forth in this process). Choosing a name for a plugin can be challenging - it needs to be distinctive and meaningful, but also carefully chosen to avoid overlapping with existing plugins or inadvertently use someone else's trademark or project name in a way that could lead to confusion. 🔍️ Avoid Name Similarity Similarity is not only determined by letter-by-letter or word-by-word comparison; similar naming patterns or meanings also come into play. In short, anything that could lead to confusion. You can verify the uniqueness of your plugin name the same way the review team does: Perform a search engine query for the plugin name (Google, DuckDuckGo, Bing, ChatGPT) and parts of it. If you find other plugins with similar names, change your plugin’s name to something more distinctive—perhaps by adding a coined term, your personal brand, or a unique identifier. Go back to step 1 and check again, just in case. Adding a generic word to the name to avoid similarity won't help. ⚖️ Avoid Trademark / Project Names Confusion Identify trademarks and project names mentioned in your plugin name "Order to External API Integration"and the slug "order-to-external-api-integration" . To avoid potential misuse: If a trademark or project name is used at the beginning of your plugin name/slug and you are not the owner, it could imply false affiliation. If the trademark appears elsewhere in the name/slug but is not part of a clear structure indicating unaffiliation, it may still be problematic. Do not use any altered forms of a trademark, such as blend words or portmanteaus. A safer naming pattern is to place the trademark at the end, following a phrase like "for" or "with". 👀 Examples Assuming you are creating a plugin that integrates with WooCommerce and you are not WooCommerce: ❌ "WooCommerce Prices Updater" Trademarks issue as it implies affiliation with WooCommerce. ❌ "Prices Updater WooCommerce" Trademarks issue as it lacks a clear structure indicating no affiliation. ❌ "Prices for WooCommerce" It is too generic. ❌ "PricesPress for WooCommerce" This is considered portmanteau using the WordPress trademark. ❌ "Prices Updater for WooCommerce" Regarding trademarks it avoids indicating affiliation. However, there is a similarity issue, as there are other plugins with similar names. ❌ "Simple Prices Updater for WooCommerce" Similarity issue: Adding a generic word to avoid similarity won't make it sufficiently distinguishable. ✅ "Priconix Sync for WooCommerce" Ok! Original, distinguishable, unique name that is also not in use by others. ✅ "futurefeathers Prices Updater for WooCommerce" Ok! as it includes a unique identifier and clarifies unaffiliation (Ask ChatGPT) Is the description of the plugin alright? Issue in the description During our reviews, we check the functionality of the plugin. We also check that the plugin functionality is sufficiently explained in the readme file and/or through messages that help the user configure and use the plugin. The AI found issues in the description of the plugin. ✨ The readme is detailed but uses promotional wording such as "Perfect for" (the term "Perfect" is discouraged). Additionally, the installation path in the README (/woocommerce-external-api-integration/) does not match the plugin slug, creating an inconsistency. Please check this, and remember that your readme file is expected to give clear instructions on what your plugin does and how to configure and use it. Please also make sure that the functionality of your plugin works properly and that anyone can configure and use it, even if it is installed from scratch. Are you the rightful owner of this plugin? We know this might seem like an odd question — especially coming from an algorithm — but bear with us; it’ll all make sense soon. Here's how it works: If your plugin uses a name or URL associated with a specific entity, we need to confirm that you actually represent that entity. It's that simple. So, how do we verify your identity? In most cases, we rely on the domain in your email address. This situation usually comes up if you're using a personal account to submit a plugin meant to represent a company or if you’re a third party attempting to upload a plugin on someone else’s behalf (please don’t do that). This is what we know about this plugin: Plugin name: "Order to External API Integration" in the readme.txt file Plugin name: "Order to External API Integration" in the order-to-external-api-integration.php file Slug: order-to-external-api-integration Author: Future Feathers Author URI: https://futurefeathers.com Plugin URI: https://futurefeathers.com/order-external-api-integration ⚠️ This URL replies us with a 404 HTTP code, meaning that it does not exists or it is not a public URL. Contributors: futurefeathers This is what we know about you: Username: futurefeathers Email: futurefeathersllp@gmail.com ⚠️ Your email domain "gmail.com" does not seem to be related to any of the URLs, names, trademarks and/or or services declared in the plugin. ⚠️ A gmail.com account cannot be used as a valid form of identification towards clarifying ownership, even if it contains your or your company's name. Anyone can create any gmail.com account that is not already in use. You could be you, but you could also be anyone else. Please note that we carry out these checks to protect people like you. If someone else submitted a plugin under your name or your company's name, you would rightly be upset if we failed to confirm ownership in a demonstrably reliable way. ☑️ You can demonstrate or clarify ownership in one of the following ways: 📩 Update your WordPress.org email address to one under the domain of the entity associated with the plugin. You can change it in Your WordPress.org profile, we cannot change it for you. Note: We will continue the review in this email thread. Any new emails will be sent to the new email account. 👤 Reply asking us to transfer this submission to the correct WordPress.org account. Please, tell us the username. If the owner does not yet have an account, they can create it using an email that is under the domain of the entity associated to the plugin. ⚠️ Do not resubmit this plugin using the new account. I will transfer it for you. Simply reply to this email with the new username. Note: Once the plugin has been approved, you can ask the owner to add you as a committer in the "Advanced" section of the plugin, so that you can commit code using your account. 🛠 Change the plugin’s display name and slug to make it clear that the plugin is not officially affiliated with any other entity. Upload an updated version of your plugin and change the slug via the "Add your plugin" page. Reply to this email clarifying the situation, we know that sometimes you might be using an email account that belongs to the same entity or an entity that owns the other entity. Also, if you already have established plugins in the directory under the same account we can use that as tacit verification. Remember that, if you own other plugins, all the plugins belonging to the same entity should be under the same WordPress.org account. ⚠️ Please do not resubmit this plugin using a different account. Both submissions will be rejected if you do so, and your accounts may be suspended until the situation is resolved. Instead, ask us to change the owner — we can certainly do that. Have you checked for common technical issues? Please ensure that your plugin adheres to best practices, including the following: 🔴 Use Prefixes for declarations, globals and stored data ℹ️ Why it matters: Prefixing avoid naming collisions with other themes, plugins, or WordPress core functions. A prefix is a string placed in front of a name to avoid collisions. It must be at least 4 characters long, feel distinct and unique to the plugin (do not use common words), and be separated by an underscore or dash. Please check the official WordPress docs on avoiding name collisions. 🔍 Identify not prefixed names: Look for any name that is used in a place where it can create a collision. Type of element Affected elements Declarations Functions, classes, etc (if not under a namespace) Globals Global variables, namespaces, define() . Data storage update_option() , set_transient() , update_post_meta() , etc. WordPress declarations add_shortcode() , register_post_type() , add_menu_page() , wp_register_script() , wp_localize_script() , add_action( 'wp_ajax_...' ) , etc. If the defined name for that is not prefixed, that’s a potential issue! 🕵️ 🛠 Fix it: Always prefix those names, for example if your plugin is called "Order to External API Integration" then you could use names like these: function ordetoex_save_post(){ ... } class ORDETOEX_Admin { ... } update_option( 'ordetoex_options', $options ); register_setting( 'ordetoex_settings', 'ordetoex_user_id', ... ); define( 'ORDETOEX_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); global $ordetoex_options; add_action('wp_ajax_ordetoex_save_data', ... ); namespace futurefeathers\ordertoexternalapiintegration; Our tool has automatically detected these common issues, please check your code as there may be more names needing a prefix: # Using the common word "wc" as a prefix. order-to-external-api-integration.php:92 add_action('wp_ajax_wc_external_api_test', array($this, 'ajax_test_api')); order-to-external-api-integration.php:139 register_setting('wc_external_api_settings', 'wc_external_api_enable_logging', array('sanitize_callback' => 'sanitize_text_field', 'default' => '1')); order-to-external-api-integration.php:143 register_setting('wc_external_api_settings', 'wc_external_api_timeout', array('sanitize_callback' => 'absint', 'default' => 30)); order-to-external-api-integration.php:147 register_setting('wc_external_api_settings', 'wc_external_api_retry_attempts', array('sanitize_callback' => 'absint', 'default' => 3)); order-to-external-api-integration.php:151 register_setting('wc_external_api_settings', 'wc_external_api_global_headers', array('sanitize_callback' => 'sanitize_textarea_field', 'default' => '')); order-to-external-api-integration.php:942 update_option('wc_external_api_logs', $logs); order-to-external-api-integration.php:956 update_option('wc_external_api_enable_logging', isset($_POST['wc_external_api_enable_logging']) ? '1' : '0'); order-to-external-api-integration.php:957 update_option('wc_external_api_timeout', isset($_POST['wc_external_api_timeout']) ? intval($_POST['wc_external_api_timeout']) : 30); order-to-external-api-integration.php:958 update_option('wc_external_api_retry_attempts', isset($_POST['wc_external_api_retry_attempts']) ? intval($_POST['wc_external_api_retry_attempts']) : 3); order-to-external-api-integration.php:53 class WC_External_API_Integration 🔴 Use wp_enqueue commands ℹ️ Why it matters: Because of performance and compatibility, please make use of the built in functions for including static and dynamic JS and/or CSS. 🔍 Identify JS and CSS outputs: Look for any