Skip to content

Import blanks from a CSV

If you already have your products in a spreadsheet, you can create their blanks in one go instead of one at a time. In the studio, go to Blanks, then Import, and find Import from a CSV. Choose the file and the studio shows a preview, with any problems listed against the row and column they are in. Import is available once the file has no errors.

There is an example file to start from.

The first line names the columns, and every line after it is one row. The columns are listed below; their names must be spelled exactly as shown, in any order. The required columns must be in the file. An optional column may be left out, which is the same as leaving its cells empty. A blank sold in several colours or sizes adds variant columns of its own naming.

  • One row per mockup photo. A placement with three photos takes three rows.
  • Rows with the same blank_name make one blank. Its other columns, such as category, are read from its first row. A later row may leave them empty, but a value that differs from the first row is an error.
  • Rows with the same blank_name and placement_id make one placement. Every row of a placement repeats the placement’s columns. A later row may leave them empty, but a value that differs from the placement’s first row is an error.
  • Photos of a placement with the same view_label make one view. A view is one way of photographing the placement, such as Flat or On model. Labels are compared in any case, and an empty label takes the placement’s name, so a placement’s unlabelled photos make one view.
  • Every photo of a view is the same size and shares its print area. The view’s first photo states the print area; a later photo of the view may repeat it or leave it empty, but a value that differs is an error. A photo of another size than its view’s first photo fails its blank, and the result names the view. Give it a view label of its own.
  • A row with all the photo columns empty is a placement with no photo. You can add its photos later in the studio.
  • A photo needs its address, and its view’s first photo its print area. A row that fills only some of them is an error.
  • Sizes are in millimetres. The mockup’s print area is the exception: it is measured in pixels of the original photo, from its top left corner, not of any resized copy.
ColumnRequiredWhen the cell is emptyWhat it holds
blank_nameYesThe row has an errorThe blank's name. Rows with the same name make one blank, and a blank of this name that already exists is skipped.
categoryNoThe defaultThe name of the blank category the blank goes in. A name the workspace has no category for creates one. Empty puts the blank in no category.
printshopNoThe defaultThe name of the printshop that makes the blank, as your printshops are named in Pixonaut, in any case. It is set when the blank is created and does not change. Empty takes the category's printshop, else the workspace's default printshop; a blank with none of the three has an error.
areas_vary_byNoThe defaultThe options the blank's print areas change with, such as Size: each is the name of one of the file's option columns, several separated by |. Its placements then state a print area per row of those options, in the area columns. Empty, every placement has one print area for every variant.
placement_idYesThe row has an errorThe placement's id, unique within its blank. Rows with the same blank and id make one placement.
placement_nameYesThe row has an errorThe placement's name, such as Front.
shop_nameNoThe defaultPrinted as: the name your printshop knows the placement by, on orders and job sheets. Empty prints the placement's name.
max_width_mmYesThe row has an errorThe widest print the placement takes, in millimetres.
max_height_mmYesThe row has an errorThe tallest print the placement takes, in millimetres.
default_width_mmNoThe max_width_mmThe usual print width, in millimetres. Empty on a placement with print areas per row is the widest of them.
default_height_mmNoThe max_height_mmThe usual print height, in millimetres. Empty on a placement with print areas per row is the tallest of them.
bleed_mmNoThe defaultHow far the print runs past its edge, in millimetres. Empty uses the workspace's default bleed.
safe_area_mmNoThe defaultHow far inside its edge important artwork stays, in millimetres. Empty uses the workspace's default safe area.
print_methodYesThe row has an errorHow the placement is printed: digital, large-format, uv, dtg, dtf, sublimation, screen, pad, offset, embroidery, laser, cut-sew.
dpiNoThe defaultThe print resolution, in dots per inch. Empty uses the default.
coverageNoThe defaultHow a print covers the placement: within or full. Within takes a print of any size up to the largest, placed inside it; full prints edge to edge, the print being the whole area. Empty is within.
requiredNoThe defaultWhether every order of the blank must print the placement, because the item cannot be made without it, such as a cut-and-sewn sleeve: yes or no. Empty is no.
fill_colourNoThe defaultThe colour, as #rrggbb, an optional placement is printed in when nobody designs it, such as a plain hood lining. Empty is none.
area_width_mmNoThe row states no print areaThe widest print the placement takes on the row's variants, in millimetres. The row is the line's values of the blank's areas_vary_by options. Lines of one placement and row repeat the area columns or leave them empty; a line that states an area states its width and height, and every area fits inside max_width_mm and max_height_mm.
area_height_mmNoThe row states no print areaThe tallest print the placement takes on the row's variants, in millimetres.
area_default_width_mmNoThe area_width_mmThe usual print width on the row's variants, in millimetres.
area_default_height_mmNoThe area_height_mmThe usual print height on the row's variants, in millimetres.
area_dpiNoThe placement'sThe print resolution on the row's variants, in dots per inch. Empty uses the placement's.
area_bleed_mmNoThe placement'sHow far the print runs past its edge on the row's variants, in millimetres. Empty uses the placement's.
area_safe_area_mmNoThe placement'sHow far inside its edge important artwork stays on the row's variants, in millimetres. Empty uses the placement's.
mockup_urlNoThe row has no photoAn https address of a product photo (PNG, JPEG, WebP, HEIC). Pixonaut downloads it and keeps it as one of your images.
mockup_x_pxNoThe view's first photo states itThe print area's left edge on the photo, in the photo's pixels. Every photo of a view shares it.
mockup_y_pxNoThe view's first photo states itThe print area's top edge on the photo, in the photo's pixels. Every photo of a view shares it.
mockup_width_pxNoThe view's first photo states itThe print area's width on the photo, in the photo's pixels. Every photo of a view shares it.
mockup_height_pxNoThe view's first photo states itThe print area's height on the photo, in the photo's pixels. Every photo of a view shares it.
view_labelNoThe placement_nameThe view the photo is in, such as Flat or On model. Photos of one placement with the same label, in any case, make one view, and must all be the same size. Empty uses the placement's name, so a placement's unlabelled photos make one view.

Photo addresses must be https and reachable by anyone on the internet; an address behind a login, or on a private network, cannot be fetched. Pixonaut downloads each photo and keeps it as one of your images, so it counts against your storage. It accepts PNG, JPEG, WebP and HEIC, and judges which by the file’s content, not its name or the address’s ending.

Every blank is made by one printshop, set when the blank is created and never changed. The printshop column names it by the name your printshop has in Pixonaut, in any case. An empty cell takes the printshop of the blank’s category, and if the category has none, or the import creates the category, the workspace’s default printshop. The preview shows which printshop each blank gets and where it came from.

A blank’s first row has an error when:

  • none of the three gives it a printshop;
  • the name is not one of your printshops, or two of them have it;
  • the printshop is disconnected, or no longer available;
  • you may not choose printshops, and the name is not the category’s printshop.

A blank sold in several colours and sizes holds each combination as one of its variants. Add a column for each of its option axes, and one for each variant field its printshop declares:

ColumnWhat it holds
option:ColorOne column per option axis, such as option:Color and option:Size, in the order the shopper sees them. Every row of a blank fills each one, and rows of a blank that differ only in these cells make its variants. Rows of one view naming the same photo make one photo, which shows the variants of the colours on its rows.
field:colorCodeOne column per variant field the blank's printshop declares, such as field:colorCode: the value its orders send for the row's variant. Empty sends the field's default. A column the printshop does not declare is an error on a blank that fills it.
  • Rows of a blank that differ only in their options make its variants. A tee in Red and Blue, each in S and M, takes four rows for its front placement, one per variant, and its axes are Color and Size in the order of the columns.
  • A colour’s photo shows every variant of that colour. Put the same photo address on the rows of that colour, or on one of them and leave the others’ photo columns empty. A view holds one photo per colour; on a blank with no Color axis it holds one photo, which shows every variant.
  • A variant may span several placements and views. Its later rows repeat its field values or leave them empty; a value that differs is an error.
  • A file with no option columns makes each blank its one variant.

A row has an error when one of its option cells is empty, or when another row of the same placement and photo has the same options; a blank’s row has one when it fills a field its printshop does not declare. A blank may have at most 5 axes and 2,000 variants.

A cut-and-sewn sweater’s front panel is larger on an XL than on an S. Name the options a blank’s print areas change with in its areas_vary_by cell, such as Size, and state each placement’s print area on its rows with the area_ columns:

  • A row’s print area is for its option values. On a blank whose areas vary by Size, a front row with option:Size M states the front’s area on every M variant.
  • Rows of one placement and size repeat the area or leave it empty. A value that differs is an error. A row that states an area fills its area_width_mm and area_height_mm; the usual size, resolution, bleed and safe area may be left out.
  • Every area fits inside the placement’s max_width_mm and max_height_mm. One that does not is an error on its row, naming it. A placement whose usual size is left empty takes the widest and tallest of its areas.
  • A blank whose areas_vary_by is empty may not fill the area columns.

The coverage, required and fill_colour columns describe the placement on every size: a sleeve panel the sweater cannot be made without is full and required, and a plain hood lining nobody designs takes a fill colour.

The import runs in the background. As it starts, every blank the file creates appears in your blanks at once, with its name, marked as importing, and the studio tells you when the import has finished. You can go on working meanwhile.

  • A blank whose name already exists is skipped and never updated. The import only creates. To change a blank you already have, edit it in the studio.
  • Each blank is all or nothing. The import fetches each blank’s photos in turn, and the blank becomes ready with all of them. If one of its photos cannot be fetched or stored, or does not fit its view, the blank is marked as failed, and the rest of the file carries on. If your storage fills up, that blank and every one after it fail.

A failed blank says why when you open it. Remove it, fix what went wrong, and run the same file again: because existing names are skipped, it creates only what is missing.

  • The file may be at most 170 KB.
  • At most 500 rows.
  • At most 100 blanks.
  • One import has 60 minutes to fill its blanks in. Blanks it does not reach in that time fail. Split a large catalogue into several files, or remove the failed blanks and run the same file again.
  • One import runs at a time in a workspace. Wait for it to finish before starting the next.

The example holds a t-shirt whose front is photographed flat and on a model (two views) and whose back has one unlabelled photo, and a tote whose single placement has no photo yet. The photo addresses are placeholders: replace them with your own.

Download blanks-example.csv

blank_name,category,printshop,areas_vary_by,placement_id,placement_name,shop_name,max_width_mm,max_height_mm,default_width_mm,default_height_mm,bleed_mm,safe_area_mm,print_method,dpi,coverage,required,fill_colour,area_width_mm,area_height_mm,area_default_width_mm,area_default_height_mm,area_dpi,area_bleed_mm,area_safe_area_mm,mockup_url,mockup_x_px,mockup_y_px,mockup_width_px,mockup_height_px,view_label
Classic tee,T-shirts,,,front,Front,,300,400,250,300,0,10,dtg,300,,,,,,,,,,,https://example.com/photos/classic-tee-front.png,410,360,380,500,Flat
Classic tee,,,,front,Front,,300,400,250,300,0,10,dtg,300,,,,,,,,,,,https://example.com/photos/classic-tee-front-model.jpg,520,300,300,400,On model
Classic tee,,,,back,Back,,300,400,,,0,10,dtg,300,,,,,,,,,,,https://example.com/photos/classic-tee-back.png,410,300,380,500,
Canvas tote,Bags,,,front,Front,,280,320,,,,,screen,,,,,,,,,,,,,,,,,

Questions? Write to [email protected].

Status · Terms of service · Privacy policy · Subprocessors