$ Price Bulk Editor
Funzionalità

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.

01 · Anteprima

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
Output della simulazione · summer-sale-25 Non confermato
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
Risk warnings 8 typed rules · pure math · zero AI

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.

High
  • 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.
Medium
  • 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
  • Low inventory. The variant has fewer than five units in stock. Informational — you may not want to feature it.
Log di audit · operazione #4218 Snapshot v1
  • 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
02 · Rollback

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
03 · CSV

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) o variant_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
04 · Targeting

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"
05 · Markets

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
06 · Automazione

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.

Settimanale

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.

Mensile

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.

07 · Log di audit

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
08 · Regole di margine

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.9937.7%
SUM-CAP-OS$5.40×1.8 → .99$9.9946.0%
SUM-PACK-A$22.50×1.4 → .99$31.9929.7%
SUM-JKT-L$48.00×1.4, min 35%$73.9935.1%
09 · Drift detection Unique

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.

Drift alerts · summer-sale-25 3 NEW
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
10 · Self-healing Unique

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.

In-process

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.

Every 15 minutes

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.

Hourly

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.

Inizia

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