Appearance
Groupon Goods Marketplace
Groupon Goods is an order, stock, catalogue-export, and tracking integration. The source does not create Groupon products through the API: the product command is intentionally disabled and directs operators to an Excel catalogue export followed by Groupon Deal Centre import.
Evidence boundary
This page describes source at commit 42116ebc0ba509bce9cc6651a55ecefd9a5fdb38. Account configuration, Deal Centre acceptance, schedules, and provider readback are not verified here.
Configuration
The service uses separate Commerce Interface and Goods API clients. Keep supplier ids, tokens, client ids, and authorization headers in environment configuration; never copy them into tickets or documentation. The feature-country list controls whether an incoming order is eligible for import.
Commands
| Operation | Command | Important behavior |
|---|---|---|
| Catalogue export | menzzo:groupon:export-catalog [--sku=SKU] [--limit=N] | Writes an Excel file under data/erp/Groupon/catalog for manual Deal Centre import. |
| Product API sync | menzzo:groupon:sync-products | Always prints that product creation is unavailable through the API and exits with status 1. |
| Stock sync | menzzo:groupon:sync-stock [--sku=SKU] [--limit=N] | Reads active mapped products, batches inventory reads/writes, and reports processed/updated/skipped/failed counts. |
| Order import | menzzo:groupon:import-orders [--start=UTC] [--end=UTC] | Uses the import guard, imports configured feature countries, and marks line items exported after successful processing. |
| Tracking push | menzzo:groupon:push-tracking [--limit=N] | Sends shipped-line tracking to the appropriate Groupon endpoint and persists sent keys. |
The --limit and --sku options scope work; they are not dry-run options.
Order import
Orders are fetched from Commerce Interface. The service skips countries outside the configured feature list and deduplicates by Groupon order id plus source. It resolves products through channel/vendor/BOM/SKU fields, preserves quantity, stores the raw order and line-item metadata, and leaves an order unexported when a SKU cannot be resolved so the issue can be corrected and replayed.
Product sync
There is no product API sync in this revision. menzzo:groupon:sync-products is a guard command that returns an error and prints menzzo:groupon:export-catalog. The export contains the catalogue fields needed for Deal Centre, but manual import and provider acceptance are outside Logidav and must be confirmed separately.
Stock sync
The service selects active Groupon-mapped products, requires a Groupon vendor SKU, reads current inventory in batches of 50, and patches inventory in batches of 10. It sends zero when a product is not available or has a negative quantity. Provider errors are logged per SKU and reflected in the command summary.
Tracking
For shipped Groupon sales, the service first uses lineitem_tracking_notification when a fulfillment line-item id exists, then falls back to tracking_notification for a Commerce Interface line-item id. After a successful call it stores sent keys in groupon_tracking_sent to avoid duplicate notifications.
Logs
The source logs order, SKU, line-item, tracking, and API-error context through the Groupon service logger. Command output is a summary, not provider acceptance evidence.
Suggested scheduling boundary
The source proves command behavior but not an approved schedule. If an operator proposes a cron, use only the import, stock, and tracking commands above; do not schedule sync-products. Confirm the Deal Centre export is a manual workflow before adding any catalogue job.
Source locations
src/ErpBundle/Command/Groupon/SyncProductsCommand.php— disabled product API path.src/ErpBundle/Command/Groupon/ExportCatalogCommand.php— Deal Centre Excel export.src/ErpBundle/Services/Groupon/GrouponService.php— import, stock, and tracking logic.