Shopify non stampa. L'admin può mostrarvi un ordine e il browser può inviare quella pagina a una stampante, ma nulla in Shopify spinge da solo uno scontrino verso una macchina in cucina o in magazzino. L'app ufficiale Order Printer è un motore di template con un pulsante Stampa: serve comunque una persona.
Risposta breve: un ordine diventa uno scontrino stampato quando qualcosa ascolta il webhook orders/create o orders/paid di Shopify e lo inoltra a una stampante raggiungibile da internet. Ci si arriva con un connettore pronto, con Shopify Flow, o con quindici righe di codice proprio.
I tre approcci
| Approccio | Configurazione | Serve codice | Impaginazione | Adatto a |
|---|---|---|---|---|
| Connettore | Minuti | No | Basata su template | Commercianti, agenzie con tempi stretti |
| Shopify Flow | ~30 min | No | Limitata al payload costruito | Negozi che già usano Flow, regole condizionali |
| Webhook proprio | Un'ora | Sì | Totale | Logica specifica, instradamento multi-sede |
Nessuno richiede un computer in negozio, purché la stampante mantenga la propria connessione internet: una stampante cloud 4G/Wi-Fi/Ethernet, o una stampante USB esistente dietro un adattatore Raspberry Pi.
1. La via del connettore
Il percorso più rapido è il connettore Shopify: autorizzate l'app sul negozio, scegliete quale stampante riceve quali ordini e regolate il template dello scontrino. Gli ordini si stampano al pagamento. Le istruzioni dettagliate sono nella documentazione di integrazione Shopify.
È la risposta giusta per la maggior parte dei commercianti. Il limite è l'impaginazione: ottenete un buon scontrino predefinito e controlli di template, non logica arbitraria.
2. Shopify Flow
Se il negozio usa già Flow, potete avviare la stampa senza uscirne:
- Trigger: Order created (o Order paid: vedi sotto).
- Condizione facoltativa: stampare solo ordini sopra un importo, da una sede, o contenenti un prodotto.
- Azione: Send HTTP request verso l'endpoint di stampa, con il testo costruito dalle variabili Flow.
Flow vale la pena quando la decisione di stampare è condizionale. Non la vale se volete semplicemente stampare tutti gli ordini: il connettore lo fa con meno da mantenere.
3. Il vostro webhook
// POST /webhooks/shopify/orders-paid
export default async function handler(req, res) {
const order = req.body;
const righe = [
`ORDINE ${order.name}`,
new Date(order.created_at).toLocaleString('it-IT'),
'',
...order.line_items.map(i => `${i.quantity}x ${i.title}`),
'',
`TOTALE: ${order.total_price} ${order.currency}`,
];
await fetch(
`https://www.expedy.fr/api/v2/printers/${process.env.PRINTER_UID}/print`,
{
method: 'POST',
headers: {
Authorization: `${process.env.API_SID}:${process.env.API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
printer_msg: righe.join('\n'),
origin: `shopify-${order.id}`,
}),
},
);
res.status(200).end();
}
Due dettagli contano più del resto.
orders/paid, non orders/create. orders/create scatta prima della cattura del pagamento. Stampandoci sopra stamperete anche le autorizzazioni fallite e ogni bozza creata dal personale.
origin porta l'id dell'ordine. Shopify riprova i webhook, e un tentativo dopo un timeout significa che lo stesso ordine arriva due volte. Passare un valore stabile in origin dà una chiave per rilevare e scartare il duplicato.
I guasti che nessuno annuncia
Scontrini doppi. Shopify considera fallito un webhook se non rispondete entro cinque secondi. Se stampate poi rispondete, una chiamata lenta diventa due scontrini. Rispondete 200 prima, stampate in modo asincrono.
Emoji e caratteri speciali. Le stampanti termiche parlano ESC/POS, non Unicode. Un titolo prodotto con un'emoji può produrre caratteri illeggibili o, su alcuni modelli, far cadere la connessione. Ripulite o traslitterate prima dell'invio: è di gran lunga la prima causa delle segnalazioni «la stampante non funziona più».
Larghezza della carta. Un rotolo da 80 mm tiene circa 42 caratteri per riga. I titoli lunghi vanno a capo in modi che rendono lo scontrino illeggibile nella concitazione. Troncate deliberatamente.
La stampante offline. Decidete in anticipo se un lavoro non consegnabile va messo in coda, ritentato o segnalato. Verificare lo stato di consegna è un'aggiunta di dieci minuti che evita un'intera famiglia di incidenti.
Formattare lo scontrino
Intestazioni in grassetto, logo, QR code all'ordine, codice a barre, taglio automatico: tutto è markup dentro printer_msg. Vedete il riferimento di impaginazione e la stampa del logo.
Da dove iniziare
Se gestite un negozio e volete gli ordini su carta oggi, installate il connettore. Se instradate ordini tra sedi o serve logica specifica, scrivete il webhook: è un pomeriggio, non un progetto. In entrambi i casi, create un account gratuito e stampate uno scontrino di prova prima di toccare la produzione.
FAQ
Shopify può stampare gli ordini automaticamente senza un'app?
Solo se scrivete voi l'integrazione: registrate un webhook orders/paid e inoltrate l'ordine a un endpoint di stampa. Shopify non spinge mai verso una stampante, e Order Printer richiede comunque che qualcuno clicchi Stampa.
Serve un computer in negozio?
No, purché la stampante mantenga la propria connessione internet. Una stampante cloud in 4G, Wi-Fi o Ethernet si collega da sola; una stampante USB esistente può farlo dietro un adattatore Raspberry Pi.
orders/create o orders/paid?
orders/paid in quasi tutti i casi. orders/create scatta prima della cattura del pagamento, quindi stampa anche le autorizzazioni fallite e le bozze create dal personale.
Perché alcuni ordini si stampano due volte?
Shopify riprova il webhook se il vostro endpoint non risponde entro cinque secondi. Rispondete 200 subito, stampate in modo asincrono e passate l'id dell'ordine nel campo origin per rilevare i duplicati.