=== FeedPup – XML & CSV Supplier Feed Import & Sync for WooCommerce ===
Contributors: giorgaras
Tags: supplier feed, xml supplier feed, dropshipping xml, stock sync, csv import
Requires at least: 6.3
Tested up to: 7.1
Requires PHP: 8.1
Requires Plugins: woocommerce
WC requires at least: 8.0
WC tested up to: 11.2
Stable tag: 0.1.9
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Import supplier XML & CSV feeds into WooCommerce. FeedPup maps the fields for you, then keeps prices and stock in sync automatically.

== Description ==

= Why FeedPup =

* **Automatic field mapping, no manual column mapping.** FeedPup detects your XML or CSV feed's structure and maps the supplier fields (title, SKU, price, stock, images, EAN, categories) to WooCommerce for you. You just review and confirm.
* **Fast setup.** Connect your store and run your first test import in under 3 minutes. No account to create, no import template, no XPath.
* **Automatic price and stock sync** on a schedule (paid plans), updating only the products FeedPup imported.

**FeedPup imports products from your supplier's XML or CSV feed into WooCommerce and keeps their prices and stock up to date.** Paste the feed URL (or upload a CSV file), check the field matches that Pup, FeedPup's AI-assisted mapper, suggests, preview real products and create a few as drafts. Nothing is imported until you confirm it.

No import templates to build and no XPath. Supplier feeds all use different field names, so FeedPup reads the feed's own structure and shows you what it found, with product examples.

**Try it free:** connect your store, analyse your feed and import up to 100 test products as WooCommerce drafts. No card needed, no time limit.

**Built for** WooCommerce stores that sell products from wholesalers, distributors or dropshipping suppliers who provide an XML or CSV product feed.

= Features =

* **AI-assisted field mapping** – suggested matches for titles, SKUs, prices, stock, images, attributes and categories. You review and confirm every suggestion.
* **Preview and draft test import** – see how products will look, then create up to 100 as drafts before any full import.
* **Simple and variable products** – variations and attributes included.
* **Scheduled price and stock sync** – linked products are updated every 24, 6 or 2 hours, depending on your plan. Runs with no supplier changes make no product writes.
* **Pricing and stock rules (Growth and Pro)** – add a percentage or fixed amount, multiply, or use different percentages by price range; round final prices; keep back a stock buffer.
* **Category mapping (Growth and Pro)** – map supplier categories to your WooCommerce categories.
* **Your existing products stay safe** – FeedPup only creates and updates the products it imported. A duplicate SKU gets a suffix instead of overwriting, and FeedPup never deletes products.
* **Clear run history** – see what was created, updated, unchanged or skipped, and why.
* **Product images** – downloaded into your Media Library on import.
* **Hosted processing** – feeds are downloaded, parsed and scheduled by the FeedPup service, so there is no WP-Cron job and no large file processing on your server. Your store only receives the product changes.
* **Product-only access** – a signed connection that never requests customer, order, checkout or payment data.

FeedPup uses WooCommerce's standard stock quantity. Multi-location inventory extensions are not supported.

= How it works =

FeedPup is a hosted service (SaaS). This plugin connects your store to it securely. There is no separate sign-up: click FeedPup in the admin menu, then Connect to FeedPup, and your store's FeedPup workspace opens already signed in. Once connected, the FeedPup menu item takes you straight back into the app. Use FeedPup > Connection to see the status or disconnect.

= Plans =

Nothing in this plugin is locked. Plans are billed by FeedPup via Stripe, and limits are enforced by the service.

* **Basic (free, no time limit):** 1 feed, analysis, AI-assisted mapping, preview and a test import of up to 100 draft products. No full import or scheduled sync.
* **Starter – €9.99/month:** 1 feed, up to 750 products, sync every 24 hours.
* **Growth – €19.99/month:** up to 3 feeds and 5,000 products, sync every 6 hours, category mapping, pricing and stock rules.
* **Pro – €39.99/month:** up to 10 feeds and 20,000 products, sync every 2 hours, priority support.

Each variation counts as a product. Yearly billing is available. Each paid plan starts with a 14-day free trial, once per store. Enterprise (agencies, multi-store, large catalogs): contact@weareplano.gr.

**Launch offer:** 30% off your first 3 months on any paid plan with code LAUNCH30 at checkout.

== Installation ==

1. Install and activate WooCommerce (8.0 or later).
2. Install and activate FeedPup from Plugins > Add New.
3. Make sure pretty permalinks are on (Settings > Permalinks, any option except "Plain") and your store has a public HTTPS address.
4. Click FeedPup in the WordPress admin menu (right below WooCommerce and Products), read the short data-use note and click Connect to FeedPup.
5. In the FeedPup tab, paste your supplier XML or CSV feed URL (or upload a CSV file) and analyse it.
6. Review the mapping, preview products and run the free draft test import.
7. Choose a paid plan when you are ready for a full import and scheduled sync.

Requirements: WordPress 6.3+, PHP 8.1+, WooCommerce 8.0+, pretty permalinks and a public HTTPS store URL.

== Frequently Asked Questions ==

= I activated FeedPup. Where do I find it? =

Click **FeedPup** in the WordPress admin menu on the left, right below WooCommerce and Products. You can also use the Settings link under FeedPup on the Plugins page.

= How do I import products from a supplier XML or CSV feed? =

Click FeedPup in the admin menu, connect, paste the feed URL (or upload a CSV), confirm the suggested mapping, preview the products and run the free draft test import. On a paid plan, the full import is one click after that.

= Can it update stock and prices automatically? =

Yes, on a paid plan with a feed URL. Scheduled syncs update stock (using WooCommerce's standard stock functions), prices and the other fields you selected: every 24 hours on Starter, 6 hours on Growth and 2 hours on Pro.

= Which feeds work? =

Any supplier XML feed, or CSV/TSV feed (comma, semicolon or tab separated, detected automatically), from a URL. You can also upload a CSV file of up to 5 MB, but an upload is a one-time snapshot, so automatic sync needs a feed URL. No supplier-specific integration is needed. Use the free analysis to check your feed.

= What happens to products already in my store? =

They are not overwritten or deleted. FeedPup creates and updates only the products it imported and linked. If a supplier SKU already exists, the new product gets a unique SKU suffix. FeedPup never deletes WooCommerce products.

= Can I add my margin to supplier prices? =

Yes, on Growth and Pro: a percentage, a fixed amount, a multiplier, or different percentages by price range, with optional rounding. Starter syncs the supplier price as it is.

= What if my feed has more products than my plan allows? =

The full import stops before writing anything and asks you to upgrade, so nothing is partially imported.

= How is FeedPup different from WP All Import? =

WP All Import is a general-purpose importer for many kinds of WordPress content. It runs on your server, and you build the import template yourself. FeedPup only does WooCommerce supplier product feeds: it suggests the mapping, lets you preview and test with drafts, and runs scheduled syncs on its hosted service.

= Is my product data sent to an AI service? =

Only a filtered structural summary of selected feed fields and a few sample values. The full feed or file, the feed URL, your connection secret and payment details are never sent to AI providers. See "External services" below.

= Is FeedPup available in my language? =

The plugin is translation-ready. Translations are delivered as WordPress.org language packs, and you can help at translate.wordpress.org.

= How do I change or cancel a paid plan? =

Open Plans in FeedPup and use the billing controls. Disconnecting the plugin does not cancel a paid subscription.

== Screenshots ==

1. Connect your WooCommerce store to FeedPup from FeedPup in the admin menu.
2. Paste your supplier XML or CSV feed URL, or upload a CSV, and analyse the feed.
3. Review the detected field mapping: title, SKU, price, stock, images, EAN and categories.
4. Preview products as they will arrive in WooCommerce, then import up to 100 test products as drafts.
5. Test import complete: products are created in WooCommerce as drafts; a paid plan imports the full catalog and keeps price and stock in sync.

== External services ==

This plugin connects to the FeedPup hosted service at https://woo.feedpup.weareplano.gr, operated by PLANO (https://weareplano.gr). It is needed to analyse supplier feeds, map fields and run imports and syncs. Nothing is sent until you click Connect to FeedPup on the FeedPup page (FeedPup in the admin menu).

Requests the plugin makes:

* **Connect / Open FeedPup** (POST https://woo.feedpup.weareplano.gr/api/wordpress/connect) – when you click Connect to FeedPup, Open FeedPup, or the FeedPup admin menu item while connected (to sign you in to the app). Sends your site URL, a generated installation ID and a generated connection secret. FeedPup returns a sign-in link to its app.
* **Disconnect** (POST https://woo.feedpup.weareplano.gr/api/wordpress/disconnect) – when you click Disconnect FeedPup, or when you deactivate the plugin while connected. Sends the same three values so FeedPup can revoke access and pause syncing.
* **Image downloads** – when FeedPup imports a product, the plugin downloads its image URLs from the supplier feed (the supplier's servers) into your Media Library.

After connecting, FeedPup calls your store's REST API (`/wp-json/feedpup/v1/commerce`) with signed requests to read the store name, currency, timezone and plugin version, and to create and update products, variations, prices, stock and categories. It never asks for customer, order, checkout or payment data.

FeedPup stores the supplier feed URL (encrypted), any uploaded CSV file as an encrypted snapshot for up to 7 days (then deleted), the connection secret (encrypted), confirmed mappings, sync preferences, product links, sync results and billing state. For AI-assisted field suggestions, FeedPup may send OpenRouter (https://openrouter.ai) and the model provider serving the request a filtered structural summary of selected feed fields and a small number of sample values. It never sends the full XML feed, the feed URL, the connection secret or payment-card details to AI providers. Paid subscriptions are billed through Stripe-hosted checkout (https://stripe.com); FeedPup does not store card numbers.

* FeedPup Terms of service: https://woo.feedpup.weareplano.gr/terms
* FeedPup Privacy policy: https://woo.feedpup.weareplano.gr/privacy
* OpenRouter: https://openrouter.ai/terms and https://openrouter.ai/privacy
* Stripe: https://stripe.com/legal and https://stripe.com/privacy

== Data retention and removal ==

* **Disconnect:** the local connection secret is deleted, FeedPup revokes access and pauses syncing. Feed settings and product links are kept for up to 30 days to allow reconnection, then deleted. Imported products stay in your store.
* **Deactivate:** the plugin asks FeedPup to revoke access and starts the same retention period. If FeedPup cannot be reached, the local secret is still deleted, so no more signed writes are possible.
* **Uninstall:** plugin settings and the local secret are removed. Four small `feedpup_*` tables holding product IDs and keys are kept so a reinstall can recognise linked products instead of duplicating them. If you will never use FeedPup again, you can drop them manually.
* FeedPup never deletes your WooCommerce products, variations, categories, images or orders.
* Disconnecting or uninstalling does not cancel a paid subscription. Cancel it in FeedPup's billing controls first.

== Support ==

Email contact@weareplano.gr with your store address and, if relevant, when the problem happened. Don't email feed URLs that contain credentials.

== Changelog ==

= 0.1.9 =
* Open Dashboard, Feeds, Add feed, Category mapping, Sync history, Plans and Settings directly from the WordPress sidebar through secure app sign-in.
* Keep Connection available for connection status and disconnect controls.

= 0.1.8 =
* The FeedPup app now opens in your WordPress admin language (e.g. Greek).

= 0.1.7 =
* The FeedPup screen now checks for plain permalinks and a non-HTTPS site address before you click Connect, and links straight to the setting to fix.

= 0.1.6 =
* New FeedPup dog-head icon in the WordPress admin menu. It follows your admin colour scheme and stays sharp at menu size.

= 0.1.5 =
* Name: now "FeedPup – XML & CSV Supplier Feed Import & Sync for WooCommerce"; plugin description and admin page say XML & CSV.
* WooCommerce: declares compatibility with High-Performance Order Storage (HPOS) and the Cart & Checkout blocks, so WooCommerce no longer lists FeedPup as incompatible.
* The activation notice is shown once only.
* Connect page: a short line on what happens after you click Connect.
* Readme: clearer description of automatic field mapping and setup time.

= 0.1.4 =
* Easier to find: FeedPup now has its own item in the WordPress admin menu (below WooCommerce and Products), plus a Settings link on the Plugins page, a one-time activation notice and a one-time redirect to the FeedPup page after activation.
* New connect screen: one Connect to FeedPup button. Once connected, the FeedPup menu item opens the app directly, signed in. Status and Disconnect are under FeedPup > Connection.

= 0.1.3 =
* Compatibility: tested with WooCommerce 11.2 and WordPress 7.1.

= 0.1.2 =
* Listing: plugin name and readme updated for clarity.
* Security: signed FeedPup REST requests are now authenticated in the route's permission callback.
* Security: the service address is fixed to the official FeedPup host; the editable service URL setting was removed.
* Stock updates now use WooCommerce's wc_update_product_stock() instead of direct database writes.
* Added Plugin URI and License URI headers.

Older releases: see changelog.txt.

== Upgrade Notice ==

= 0.1.8 =
FeedPup now opens in your WordPress admin language.

= 0.1.7 =
Clearer setup: FeedPup tells you about permalink or HTTPS problems before you connect.

= 0.1.6 =
New FeedPup icon in the admin menu.

= 0.1.5 =
Declares WooCommerce HPOS and Cart & Checkout blocks compatibility (removes the "incompatible plugin" warning) and shows the activation notice only once.

= 0.1.4 =
FeedPup now has its own item in the admin menu, plus a Settings link and an activation notice, so it is easier to find.

= 0.1.3 =
Compatibility update: tested with WooCommerce 11.2 and WordPress 7.1. No functional changes.

= 0.1.2 =
Security hardening of the FeedPup connection and safer stock updates. Recommended for all users.
