Tutto ciò che fa Price Bulk Editor — nel dettaglio.
Costruito intorno a quattro garanzie: vedi l'anteprima prima di confermare, puoi sempre fare rollback, vedi l'avanzamento in tempo reale e le tue regole di filtro sono abbastanza precise da escludere esattamente ciò che ti serve.
Simula ogni operazione prima di confermare.
Il disastro più comune con un editor in massa è confermare un'operazione che tocca più SKU di quanti ti aspettassi. La simulazione mostra il risultato completo senza toccare Shopify: quali prodotti corrispondono al filtro, quali varianti cambierebbero, quale sarebbe il nuovo prezzo e quali elementi non supererebbero la validazione.
- ✓ Diff affiancato vecchio → nuovo per variante
- ✓ Avvisi di validazione (prezzo negativo, compare-at mancante, ecc.)
- ✓ Conteggio SKU + stima della variazione totale di fatturato
- ✓ Esportabile in CSV per l'approvazione degli stakeholder
filter: tag=summer-sale AND vendor=Outdoor matched: 2,481 SKUs across 412 products action: −25% off compare-at, floor $9.99 variant was now Δ SUM-TEE-S $39.00 $29.25 −$9.75 SUM-TEE-M $39.00 $29.25 −$9.75 SUM-CAP-OS $24.00 $18.00 −$6.00 … 2,478 more rows WARNINGS (3): SUM-LEGGINGS-XL — would price below floor; skipped SUM-PACK-A — missing compare-at; skipped SUM-SOCKS-L — currently archived; skipped estimated revenue delta over 7 days: −$48,210
Every dry-run runs the same eight rule checks the executor runs at commit time — except no products get touched. Each warning carries a severity so you know what's catastrophic vs. just worth noticing.
- ● Price below cost. The new price is under the Shopify cost-per-item. Margin would turn negative.
- ● Price goes negative. The action produces a negative price. Hard reject.
- ● Sign error suspected. The median delta contradicts the action sign (e.g. you said "decrease" but the math goes up). Often a missing minus sign.
- ● Missing compare-at. You asked for percent off compare-at, but the variant has none. Skipped.
- ● Archived product. The product is archived on Shopify. Skipped — you probably didn't mean to discount it.
- ● Variant without cost. Margin pricing rule, but the variant has no cost on Shopify. Skipped.
- ● Price outlier. The new price is more than two standard deviations from the median. Worth a second look.
- ● Low inventory. The variant has fewer than five units in stock. Informational — you may not want to feature it.
- 2026-06-14 09:00 creata snapshot di 2.481 varianti
- 2026-06-14 09:01 applica −25% su compare-at, 2.478 riuscite, 3 saltate
- 2026-06-21 23:59 rollback snapshot riprodotto, 2.478/2.478 ripristinate
Rollback basato su snapshot che si completa davvero.
Prima che qualsiasi operazione venga eseguita, registriamo il prezzo precedente e il prezzo compare-at di ogni variante interessata. Il rollback riproduce quello snapshot — non è una matematica del tipo «applica la percentuale inversa», che accumula errori di arrotondamento e non riesce a recuperare le modifiche esterne fatte durante i saldi.
- ✓ Ripristino esatto per variante, compare-at incluso
- ✓ Idempotente — sicuro al riavvio se Shopify limita le richieste
- ✓ Riavviabile se interrotto a metà rollback
- ✓ Snapshot per market ripristinati in modo indipendente
Importazione CSV per prezzi arbitrari per SKU.
Quando la logica di prezzo non rientra in una regola (prezzi a contratto da un grossista, lista di liquidazione una tantum dall'ufficio finance), carica un CSV con i tuoi SKU e il nuovo prezzo assoluto. Si applica lo stesso flusso di simulazione + rollback.
- ✓ Colonne:
sku(consigliato) ovariant_id, piùnew_price. Facoltativa:new_compare_at_price. - ✓ Fino a 5.000 righe per file
- ✓ Validazione della simulazione riga per riga prima della conferma
- ✓ Il log di audit conserva il CSV originale
sku,new_price,new_compare_at_price SUM-TEE-S,29.25,39.00 SUM-TEE-M,29.25,39.00 SUM-CAP-OS,18.00,24.00 SUM-PACK-A,49.00,69.00 SUM-HOODIE-L,54.00, … up to 5,000 rows per file
Filtri per tag, collezione e attributo.
Filtra il catalogo usando qualsiasi combinazione di tag, collezione, vendor, tipo di prodotto, fascia di prezzo o livello di inventario. I filtri per variante aggiungono pattern di SKU e valori delle opzioni.
A livello di prodotto
- tag = "summer-sale"
- collection ∈ "Outdoor", "Hiking"
- vendor != "Discontinued"
- price BETWEEN $20 AND $80
A livello di variante
- sku STARTS_WITH "SUM-"
- option.size IN "S", "M"
- inventory_quantity > 0
- compare_at IS NOT NULL
Esclusione
- NOT tag = "new-arrival"
- NOT sku IN [carica lista]
- NOT vendor = "Brand X"
- NOT product_type = "Gift Card"
Pricing per market con Shopify Markets.
Applica un prezzo diverso, una percentuale di sconto o una regola di arrotondamento per ciascun market. Imposta prezzi assoluti per gli Stati Uniti, una percentuale di sconto sulla base UE e una regola di arrotondamento a .95 per la Svizzera — il tutto in un'unica operazione. Lo stato precedente di ogni market viene salvato come snapshot in modo indipendente.
| Market | Regola | Arrotondamento | Minimo |
|---|---|---|---|
| US | −25% su compare-at | .99 | $9.99 |
| EU | −20% sulla base | .00 | €10.00 |
| CH | CHF fisso | .95 | CHF 14.95 |
| UK | −25% su compare-at | .99 | £8.99 |
Regole ricorrenti — definiscile una volta, girano per sempre.
Flash Friday ogni settimana, liquidazione mensile il primo del mese, rollback automatico a fine stagione il 22 settembre. Ogni esecuzione crea uno snapshot nuovo, quindi ogni ricorrenza è reversibile in modo indipendente.
Flash Friday alle 09:00 CET
Ogni venerdì alle 09:00, applica −20% al tag «flash-friday». Rollback automatico alle 23:59 di domenica. Ruota con gli SKU attualmente taggati.
Liquidazione di fine mese
L'ultimo giorno di ogni mese, imposta i prezzi a costo × 1,1 per le scorte con più di 90 giorni di giacenza. Rollback il lunedì successivo.
Cronologia completa di ogni modifica, esportabile in CSV.
Ogni azione — operazione creata, simulazione ispezionata, conferma, rollback, ricorrenza attivata — viene registrata con utente, timestamp, IP e payload completo. Filtra per data, utente o SKU interessato; esporta in CSV per finance, richieste GDPR sui dati o audit interni.
Conservazione: da 30 giorni sul piano Free fino a 5 anni sul piano Scale, in base al piano.
2026-06-14T09:00Z marie@store.com task.create "Summer Sale 25%" 2026-06-14T09:00Z marie@store.com task.dry_run matched=2481 2026-06-14T09:01Z marie@store.com task.commit succeeded=2478 skipped=3 2026-06-14T09:18Z system task.complete duration=1041s 2026-06-21T23:59Z system task.rollback restored=2478 of 2478 2026-06-22T08:14Z cfo@store.com audit.export period=2026-06 format=csv
Pricing basato su margine e costo.
Imposta il prezzo come costo × moltiplicatore, punta a una percentuale di margine fissa o applica un markup a fasce per fascia di prezzo. Combina con regole di arrotondamento (sempre .99, sempre .95, ecc.) e soglie minime di margine.
- ✓ Recupera il costo da Shopify Inventory cost-per-item
- ✓ Soglia minima di margine (ad esempio sempre ≥ 40%)
- ✓ Fasce per fascia di prezzo (markup 1,4× sotto $20, 1,6× sopra)
| SKU | Costo | Regola | Nuovo prezzo | Margine |
|---|---|---|---|---|
| SUM-TEE-S | $11.20 | ×1.6 → .99 | $17.99 | 37.7% |
| SUM-CAP-OS | $5.40 | ×1.8 → .99 | $9.99 | 46.0% |
| SUM-PACK-A | $22.50 | ×1.4 → .99 | $31.99 | 29.7% |
| SUM-JKT-L | $48.00 | ×1.4, min 35% | $73.99 | 35.1% |
Catch the manual edit that broke your sale.
Once a campaign is live, anything else that touches a product price — a teammate fixing a typo, an inventory-sync app, a Shopify Flow rule — silently drifts the catalog away from the snapshot the rollback expects. We listen on the Shopify products/update webhook and surface every drift as an alert with the variant, the campaign, the price we wrote, and the price that's there now. Acknowledge it or roll it back; either way, no surprises when the sale ends.
- ✓ Webhook-driven — fires within seconds of the manual edit
- ✓ Idempotent per (variant, campaign, observed-price); Shopify retries can't dupe
- ✓ Inline list + nav banner counter, polled every 30 seconds
- ✓ Drift caught here keeps the rollback contract honest
We checked the App Store listings of seven direct competitors in May 2026. None advertise drift detection.
2026-06-15 14:22 variant SUM-TEE-S
campaign price $29.25 → observed $29.99
source: products/update webhook
status: NEW [acknowledge]
2026-06-15 16:08 variant SUM-CAP-OS
campaign price $18.00 → observed $24.00
source: products/update webhook
status: NEW [acknowledge]
2026-06-16 09:41 variant SUM-PACK-A
campaign price $49.00 → observed $52.00
source: products/update webhook
status: ACKNOWLEDGED
by: marie@store.com on 2026-06-16 10:02
Your campaigns don't get stuck. Guaranteed.
Most "my BFCM is frozen" support tickets in this category have the same root cause: the worker chain that drives a bulk operation lost a message, a deploy interrupted mid-run, or Shopify's bulk API briefly hiccupped. We run three independent recovery layers so the operator never sees a campaign stuck in RUNNING for hours without a path forward.
Status-progress recovery
The progress-polling handler self-heals during normal operation — if Shopify shows a bulk operation we don't know about (or vice versa) it reconciles before the merchant ever notices.
Stuck-message scanner
A cron sweep finds tasks that are READY past run_at, RUNNING with no progress, or fully applied but still mid-flight; either resets a stuck Messenger row for redelivery or re-dispatches the right TaskMessage. No Shopify API calls — fast and cheap.
Shopify reconciliation
When the cheap fixes fail, an hourly cron asks Shopify directly: "what's the real status of bulk operation X?" Shopify's answer wins; our local state conforms to it. Orphans get marked, completions get acknowledged, failures get surfaced with the Shopify error code.
The three layers were ported from a sister BigCommerce app where they've run in production for two years. Every recovery decision lands in the audit log so support can reconstruct what happened later.
Stuck campaigns are the #1 complaint cited in reviews of competing apps. We made it the failure mode we engineer against, not the one we apologize for.
Prova il flusso sul tuo catalogo.
Installa gratis su Shopify, lancia una simulazione sul tuo store, decidi dopo. Il piano free gestisce 100 modifiche SKU al mese — abbastanza per validare prima di pagare qualsiasi cosa.
Piano Free · Nessuna carta di credito · 5 giorni di prova su Growth e Scale · Risparmia il 30 % con la fatturazione annuale