Amazon Custom Integration

Amazon Custom lets Buyers personalize your listings directly on Amazon, using Amazon’s own customizer widget instead of the Printess Editor. When such an order comes in, Amazon hands you a customization ZIP file containing the Buyer’s inputs and uploaded images. Printess can read that ZIP file directly and turn it into a ready-to-produce design, so you never have to parse Amazon’s customization JSON yourself.

How It Works

The integration is a single backend call. You point Printess at your template and at the URL of the Amazon customization ZIP file, and Printess returns a Save Token that already carries the Buyer’s personalization:

  1. Amazon provides the customization ZIP file URL with the order.
  2. Your backend calls production/savetoken/create with the template name and one applyAmazonCustomizationData action.
  3. Printess downloads the ZIP, reads the customization JSON inside it, and applies everything it finds: buyer images are imported into the matching frames, texts are written into matching form fields, and frame positions are adjusted to the placement the buyer chose in the customizer.
  4. You get back a saveToken plus a thumbnailUrl.
  5. You produce that save token like any other buyer design, by passing it as templateName to the produce call.

The result is a normal Printess Save Token. It shows up in the Save Tokens list of the account portal, can be opened in the designer view for inspection, and carries the ZIP file URL in its buyer log so you can always trace which Amazon order it came from.

Template Requirements

Your Printess template has to mirror the structure of the Amazon customizer, because everything is matched by name.

The document must have a size of 400 x 400 in any supported unit. Amazon reports all positions, dimensions and scales of the customizer in its own 400 x 400 coordinate space, and Printess applies those numbers using the document’s own unit. If the document has a different size, images and texts will land in the wrong place.

Amazon Image Frame Title

Amazon Text Frame Title

Image Frames

Buyer-uploaded images are imported into the Printess account and replace the content of the frame whose title matches the customizer name. Printess then adjusts the frame to the placement from the customizer: position, width and height (dimension multiplied by scale) and rotation, anchored at the top left corner of the frame.

Nothing else is needed for images. No Form Field, no Style Class.

Text Frames

Text customizations are applied through Form Fields, not by writing into the frame. Printess sets the Form Field whose name matches the customizer name to the text the Buyer entered, so the frame picks up the value the same way it would in the Buyer Side Editor.

Amazon Text Frame Title

If the customizer also reports a placement for the text container, the text frame is repositioned and rotated just like an image frame. If it only carries a fixed default position, that one is used instead.

Fonts and Colors

Font and color choices from the customizer are applied through two additional form fields per text, following a fixed naming rule:

Customizer field Printess form field Value Printess writes
text_1 text_1 the text the buyer entered
font of text_1 text_1_font Amazon’s font family name
color of text_1 text_1_color Amazon’s color name

Amazon’s names are Amazon’s own. They will rarely match a Printess font name or a hex color, so use select lists for these two form fields. Printess matches the incoming value against the entry keys first and, if there is no match, against the entry labels - so you can either key the list by Amazon’s names, or key it by your own values and put Amazon’s names in the labels.

The recommended setup is to key the list by Amazon’s name and keep your own value in an alternate column: the label for fonts, meta1 for colors.

The Fonts Form Field example:

Amazon Font Form Field

The Colors Form Field example:

Amazon Font Form Field

Then assign a style to the frame that reads the alternate value if it exists and falls back to the raw form field value:

.text_1 {
  font: ${label.text_1_font ? label.text_1_font : form.text_1_font};
  fontColor: ${meta1.text_1_color ? meta1.text_1_color : form.text_1_color};
}

Add the style class (text_1 in this example) to the text frame so the style applies.

Amazon Style Assigned To Text Frame

How to assign a Style to a Frame

Product Options

Non-visual customizations - Amazon’s Options type, used for dropdowns such as size or finish - are written into a form field named after the option. Two details are worth knowing:

As with fonts and colors, matching against a select list falls back from entry keys to entry labels.

Creating the Save Token

Call production/savetoken/create with your Printess token as Bearer in the Authorization header. Use the service token - this is a backend call and must never run in a browser.

POST https://api.printess.com/production/savetoken/create
{
  "templateName": "name of the template",
  "actions": [
    {
      "type": "applyAmazonCustomizationData",
      "amazonOrderZipFileUrl": "url to amazon customizer zip file"
    }
  ]
}

amazonOrderZipFileUrl must be an absolute URL that the Printess backend can download without authentication (a pre-signed S3 URL works well), or a data: URI carrying the ZIP file itself.

The response contains the save token and a thumbnail of the personalized design:

{
  "saveToken": "st:...",
  "thumbnailUrl": "https://..."
}

By default the call uses the published version of your template. Set "usePublishedVersion": false while you are still developing the template and want the draft to be used.

Producing the Order

The returned save token is a normal Printess design. Pass it as templateName to production/produce exactly as you would for a design created in the buyer side editor:

{
  "templateName": "st:...",
  "externalOrderId": "your Amazon order id",
  "origin": "Amazon Custom",
  "callbackUrl": "https://your.site.example.com/callback_route",
  "outputSettings": {
    "dpi": 300
  }
}

See The Produce Call for the full round trip including status polling and callbacks.

Testing and Troubleshooting

Because the save token is a regular one, the fastest way to check a mapping is to look at the design itself.