Why SemaFeed
Exporting products to Google Merchant Center by hand is work that comes back every time a price or a stock level changes. SemaFeed does it for you — and, more to the point, does it so the feed is accepted.
- Prices match to the cent. They are calculated through VirtueMart's own API, so discounts, tax rules and shopper groups agree with what a visitor sees in the basket. A price mismatch is the most common reason an item gets disapproved.
- The feed never goes live half-written. It is built in a temporary file and moved to the published address only once complete. The previous valid version stays online throughout.
- Works on shared hosting. Generation is chunked, so it runs into neither the time limit nor the memory limit.
- Variants done properly. Colours and sizes are sent individually and tied together by
g:item_group_id. Images and categories are inherited from the parent.
Features
- Several feed profiles side by side — different range, currency or rules
- Mapping of VirtueMart categories to the Google taxonomy, inherited by subcategories
- Google taxonomy import by download or manual file upload
- Attribute mapping: colour, size, material, age group, custom labels
- Price range, category exclusion, in-stock only, products without a category
- Per-product overrides — replace a value or keep the product out of the feed
- Scheduled generation through the Joomla Task Scheduler
- A log of every run with the reason for each skipped product, exportable to CSV
- Generated feed check — missing attributes, duplicate IDs, malformed prices
- Unit pricing — package volume or weight from a custom field or the product name, so Google can show a price per litre (with a coverage preview before you publish)
- Optional gzip compression, unguessable feed URL
Technical specifications
| Joomla | 4.4, 5.x |
| VirtueMart | 4.2 and newer |
| PHP | 8.1 – 8.4 |
| Database | MySQL 8 / MariaDB 10.6+ |
| Feed format | RSS 2.0 with the Google namespace |
| Localisation | Czech, English |
| Licence | GNU GPL v2 or later |
How it works in practice