Designing a personalisation pipeline for print-on-demand
Between a text field on a product page and a file a printing press will accept, there are five stages and about a dozen ways to ruin an order. Here is how we lay them out.
Personalised physical products share one architecture regardless of what is being printed. Customer input becomes a rendered artefact, the artefact becomes a print file, and the print file becomes an object that cannot be edited after the fact. The irreversibility at the end is what makes the design of the earlier stages matter so much.
Stage one: capture
Capture is where the customer's intent enters the system, and it is where most defects are introduced. The temptation is to accept anything and sort it out later. Resist it. Every constraint the press imposes should be expressed at capture time, in the customer's language, at the moment they can still act on it.
That means character limits derived from the actual layout rather than guessed, a live preview rendered by the same engine that will produce the final file, and explicit handling for the inputs that break layouts: very long names, all-caps entries, emoji, and scripts that run right to left.
Stage two: validation
Validation is separate from capture because it answers a different question. Capture asks "is this well-formed". Validation asks "will this produce an acceptable physical object".
- Resolution measured against the printed dimensions and the press's minimum, expressed as effective DPI after any crop.
- Colour handled explicitly — a conversion chosen by the pipeline, not one that happens by accident somewhere downstream.
- Safe margins and bleed respected, with anything near the trim line treated as a warning rather than silently clipped.
- Fonts embedded or outlined, so that a substitution on a rendering machine cannot change what gets printed.
Stage three: rendering
Rendering should be deterministic and reproducible. The same input must produce a byte-identical output today and in six months. That rules out anything that depends on ambient state — a font installed on one machine, a locale setting, a library version that floats.
Pin the versions. Ship the fonts with the renderer. Record, alongside every order, the exact template version and renderer version used. When a customer contacts support about a poster printed four months ago, the ability to regenerate that exact file is the difference between a two-minute answer and an afternoon of archaeology.
Stage four: proofing
Not every product needs a proof step. A €14.95 poster from a validated upload generally does not; a €90 set of handmade invitations with custom wording certainly does. The distinguishing factor is not price but reversibility of the customer's own error — if a misspelling by the customer would be discovered only after ninety cards were printed, a proof pays for itself.
Where a proof exists, cap the revision rounds. Unbounded revisions are the most reliable way to turn a profitable order into a loss, and a clear limit stated up front is fairer than an ambiguous process that is quietly cut off at some point.
Stage five: handoff
The final stage is producing something a press or a partner can consume without a human interpreting it. In practice this is a file in an agreed format plus a manifest — what to print, on what stock, at what size, how many, and where it ships.
Make the handoff idempotent. Production systems get restarted, queues get replayed, and a network timeout at the wrong moment should never be able to cause the same order to be printed twice. A stable job identifier derived from the order, and a producer that refuses duplicates, costs very little and prevents an entire category of expensive mistakes.
What to instrument
Four measurements tell you almost everything about the health of a pipeline like this: the proportion of uploads rejected at capture, the proportion of orders flagged for human review, the median time an order spends waiting for proof approval, and the reprint rate with its causes attributed. If reprints are rising, one of the earlier stages has stopped doing its job, and the attribution tells you which.
Related reading
Working on something like this?
We build and run the systems described here. Tell us what you are planning and we will give you an honest technical assessment.