{"id":179820,"date":"2024-04-23T18:56:37","date_gmt":"2024-04-23T18:56:37","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/automatic-ffl-for-woocommerce\/"},"modified":"2026-08-26T20:56:51","modified_gmt":"2026-08-26T20:56:51","slug":"automatic-ffl-for-wc","status":"publish","type":"plugin","link":"https:\/\/bg.wordpress.org\/plugins\/automatic-ffl-for-wc\/","author":21049873,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.27","stable_tag":"1.0.27","tested":"6.9.7","requires":"5.6","requires_php":"7.0","requires_plugins":null,"header_name":"Automatic FFL for WooCommerce","header_author":"Refactored Group","header_description":"The official Automatic FFL for WooCommerce plugin","assets_banners_color":"6b231f","last_updated":"2026-08-26 20:56:51","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"http:\/\/refactored.group\/ffl\/woocommerce\/","header_author_uri":"http:\/\/refactored.group","rating":5,"author_block_rating":0,"active_installs":10,"downloads":4159,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.10":{"tag":"1.0.10","author":"refactoredgroup","date":"2025-04-15 22:21:14","revision":3273973},"1.0.11":{"tag":"1.0.11","author":"refactoredgroup","date":"2025-11-03 16:05:15","revision":3389003},"1.0.12":{"tag":"1.0.12","author":"refactoredgroup","date":"2025-12-15 18:28:06","revision":3420438},"1.0.14":{"tag":"1.0.14","author":"refactoredgroup","date":"2026-02-10 17:37:27","revision":3458299},"1.0.15":{"tag":"1.0.15","author":"refactoredgroup","date":"2026-02-13 21:00:42","revision":3461065},"1.0.16":{"tag":"1.0.16","author":"refactoredgroup","date":"2026-04-08 23:44:10","revision":3502036},"1.0.17":{"tag":"1.0.17","author":"refactoredgroup","date":"2026-04-09 16:34:24","revision":3502667},"1.0.19":{"tag":"1.0.19","author":"refactoredgroup","date":"2026-07-23 03:27:19","revision":3619364},"1.0.26":{"tag":"1.0.26","author":"refactoredgroup","date":"2026-08-12 21:17:34","revision":3644004},"1.0.27":{"tag":"1.0.27","author":"refactoredgroup","date":"2026-08-26 20:56:51","revision":3667791},"1.0.5":{"tag":"1.0.5","author":"refactoredgroup","date":"2024-04-26 15:22:20","revision":3077721},"1.0.6":{"tag":"1.0.6","author":"refactoredgroup","date":"2024-09-24 19:15:58","revision":3157115},"1.0.7":{"tag":"1.0.7","author":"refactoredgroup","date":"2024-11-15 20:30:42","revision":3189821},"1.0.8":{"tag":"1.0.8","author":"refactoredgroup","date":"2024-11-19 22:38:32","revision":3192676}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3076032,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3076032,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3076032,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.10","1.0.11","1.0.12","1.0.14","1.0.15","1.0.16","1.0.17","1.0.19","1.0.26","1.0.27","1.0.5","1.0.6","1.0.7","1.0.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3076032,"resolution":"1","location":"assets","locale":"","width":3840,"height":1818},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3461074,"resolution":"2","location":"assets","locale":"","width":2756,"height":1310},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3076032,"resolution":"3","location":"assets","locale":"","width":3840,"height":1818},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3461074,"resolution":"4","location":"assets","locale":"","width":3840,"height":1818},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3461074,"resolution":"5","location":"assets","locale":"","width":3840,"height":1782},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3461074,"resolution":"6","location":"assets","locale":"","width":3840,"height":1818},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3461074,"resolution":"7","location":"assets","locale":"","width":3840,"height":1784},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3461074,"resolution":"8","location":"assets","locale":"","width":3840,"height":1818}},"screenshots":{"1":"Customers with a firearm in their cart must choose an FFL location for shipment.","2":"Automatic FFL Locator map.","3":"Automatic FFL address selected.","4":"Automatic FFL admin homepage.","5":"Automatic FFL Dealer Management Page.","6":"FFL Fees and Business Hours config.","7":"Bulk enable\/prefer FFL locations.","8":"Allow us to automatically enable new Type 1 &amp; 2 FFL dealers or take full control."}},"plugin_section":[],"plugin_tags":[198683,3148,182389,198681,286],"plugin_category":[45],"plugin_contributors":[227017],"plugin_business_model":[],"class_list":["post-179820","plugin","type-plugin","status-publish","hentry","plugin_tags-ammunition","plugin_tags-checkout","plugin_tags-ffl","plugin_tags-firearms","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-refactoredgroup","plugin_committers-refactoredgroup"],"banners":{"banner":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/banner-772x250.png?rev=3076032","banner_2x":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/banner-1544x500.png?rev=3076032","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/icon-256x256.png?rev=3076032","icon_2x":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/icon-256x256.png?rev=3076032","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/screenshot-1.png?rev=3076032","caption":"Customers with a firearm in their cart must choose an FFL location for shipment."},{"src":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/screenshot-2.png?rev=3461074","caption":"Automatic FFL Locator map."},{"src":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/screenshot-3.png?rev=3076032","caption":"Automatic FFL address selected."},{"src":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/screenshot-4.png?rev=3461074","caption":"Automatic FFL admin homepage."},{"src":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/screenshot-5.png?rev=3461074","caption":"Automatic FFL Dealer Management Page."},{"src":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/screenshot-6.png?rev=3461074","caption":"FFL Fees and Business Hours config."},{"src":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/screenshot-7.png?rev=3461074","caption":"Bulk enable\/prefer FFL locations."},{"src":"https:\/\/ps.w.org\/automatic-ffl-for-wc\/assets\/screenshot-8.png?rev=3461074","caption":"Allow us to automatically enable new Type 1 &amp; 2 FFL dealers or take full control."}],"raw_content":"<!--section=description-->\n<p>Selling firearms or ammunition through WooCommerce? Federal law requires those products to ship to a licensed FFL dealer \u2014 not directly to your customer. Automatic FFL adds an interactive dealer map to your checkout (classic and block-based), automatically detects FFL-required products in the cart, enforces state-level ammunition restrictions, and pulls dealer data daily from the ATF. Install in 5 minutes. 30-day free trial.<\/p>\n\n<h4>Why store owners choose Automatic FFL<\/h4>\n\n<ul>\n<li><strong>5-minute install, no developer needed<\/strong> \u2014 install the plugin, paste your store key, and you're live.<\/li>\n<li><strong>Interactive Google Maps dealer locator<\/strong> \u2014 customers search by ZIP or address and pick a dealer in seconds, right inside checkout.<\/li>\n<li><strong>FFL popularity indicators on the map<\/strong> \u2014 buyers see which dealers are most-used by other shoppers, reducing decision friction at checkout.<\/li>\n<li><strong>FFL certificate network<\/strong> \u2014 when a customer ships to an in-network FFL, that dealer's license certificate is automatically attached to your order. No more chasing paperwork by email.<\/li>\n<li><strong>ATF-validated dealer database<\/strong> \u2014 refreshed daily from the Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF). You're never serving stale data.<\/li>\n<li><strong>Full block-based checkout support<\/strong> \u2014 works with both the new WooCommerce Blocks checkout and the classic checkout, with the same dealer selection experience.<\/li>\n<li><strong>Automatic FFL detection<\/strong> \u2014 analyzes the cart automatically and triggers FFL selection only when needed.<\/li>\n<li><strong>Mixed cart handling with save-and-restore<\/strong> \u2014 when a cart contains both FFL-required and non-FFL items, customers can save either group, complete the FFL order, and have their saved items automatically restored to the cart.<\/li>\n<li><strong>State-level ammunition restrictions<\/strong> \u2014 automatically enforces ammunition shipping rules per state. When a customer's state requires an FFL transfer for ammo, the dealer selector triggers automatically \u2014 even without a firearm in the cart.<\/li>\n<li><strong>Category-level AND product-level FFL marking<\/strong> \u2014 flag entire product categories as FFL-required, or mark individual SKUs. Granular control without manual tagging.<\/li>\n<li><strong>Dealer customization<\/strong> \u2014 promote in-network or preferred dealers, set transfer fees, add business hours, and control which dealers appear to your customers.<\/li>\n<li><strong>Same-day customer support<\/strong> \u2014 real humans who know firearms compliance and WooCommerce.<\/li>\n<\/ul>\n\n<h4>Pricing<\/h4>\n\n<p>Automatic FFL starts at <strong>$99\/month with a 30-day free trial<\/strong>. Annual billing is available by request for <strong>$1,079\/year<\/strong>. Firearms + Ammo coverage is <strong>$164\/month or $1,776\/year<\/strong>. Cancel anytime.<\/p>\n\n<p>Also available for BigCommerce and Magento \u2014 visit <a href=\"https:\/\/www.automaticffl.com\/\">automaticffl.com<\/a> for details.<\/p>\n\n<h4>Live demo<\/h4>\n\n<p>Try the checkout experience yourself: <a href=\"https:\/\/woo80.demos.automaticffl.com\/shop\/\">woo80.demos.automaticffl.com\/shop\/<\/a><\/p>\n\n<h3>External services<\/h3>\n\n<p><strong>Google Maps:<\/strong> used to create the map experience during the checkout<\/p>\n\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/maps\/\">Google Maps<\/a><\/li>\n<li><a href=\"https:\/\/cloud.google.com\/maps-platform\/terms\">Terms of service<\/a><\/li>\n<\/ul>\n\n<p><strong>AutomaticFFL:<\/strong> provides FFL dealer data, an interactive map experience, and product restrictions<\/p>\n\n<p>Order certificate files selected by a store manager are uploaded to AutomaticFFL-managed Google Cloud Storage and processed by AutomaticFFL so a valid matching certificate can be attached to the WooCommerce order.<\/p>\n\n<p>When an order using a selected FFL dealer is placed, the plugin sends the WooCommerce order ID, canonical dealer ID, FFL license, and order creation time to Automatic FFL for aggregate order attribution. Buyer information is not sent for this reporting.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/www.automaticffl.com\/\">AutomaticFFL<\/a><\/li>\n<li><a href=\"https:\/\/www.automaticffl.com\/privacy-policy\/\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h3>Support and Documentation<\/h3>\n\n<p>For support, inquiries, or documentation, please visit <a href=\"https:\/\/automaticffl.com\/\">https:\/\/automaticffl.com\/<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin through the WordPress plugin directory, or upload the plugin files to <code>\/wp-content\/plugins\/automaticffl-for-woocommerce\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Sign up for a free trial at <a href=\"https:\/\/www.automaticffl.com\/\">automaticffl.com<\/a> to get your store key.<\/li>\n<li>In WordPress admin, go to <strong>WooCommerce &gt; Settings &gt; Automatic FFL<\/strong> and paste your store key.<\/li>\n<li>Mark FFL-required products by editing them and checking the <strong>FFL Required<\/strong> product type option, or mark entire product categories.<\/li>\n<li>Test your checkout \u2014 when an FFL product is in the cart, the dealer selector will appear automatically.<\/li>\n<\/ol>\n\n<p>For the full setup guide, visit <a href=\"https:\/\/www.automaticffl.com\/installation\/woocommerce\/\">automaticffl.com\/installation\/woocommerce\/<\/a>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20the%20new%20woocommerce%20block-based%20checkout%3F\"><h3>Does this work with the new WooCommerce block-based checkout?<\/h3><\/dt>\n<dd><p>Yes. Automatic FFL fully supports both the classic WooCommerce checkout and the newer block-based (WooCommerce Blocks) checkout. The dealer selection experience is identical in both.<\/p><\/dd>\n<dt id=\"how%20is%20your%20ffl%20dealer%20database%20kept%20current%3F\"><h3>How is your FFL dealer database kept current?<\/h3><\/dt>\n<dd><p>We pull updated dealer records daily from the ATF (Bureau of Alcohol, Tobacco, Firearms and Explosives). When dealers change status, addresses, or licenses, your store reflects it within 24 hours.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20developer%20to%20install%20this%3F\"><h3>Do I need a developer to install this?<\/h3><\/dt>\n<dd><p>No. Install the plugin from WordPress.org, paste your store key in the settings, and you're ready to go. Most stores are live in under 5 minutes.<\/p><\/dd>\n<dt id=\"how%20does%20state-level%20ammunition%20compliance%20work%3F\"><h3>How does state-level ammunition compliance work?<\/h3><\/dt>\n<dd><p>Automatic FFL knows which states require ammunition to ship through an FFL dealer. When a customer in one of those states adds ammo to their cart, the dealer selector triggers automatically \u2014 even if there's no firearm in the cart.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20customer%27s%20cart%20has%20both%20firearms%20and%20non-firearm%20items%3F\"><h3>What happens when a customer's cart has both firearms and non-firearm items?<\/h3><\/dt>\n<dd><p>Customers can save either group for later. They complete the FFL-required order, and their saved items are automatically restored to the cart so they can finish a separate order. You don't lose the sale.<\/p><\/dd>\n<dt id=\"what%20is%20the%20ffl%20certificate%20network%3F\"><h3>What is the FFL certificate network?<\/h3><\/dt>\n<dd><p>When a customer chooses to ship to an in-network FFL dealer, that dealer's license certificate is automatically attached to your order. You don't have to email or fax dealers asking for paperwork \u2014 it's already on the order.<\/p><\/dd>\n<dt id=\"is%20there%20a%20free%20trial%3F\"><h3>Is there a free trial?<\/h3><\/dt>\n<dd><p>Yes. Automatic FFL starts at $99\/month with a 30-day free trial. Annual billing is available by request for $1,079\/year; Firearms + Ammo is $164\/month or $1,776\/year.<\/p><\/dd>\n<dt id=\"do%20you%20support%20bigcommerce%20or%20magento%3F\"><h3>Do you support BigCommerce or Magento?<\/h3><\/dt>\n<dd><p>Yes. Automatic FFL is also available as a BigCommerce app and Magento extension. Visit <a href=\"https:\/\/www.automaticffl.com\/\">automaticffl.com<\/a> for details.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.27<\/h4>\n\n<ul>\n<li>Preserves the selected Automatic FFL dealer ID on Classic and Blocks orders.<\/li>\n<li>Reports successfully placed FFL orders asynchronously with bounded retries.<\/li>\n<li>Keeps payment, status, cancellation, refund, and customer data outside order attribution.<\/li>\n<li>Aligns the documented minimum requirements with WordPress 5.6 and PHP 7.0.<\/li>\n<\/ul>\n\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>Reworded the missing-certificate banner around saving time on this order and future orders.<\/li>\n<li>Clarified support for multiple PDFs, images, and ZIP files.<\/li>\n<\/ul>\n\n<h4>1.0.25<\/h4>\n\n<ul>\n<li>Added a prominent, non-dismissible banner to eligible orders that are missing an FFL certificate.<\/li>\n<li>Kept the existing shipping-address upload action as a secondary option.<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>Added a secure missing-certificate upload action to eligible WooCommerce orders.<\/li>\n<li>Automatically attaches a valid matching certificate after server-side processing without changing order status or notifying the customer.<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>Fixed classic checkout layouts where the FFL firearm notice could wrap between floated shipping first\/last name fields.<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Preserves customer billing while shipping FFL orders to the selected dealer when WooCommerce is configured to ship only to billing addresses.<\/li>\n<li>Uses the selected FFL dealer destination for classic checkout shipping-rate calculations.<\/li>\n<li>Passes the full selected dealer address through WooCommerce Blocks Store API extension data and applies it server-side.<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>Refactored WooCommerce Blocks dealer selection to use the documented child-block API. Drops React portal targeting and CSS hiding of WooCommerce internal classes.<\/li>\n<li>Fixes the ammo-only restricted-state bug where the FFL dealer prompt rendered at the bottom of checkout instead of inside the shipping address section.<\/li>\n<li>Hides non-name shipping address fields when a dealer is selected (uses CSS :has() against standard form name attributes \u2014 no internal WC class targeting).<\/li>\n<li>On dealer pick, restores the customer's original address to billing and unchecks \"use shipping as billing\" so billing is never the FFL dealer.<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>Links are now clickable in order comments<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>Added save-for-later functionality for mixed carts containing both FFL and non-FFL items<\/li>\n<li>Added ammunition detection and state-based shipping restrictions<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Added WooCommerce Blocks (block-based checkout) support for FFL dealer selection<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Upgraded to new iframe-based dealer map for improved performance and reliability<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Replaced FontAwesome icons with SVGs for better theme compatibility (fixes issues with Divi theme and other themes that remove FontAwesome)<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Fixes redirect loop on cart page when WooCommerce payments is also installed<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Tested with latest WordPress<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Updated tested up to version<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Fixes bug where customers couldn't ship normal products to a different place than the billing address<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Adds shipping calculation trigger upon dealer selection<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>CSS updates for checkout<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Updates for Wordpress standards<\/li>\n<\/ul>","raw_excerpt":"Sell firearms on WooCommerce? Add FFL dealer selection to checkout with an interactive map. ATF-validated, block checkout ready.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/179820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=179820"}],"author":[{"embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/refactoredgroup"}],"wp:attachment":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=179820"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=179820"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=179820"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=179820"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=179820"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=179820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}