{"id":377500,"date":"2026-10-21T19:21:51","date_gmt":"2026-10-21T19:21:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/moradas-portuguese-address-autocomplete-for-woocommerce\/"},"modified":"2026-10-22T11:32:50","modified_gmt":"2026-10-22T11:32:50","slug":"moradas-address-autocomplete","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/moradas-address-autocomplete\/","author":23575945,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.0","stable_tag":"0.3.0","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Moradas \u2014 Portuguese Address Autocomplete for WooCommerce","header_author":"Moradas","header_description":"Address suggestions for Portugal in the WooCommerce checkout (Blocks and classic), with the exact CP7 postal code for the shipping label. Free, no API key.","assets_banners_color":"ffffff","last_updated":"2026-10-22 11:32:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/moradas.dev\/autocomplete-morada-woocommerce","header_author_uri":"https:\/\/moradas.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":104,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.1":{"tag":"0.2.1","author":"moradasdev","date":"2026-10-21 19:21:24","revision":3758963},"0.3.0":{"tag":"0.3.0","author":"moradasdev","date":"2026-10-22 11:32:50","revision":3759782}},"upgrade_notice":{"0.3.0":"<p>Updates the bundled checkout widget to 0.3.0. Nothing to configure.<\/p>","0.2.1":"<p>Fixes a debug notice about translations loading too early.<\/p>","0.2.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3758962,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3758962,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.1","0.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3759782,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3759782,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3759782,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3759782,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3759782,"resolution":"5","location":"assets","locale":"","width":780,"height":1328}},"screenshots":{"1":"Checkout Blocks: one line typed, a list of suggestions with the exact postal code on the right.","2":"After picking a suggestion: address, locality and postal code filled in, every field still editable.","3":"A street with several postal codes: the suggestion asks for the door number; with the number added, the exact CP7 appears.","4":"The same suggestions in the classic shortcode checkout.","5":"On a phone: the suggestion list in the Checkout Blocks."}},"plugin_section":[],"plugin_tags":[17237,46089,201910,3522,13816],"plugin_category":[45,49],"plugin_contributors":[287873],"plugin_business_model":[],"class_list":["post-377500","plugin","type-plugin","status-publish","hentry","plugin_tags-address-autocomplete","plugin_tags-portugal","plugin_tags-postal-code","plugin_tags-postcode","plugin_tags-woocommerce-checkout","plugin_category-ecommerce","plugin_category-maps-and-location","plugin_contributors-moradasdev","plugin_committers-moradasdev"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/moradas-address-autocomplete\/assets\/icon-256x256.png?rev=3758962","icon_2x":"https:\/\/ps.w.org\/moradas-address-autocomplete\/assets\/icon-256x256.png?rev=3758962","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/moradas-address-autocomplete\/assets\/screenshot-1.png?rev=3759782","caption":"Checkout Blocks: one line typed, a list of suggestions with the exact postal code on the right."},{"src":"https:\/\/ps.w.org\/moradas-address-autocomplete\/assets\/screenshot-2.png?rev=3759782","caption":"After picking a suggestion: address, locality and postal code filled in, every field still editable."},{"src":"https:\/\/ps.w.org\/moradas-address-autocomplete\/assets\/screenshot-3.png?rev=3759782","caption":"A street with several postal codes: the suggestion asks for the door number; with the number added, the exact CP7 appears."},{"src":"https:\/\/ps.w.org\/moradas-address-autocomplete\/assets\/screenshot-4.png?rev=3759782","caption":"The same suggestions in the classic shortcode checkout."},{"src":"https:\/\/ps.w.org\/moradas-address-autocomplete\/assets\/screenshot-5.png?rev=3759782","caption":"On a phone: the suggestion list in the Checkout Blocks."}],"raw_content":"<!--section=description-->\n<p>Customers type their address once, in one line, and pick it from a list. The\nplugin fills in the street, the postal locality and the exact seven-digit\nPortuguese postal code (c\u00f3digo postal, CP7): the code carriers need on the\nshipping label, chosen by door number. Moradas is Portuguese for \"addresses\".<\/p>\n\n<p>It is built for stores that ship to Portugal. Missing accents, abbreviations and\nsmall typos are understood (\"av liberdade lisboa 196\" becomes Avenida da\nLiberdade, Lisboa, 1250-147), and a postal code typed on its own fills in the\nstreet and the locality. The service behind the plugin is free and public: no\nAPI key, no account, and the typed text is not stored.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>The customer starts typing in the address field of the checkout: street,\nlocality and door number, all in one line.<\/li>\n<li>Suggestions appear under the field as they type, each with its postal code.\nWhen a street has several postal codes and the door number is still missing,\nthe suggestion says so.<\/li>\n<li>The customer picks one. Street, locality and postal code are filled in, and\nevery field stays editable.<\/li>\n<\/ol>\n\n<h4>What you get in the checkout<\/h4>\n\n<ul>\n<li>One line is enough: \"av liberdade lisboa 196\" resolves to Avenida da Liberdade, Lisboa, 1250-147.<\/li>\n<li>The exact CP7 for the door number, not just a code for the street or the town.<\/li>\n<li>A postal code works as input too: \"1000-098\" fills in Pra\u00e7a do Chile, Lisboa.<\/li>\n<li>Forgiving matching: accents are optional (\"sao joao\"), abbreviations are understood (\"av\" for Avenida), small typos are corrected.<\/li>\n<li>Larger towns are ranked first.<\/li>\n<li>Suggestions only for Portugal: for any other country the checkout is untouched.<\/li>\n<li>On WooCommerce 9.9 and newer the suggestion list is drawn by WooCommerce itself, so it follows your theme.<\/li>\n<li>Nothing is added to the order and no extra fields are created: the plugin fills the standard address, city and postcode fields.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<ul>\n<li>No cookies, no tracking, no account.<\/li>\n<li>While the customer types in the address field, the typed text is sent to the Moradas service at moradas.dev to produce the suggestions (see \"External services\" below). Nothing is sent from any other page, from the WordPress admin, or when the plugin is activated.<\/li>\n<li>No name, e-mail, phone number, order or account data is sent.<\/li>\n<li>The service does not store the typed text; it keeps only hourly aggregate usage counts.<\/li>\n<li>The bundled widget can report errors to the service; in this plugin that option is switched off.<\/li>\n<\/ul>\n\n<h4>Compatibility<\/h4>\n\n<ul>\n<li>Both checkouts: the Checkout Blocks (the default checkout) and the classic shortcode checkout. The plugin registers itself as a WooCommerce address autocomplete provider, so the same suggestions appear in both.<\/li>\n<li>WordPress 6.5 or newer, PHP 7.4 or newer. WooCommerce 9.9 or newer for the block checkout (tested up to 11.2); with older WooCommerce versions the plugin still works in the classic checkout, using its own suggestion list.<\/li>\n<li>Declares compatibility with High-Performance Order Storage (HPOS) and with the Cart and Checkout blocks.<\/li>\n<\/ul>\n\n<h4>Free, no API key<\/h4>\n\n<p>The service at https:\/\/moradas.dev is public and free, including for commercial\nuse. There is no key to paste and no account to create. Fair-use limits are\ndescribed at https:\/\/moradas.dev\/docs. Stores that run their own instance of the\nservice can point the plugin to it under WooCommerce \u2192 Settings \u2192 Advanced \u2192 Moradas.<\/p>\n\n<h4>Portuguese translation included<\/h4>\n\n<p>The plugin's interface text (the settings, the admin notices and the \"enter the\ndoor number\" hint in the checkout) ships with a Portuguese (Portugal)\ntranslation. The suggestions themselves are addresses, so they read the same in\nany language.<\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin connects to the Moradas address API (https:\/\/moradas.dev), a free\npublic service run by the authors of this plugin, to turn what the customer types\ninto address suggestions and into the exact postal code. Without this service the\nplugin has nothing to suggest.<\/p>\n\n<p>When it is used: only on the checkout page and only when the country is Portugal,\nwhile the customer types in the address field, and once more when a suggestion is\npicked. Nothing is sent when the plugin is activated, in the WordPress admin, or\non any other page.<\/p>\n\n<p>What is sent: the text typed in the address field (for example\n\"av liberdade lisboa 196\") and, when a postal code has to be resolved, the\nidentifier of the chosen street together with the door number. No name, e-mail,\nphone number, order or account data is sent. The requests go from the customer's\nbrowser straight to the API, without cookies; like any web request, they include\nthe browser's IP address and user agent. The service does not store the typed\ntext and keeps only hourly aggregate usage counts.<\/p>\n\n<p>Terms of use and usage limits: https:\/\/moradas.dev\/docs\nPrivacy policy: https:\/\/moradas.dev\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Activation switches on WooCommerce \u2192 Settings \u2192 General \u2192 \"Address autocomplete\"\nif your store has never used another address provider. You can turn it off there\nat any time.<\/li>\n<li>That is all. Suggestions are active for addresses in Portugal.<\/li>\n<\/ol>\n\n<p>The API endpoint can be changed under WooCommerce \u2192 Settings \u2192 Advanced \u2192 Moradas,\nfor stores that run their own instance of the service.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20without%20an%20api%20key%20or%20an%20account%3F\"><h3>Does it work without an API key or an account?<\/h3><\/dt>\n<dd><p>Yes. The service at https:\/\/moradas.dev is public and free, including for\ncommercial use. Install, activate, done. Contact: dev@moradas.dev<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20service%20is%20unreachable%3F\"><h3>What happens if the service is unreachable?<\/h3><\/dt>\n<dd><p>The checkout keeps working as a plain form: no suggestions appear and the\ncustomer types the address by hand, exactly as without the plugin. Nothing\nblocks the order.<\/p><\/dd>\n<dt id=\"why%20only%20portugal%3F\"><h3>Why only Portugal?<\/h3><\/dt>\n<dd><p>The service covers Portuguese addresses (moradas) and their seven-digit postal\ncodes, nothing else. Suggestions appear only when the selected country is\nPortugal; for every other country the checkout is untouched.<\/p><\/dd>\n<dt id=\"how%20does%20it%20find%20the%20exact%20postal%20code%20from%20the%20door%20number%3F\"><h3>How does it find the exact postal code from the door number?<\/h3><\/dt>\n<dd><p>In Portugal a street is often split into several postal codes, each covering a\nrange of door numbers. The service keeps these ranges, so as soon as the door\nnumber is in the address line it picks the code that matches. Until the number\nis known, the suggestion says \"enter the door number\" and the postal code stays\nempty; the moment the customer adds the number, the exact CP7 is offered.<\/p><\/dd>\n<dt id=\"what%20about%20the%20gdpr%3F\"><h3>What about the GDPR?<\/h3><\/dt>\n<dd><p>The personal data involved is the address text the customer types, which is\nsent to the service to produce suggestions, together with the technical data of\nany web request (IP address, user agent). No name, e-mail, phone number, order\nor account data is sent, no cookies are set, and the service does not store the\ntyped text. If your privacy policy lists the services your checkout talks to,\nadd Moradas and link to https:\/\/moradas.dev\/privacy.<\/p><\/dd>\n<dt id=\"how%20do%20i%20switch%20it%20off%3F\"><h3>How do I switch it off?<\/h3><\/dt>\n<dd><p>Deactivate the plugin: it puts the WooCommerce \"Address autocomplete\" setting\nback the way it was. To pause suggestions without deactivating, turn off\nWooCommerce \u2192 Settings \u2192 General \u2192 \"Address autocomplete\".<\/p><\/dd>\n<dt id=\"a%20street%20or%20locality%20is%20missing%20or%20wrong.%20how%20do%20i%20report%20it%3F\"><h3>A street or locality is missing or wrong. How do I report it?<\/h3><\/dt>\n<dd><p>Write to dev@moradas.dev with the address as the customer would write it and,\nif you know it, the postal code. The data behind the service is refreshed\nregularly, and reports are checked against the next refresh.<\/p><\/dd>\n<dt id=\"is%20there%20a%20version%20for%20prestashop%20or%20other%20platforms%3F\"><h3>Is there a version for PrestaShop or other platforms?<\/h3><\/dt>\n<dd><p>Yes. The same service has a PrestaShop module, a JavaScript widget for any\naddress form and an API for custom integrations. See https:\/\/moradas.dev\/docs.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>The bundled address widget (used on the classic checkout when WooCommerce is older\nthan 9.9) is now version 0.3.0. A reply from the service that is not in the expected\nformat is handled like a network error: the \"service temporarily unavailable\" message\nis shown and the checkout keeps working as a plain form.<\/li>\n<li>Widget 0.3.0 can send anonymous error reports to the service; in this plugin that\noption is switched off, so the plugin still makes no requests of its own (see\n\"External services\").<\/li>\n<li>The example address in this readme now matches what the service returns.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Fix: no more \"translation loading was triggered too early\" notice with WP_DEBUG on.<\/li>\n<li>If WooCommerce is not active, the plugin shows a notice and stays idle.<\/li>\n<li>Admin notices appear only where they are relevant: the Plugins screen, the Dashboard\n(missing WooCommerce) and the WooCommerce settings.<\/li>\n<li>Interface text is now in English, with a Portuguese (Portugal) translation included.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Works in both the Checkout Blocks and the classic checkout through the official\nWooCommerce address autocomplete provider API (WooCommerce 9.9+).<\/li>\n<li>Suggestions show the postal code, or ask for the door number when the street\nhas more than one.<\/li>\n<li>Activation switches on the WooCommerce \"Address autocomplete\" setting when no\nother address provider is present; deactivation puts it back.<\/li>\n<li>Declares compatibility with HPOS and with the Cart\/Checkout blocks.<\/li>\n<\/ul>","raw_excerpt":"Address autocomplete for Portugal in the WooCommerce checkout: street, locality and the exact seven-digit postal code (CP7). Free, no API key.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/377500","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=377500"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/moradasdev"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=377500"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=377500"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=377500"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=377500"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=377500"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=377500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}