Title: Printcart Canvas Print
Author: David
Published: <strong>September 24, 2026</strong>
Last modified: September 24, 2026

---

Search plugins

![](https://ps.w.org/printcart-canvas-print/assets/banner-772x250.png?rev=3710939)

![](https://ps.w.org/printcart-canvas-print/assets/icon.svg?rev=3710939)

# Printcart Canvas Print

 By [David](https://profiles.wordpress.org/printcart/)

[Download](https://downloads.wordpress.org/plugin/printcart-canvas-print.4.3.5.zip)

 * [Details](https://wordpress.org/plugins/printcart-canvas-print/#description)
 * [Reviews](https://wordpress.org/plugins/printcart-canvas-print/#reviews)
 *  [Installation](https://wordpress.org/plugins/printcart-canvas-print/#installation)
 * [Development](https://wordpress.org/plugins/printcart-canvas-print/#developers)

 [Support](https://wordpress.org/support/plugin/printcart-canvas-print/)

## Description

Printcart Canvas Print adds a **Customize with PC Canvas** button to the
 WooCommerce
add-to-cart form of the products you enable. The button opens the Printcart-hosted
designer in a full-screen overlay. There the customer picks a size, an edge style
and a depth, designs the canvas, and sees an edge-wrap preview rendered by Printcart
before adding it to the cart.

The plugin is the WooCommerce side of the Printcart service. The designer, the
 
preview renderer, the print-quality check, the pricing and the order hand-off all
run on Printcart, so a Printcart account is required. “External services” below 
lists exactly what is sent and when.

**What “3D preview” means here**

Printcart returns a flat preview **image** of the wrapped canvas, a lit and
 angled
mockup. It is not an interactive or rotatable 3D model.

**Features**

 * A “Customize with PC Canvas” button in the WooCommerce add-to-cart form, for
   
   classic templates and the add-to-cart form block. It is shown only on products
   that are enabled and linked to a Printcart product and side. Other products get
   no PC Canvas markup at all.
 * A full-screen overlay hosting the Printcart designer, with an origin-checked
   
   message bridge. The launch configuration is fetched only after the customer clicks.
 * Five edge styles: image wrap, mirror, blur, blurred mirror and solid colour.
 * Edge style, depth and size come from your own Printcart printing option,
    including
   its conditional fields, and are saved on the WooCommerce order.
 * Cart prices are calculated by Printcart on the server and held as a
    single-use
   reservation. A price sent by the browser is never trusted.
 * Print-quality (DPI) checking of the customer’s image for the chosen size,
    with
   a DPI Profiles screen to set the minimum quality and what happens below it.
 * Paid canvas orders are sent to Printcart in the background. You can turn
    this
   off on PC Canvas > Connection.
 * A PC Canvas admin menu: Dashboard, Products, Product Setup, Printing Options,
   
   Canvas Templates, DPI Profiles, Orders, Artwork, Connection and Diagnostics. 
   Every screen works with JavaScript turned off.
 * Product Setup owns the canvas geometry and shows one readiness verdict, with
   
   the next action, for each product.

**Requirements**

 * WooCommerce, installed and active.
 * A Printcart account, with its Store SID and Secret (used by your server) and
   
   its Unauth Token (used to load the designer), entered on PC Canvas > Connection.
 * A paid Printcart plan for previews and order sync. On Printcart’s free plan
    
   Printcart refuses the preview render and the order sync with “Upgrade your account”.
   Print-quality checks and previews spend tokens from the store owner’s Printcart
   wallet; see “External services”.

**PC Designer**

PC Canvas does not need PCDesigner – Web 2 Print Solution or any other
 designer
plugin. If PC Designer is also active, PC Canvas reads only whether it is switched
on for a canvas product, so that it can keep PC Designer’s “Start Design” button
and editor redirect out of the way on that product and warn you. It never changes
PC Designer’s settings or data.

### External services

This plugin connects your WooCommerce store to **Printcart**, a third-party
 print-
production service. It cannot work without it: the designer, preview, print-quality
check, pricing and order hand-off run on Printcart. Nothing is sent to Printcart
until you enter your Printcart credentials on PC Canvas > Connection and link a 
product to Printcart.

The plugin never sends your customers’ names, email addresses, phone numbers,
 billing
addresses or shipping addresses to Printcart. Like any server-to-server request,
each call also carries your server’s IP address and the standard WordPress user 
agent, which includes your site address and WordPress version.

**1. Printcart API: https://api.printcart.com/v1**

Called by your server, never by the browser. It is the only host that receives
 
your SID and Secret. The address can be changed with the “API base URL” field on
the Connection screen.

_In wp-admin, when you act._

 * Connection test: reads your store details and plan (`GET /stores/store-details`,`
   GET /account/wordpress-plan`) and checks the Unauth Token (`GET /products`).
 * Product setup: looks up the Printcart product for a WooCommerce product by its
   WooCommerce product ID, reads products, sides, side geometry, 3D settings and
   production readiness, and reads your printing options (`/printing-options/resolve`,`/
   printing-options/{id}/wordpress`). No customer data.
 * When you ask for it: creates a Printcart product from the WooCommerce product
   name (`POST /products`), writes side sizes (`PUT /sides/{id}`) and saves the 
   3D profile (edge style and depth).
 * Test preview: uploads a test image and renders it, as below, at the same token
   cost.
 * Support export: the same read-only checks plus `GET /integration/woocommerce/
   sync-health`. The export is shown to you to copy; it is not sent anywhere.

_In the background._ When a product’s saved copy of its printing-option
 fields 
is older than 15 minutes, WP-Cron reloads it (`GET /printing-options/{id}/wordpress`)
in its own request. No customer data.

_When a customer asks for a preview_ (the designer asks automatically when the
 
customer changes an option the preview depends on):

 * `POST /images`: a PNG snapshot of the design (up to 10 MB) and its file name,
   so Printcart can host it.
 * `POST /3d/edge-preview`: the Printcart product and side IDs, the hosted image
   address, the edge style and colour, the output size, and the customer’s size 
   and depth.
 * **Metered: 1 token per render** Printcart performs, from the store owner’s wallet,
   billed to you. A render Printcart serves from its cache is free, but a repeat
   of the same design is not guaranteed to be served from cache. Refused on Printcart’s
   free plan. Any visitor who opens the designer on an enabled product can trigger
   renders.

_When a customer’s image is checked for print quality_ (on upload, on a size
 change
and before add to cart):

 * `POST /customizer/preflight/dpi`: the Printcart product and side IDs, the canvas
   size in pixels and inches, and each placed image’s pixel dimensions (up to 100
   images). No image and no image address are sent.
 * **Metered: 2 tokens per request** from the store owner’s wallet, billed to you.
   If the wallet is empty the customer keeps the local estimate and the designer
   stops asking for that session.

_When a customer confirms a design and adds it to the cart:_

 * `POST /printing-options/{id}/calculate`: the quantity, canvas size and unit, 
   and the customer’s option choices, so Printcart can price the line.

_Automatic order sync, on by default._ When an order that contains a designed
 canvas
line is paid (WooCommerce status processing or completed), the order is sent in 
the background with `POST /integration/woocommerce/orders`, never during checkout.
Bank-transfer and cheque orders wait until you mark them paid. A failed send is 
retried twice.

 * Order: order ID and number, status, currency, total, subtotal, shipping total,
   tax total and creation date.
 * Each canvas line: line ID, WooCommerce product and variation IDs, product name,
   quantity, the design file and preview addresses, and the canvas details (Printcart
   product, side and profile IDs, size, geometry, edge style, colour, depth, layout
   and panel count).
 * **Not sent:** customer name, email, phone, billing or shipping address, customer
   ID, payment details, order key and customer note.
 * Turn it off: untick “Send paid orders to Printcart automatically” on PC Canvas
   > Connection. Retry sync on PC Canvas > Orders still sends a line by hand.

Terms of Service: https://solution.printcart.com/tos/licenses-and-terms
 Privacy
Policy: https://printcart.com/privacy-policy

**2. Printcart designer: https://customizer.printcart.com**

When a customer clicks “Customize with PC Canvas”, their browser loads the
 Printcart
designer in an iframe. Its address carries your shop address, your store’s Unauth
Token, the Printcart product and side IDs, the WooCommerce product and variation
IDs, and a short description of the canvas. From then on the designer is Printcart’s
application: it loads its own files from Printcart, and the photos the customer 
uploads and the design they make go to Printcart. The address can be changed with
the `PC3D_APP_URL` constant.

The Unauth Token is readable by any visitor to an enabled product page, by
 design.
It cannot change your products’ canvas geometry, but it is not a read-only key: 
Printcart accepts it for some write requests, such as saving design templates. It
can appear in browser history, server logs and `Referer` headers. You can rotate
it from your Printcart account.

Terms of Service: https://solution.printcart.com/tos/licenses-and-terms
 Privacy
Policy: https://printcart.com/privacy-policy

**3. Printcart file hosting**

Uploaded design images and rendered previews are stored by Printcart and
 served
from the address Printcart returns for them. The customer’s browser and your wp-
admin load those images from there.

Terms of Service: https://solution.printcart.com/tos/licenses-and-terms
 Privacy
Policy: https://printcart.com/privacy-policy

API reference: https://docs.printcart.com/rest-api-reference/

## Screenshots

[⌊Dashboard: connection status, store readiness and the issues that need attention.⌉⌊
Dashboard: connection status, store readiness and the issues that need attention
.⌉[

Dashboard: connection status, store readiness and the issues that need attention.

[⌊Products: every canvas product with its readiness verdict and next action.⌉⌊Products:
every canvas product with its readiness verdict and next action.⌉[

Products: every canvas product with its readiness verdict and next action.

[⌊Product Setup: the overview and setup steps for one canvas product.⌉⌊Product Setup:
the overview and setup steps for one canvas product.⌉[

Product Setup: the overview and setup steps for one canvas product.

[⌊Artwork: the design files customers produced, with their file checks.⌉⌊Artwork:
the design files customers produced, with their file checks.⌉[

Artwork: the design files customers produced, with their file checks.

[⌊Connection: Printcart credentials, the connection test and the "Send paid orders
to Printcart automatically" switch.⌉⌊Connection: Printcart credentials, the connection
test and the "Send paid orders to Printcart automatically" switch.⌉[

Connection: Printcart credentials, the connection test and the “Send paid orders
to Printcart automatically” switch.

[⌊The customer's view: the Printcart designer in a full-screen overlay on the product
page.⌉⌊The customer's view: the Printcart designer in a full-screen overlay on the
product page.⌉[

The customer’s view: the Printcart designer in a full-screen overlay on the product
page.

## Installation

 1. Make sure WooCommerce is installed and active.
 2. Install the plugin from **Plugins > Add New**, or upload the ZIP through **Plugins
    > Add New > Upload Plugin**, and activate it.
 3. Go to **PC Canvas > Connection**. Enter your Printcart Store SID, Secret and Unauth
    Token, and run the connection test.
 4. In your Printcart store, create the printing option for your canvas products: an
    edge style, optionally an edge depth, and a size. PC Canvas reads it from Printcart,
    so there is nothing to recreate in WordPress.
 5. Open **PC Canvas > Products**, choose a product, and follow **Product Setup**: 
    link the Printcart product and side, map the printing option, set the size and 
    wrap depth, and bind a canvas template for the price.
 6. When the product’s readiness verdict says Ready, the button appears on its product
    page.
 7. Review incoming designs under **PC Canvas > Orders** and **PC Canvas > Artwork**.

## FAQ

### What is the Printcart account for?

Printcart is the service this plugin connects your store to. It hosts the
 designer
your customers use, renders the edge-wrap preview, checks print quality, calculates
the price and receives the orders for production. Without an account the plugin 
has nothing to connect to. Your Printcart account’s plan and wallet are managed 
at Printcart, not in WordPress.

### What does it cost to run?

The plugin is free. Printcart charges for its service:

 * Each preview render costs 1 token from the store owner’s Printcart wallet
    (a
   render Printcart serves from its cache is free). That includes previews your 
   customers make and the test preview on Product Setup. Previews are refused on
   the free Printcart plan.
 * Each print-quality (DPI) check costs 2 tokens from the store owner’s wallet,
   
   whatever the number of images in it. The customer triggers it by uploading, changing
   the size or adding to cart.
 * Order sync is refused on the free Printcart plan.

Costs are billed to you, the merchant, never to the customer. When the wallet
 is
empty the customer is not blocked: they keep the local quality estimate, and PC 
Canvas shows you a notice.

### How do I stop orders being sent to Printcart automatically?

Untick **Send paid orders to Printcart automatically** on **PC Canvas >
 Connection

and save. You can still send any canvas line by hand with Retry
 sync
 on PC Canvas
> Orders. Developers can also use the
 pc3d_auto_order_sync_enabled filter.

### Does it work alongside PCDesigner – Web 2 Print Solution?

Yes. PC Canvas does not need it. On products PC Canvas serves, PC Canvas keeps
 
PC Designer’s “Start Design” button, its shop-list “Start Design” link and its after-
add-to-cart editor redirect out of the way, and warns you on Product Setup, Products
and the Dashboard where PC Designer is still switched on. Turn PC Designer off on
those products to remove the warning. PC Canvas never changes PC Designer’s settings
or data, and PC Designer keeps working on every other product.

### Does this show a rotatable 3D model of the canvas?

No. Printcart returns a flat preview image of the wrapped canvas.

### Are my Printcart credentials exposed to the browser?

The SID and Secret are not. They are stored and used on your server only, and
 are
removed from the designer’s launch address even if another plugin tries to add them.

The Unauth Token is, on purpose: it is the key that loads the Printcart
 designer,
so any visitor to an enabled product page can read it. It is not a read-only key.
See “External services” for what that means.

### Why does the button not appear on my product?

The button is shown only when the product is enabled for PC Canvas and linked
 to
a Printcart product and side. Open the product on **PC Canvas > Products**: its 
readiness verdict names what is missing. **PC Canvas > Diagnostics** covers connection
problems.

### Does the plugin modify WooCommerce?

No. It uses WordPress and WooCommerce hooks only and changes no WooCommerce
 file.

### Can the customer change the edge depth per order?

Yes, by mapping an “Edge Depth” field in your printing option. The choice is
 saved
on the order. Printcart currently renders the preview at the depth set in Product
Setup, not the customer’s choice.

### What happens to my data when I delete the plugin?

Deleting the plugin removes its settings, cache, scheduled tasks and the
 _pc3d_*
settings it saved on your products. The PC Canvas details on your WooCommerce order
lines are kept, because they are part of your order records.

### I am upgrading from 3.x. What changes?

The PC Canvas button moves from the old designer toolbar to your product page,
 
and the preview opens in a full-screen designer overlay. The old in-designer button
is removed with no setting to keep it. Existing orders are not changed.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Printcart Canvas Print” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ David ](https://profiles.wordpress.org/printcart/)

[Translate “Printcart Canvas Print” into your language.](https://translate.wordpress.org/projects/wp-plugins/printcart-canvas-print)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/printcart-canvas-print/),
check out the [SVN repository](https://plugins.svn.wordpress.org/printcart-canvas-print/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/printcart-canvas-print/)
by [RSS](https://plugins.trac.wordpress.org/log/printcart-canvas-print/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 4.3.5

Security:

 * The admin screen loader validates the request origin before it reads any
    other
   part of the request: the permission check, then the nonce for the screen the 
   request names, then the screen query. A nonce issued for one PC Canvas screen
   can no longer load another.
 * Admin actions are gated by one nonce check for both request transports,
    instead
   of a check chosen by transport.
 * Every PC Canvas screen checks the user’s permission before it verifies the
    nonce,
   so a nonce is never the only thing authorising a request.
 * The Connection screen routes a submission by the form it names, so its two
    nonce
   checks cannot overlap.

#### 4.3.4

Security:

 * Admin view query values, including nested values, are sanitised immediately
    
   after WordPress decodes them and before any screen renders.

#### 4.3.3

Security:

 * Admin actions now verify permission and intent before request values are
    normalised
   into an explicit payload. Downstream helpers no longer read raw request globals.
 * Values decoded from JSON are passed through WordPress core sanitizers before
   
   use, while encoded image URLs remain intact.
 * Test artwork uploads now use the WordPress upload handler with PNG-only MIME
   
   validation and remove the temporary local copy after use.

Fixed:

 * Malformed list values in admin actions are rejected safely instead of
    reaching
   scalar-only functions.

#### 4.3.2

Fixed:

 * The notice shown when WooCommerce is missing appeared on every admin screen
    
   for every user. It now appears only for someone who can activate plugins, and
   only on the Plugins and Dashboard screens.
 * Saving Connection settings could fail with a PHP error if a field arrived as
   
   a list instead of a value.
 * The dimension-unit notice no longer shows a close button that did nothing.
    The“
   Dismiss” link beside it is unchanged and still remembers.

Security:

 * Form and URL values are sanitised where they are read, and data decoded from
   
   JSON is sanitised before it is used. No behaviour changes for merchants or shoppers.

#### 4.3.1

Fixed:

 * The “Send paid orders to Printcart automatically” switch on Connection
    could
   not be turned off in 4.3.0. It now stays off when you untick it.
 * The dimension-unit notice now stays dismissed.
 * The notice shown after a Product Setup action is no longer decoded twice.

Security:

 * Each visitor is limited to 20 previews a minute (360 an hour) and 12 quality
   
   checks a minute (240 an hour), so the Printcart tokens they spend cannot be drained.
   Developers can change the limits with the `pc3d_buyer_rate_limits` filter.
 * Database queries are fully prepared, and form values are sanitised as they
    are
   read.

Added:

 * Compatibility with WooCommerce High-Performance Order Storage and the cart
    and
   checkout blocks.
 * The product-page button’s “Opening PC Canvas…” and “Try again” labels can be
   
   translated.

Changed:

 * WordPress 6.5 or later is required.
 * The External services section now lists the token cost of previews and
    quality
   checks, every field order sync sends, and how to turn it off.

Upgrading:

 * If you turned automatic order sync off on 4.3.0, it stayed on. After
    updating,
   check the switch on PC Canvas > Connection.

#### 4.3.0

Added:

 * Paid canvas orders are sent to Printcart on their own, in the background
    and
   never during checkout. An order is sent once WooCommerce counts it as paid (processing
   or completed); a bank-transfer or cheque order waits until you mark it paid. 
   A failed send is retried twice; after that, or at once when Printcart refuses
   the order (for example on a plan without order sync), the line shows “Sync failed”
   with the reason and the order gets a note. A line already sent is never sent 
   twice.
 * A switch on Connection, “Send paid orders to Printcart automatically”. It
    is
   on by default and works with JavaScript off.
 * A warning on Product Setup, Products, the product box and the Dashboard
    where
   PCDesigner – Web 2 Print Solution is still switched on for a canvas product. 
   The product stays on sale through PC Canvas.

Changed:

 * “Design Files” is now “Artwork” in the menu, titles, buttons and the
    Dashboard.
   Page addresses are unchanged.
 * Retry sync on Orders and Order Detail runs the same code as the automatic
    send,
   and a failed retry now shows Printcart’s reason.
 * PC Canvas now notices PCDesigner – Web 2 Print Solution, only to keep it out
   
   of the way on canvas products. It never changes PC Designer’s settings.

Fixed:

 * With PCDesigner – Web 2 Print Solution also active, canvas products set up
    before
   4.0.0 could open its old designer. On every product PC Canvas serves, PC Designer’s“
   Start Design” button and its after-add-to-cart editor redirect are now kept out
   of the way; other products are unchanged.
 * Every order was marked “needs review”. The order line now carries the
    preview
   the plugin rendered for the canvas the buyer ordered.
 * The cart showed the canvas price as a sale. A canvas line now shows one
    plain
   price. The amount charged is unchanged.
 * Retry sync could not have reached Printcart. It now sends the whole order
    once.
 * The Artwork check now accepts the formats Printcart produces (SVG, PNG, PDF,
   
   JPG, WEBP). Uploads are still PNG only.
 * Order Detail listed optional fields as missing; they now read “Not
    applicable”.
 * Keyboard focus is now visible on Product Setup’s section links and on
    breadcrumbs.

Security:

 * Review statuses, the input hash and the product setup status posted by the
    browser
   at add-to-cart are ignored. A preview address from the browser is used only when
   the server has no matching render, and only if it is an https Printcart address.
 * The order sent to Printcart carries no customer name, email, phone or
    address.

Upgrading:

 * Automatic order sync is on after upgrading. To keep sending orders by hand,
    
   untick “Send paid orders to Printcart automatically” on PC Canvas > Connection.

#### 4.2.0

 * Added: admin screens load and save in place, with a status line; everything
    
   still works with JavaScript off.
 * Added: Canvas templates hold a canvas’s size, depth, edge, material, finish,
   
   frame, print sheet and price, and can be applied to products.
 * Added: Product Setup in four steps after an Overview, with one next action.
 * Added: store dimension unit and roll limit on Connection; Products views with
   
   counts and reasons.
 * Changed: one readiness verdict everywhere; the menu is ordered by task.
 * Changed: the Dashboard says “Connected” only after a passing connection test.
 * Fixed: saving Product Setup with JavaScript off; the 3D edge template save
    redirect;
   a refused Price save showing a green notice; an invisible “Skip to section” link.
 * Security: credentials appear only as their last 4 characters, on Connection
    
   only.
 * Upgrading: pricing and 3D edge templates are merged into Canvas templates the
   
   first time a store manager opens a screen that reads them. Nothing is overwritten.

#### 4.1.3

 * Fixed: first-time guest shoppers could not add a designed canvas to the
    cart;
   they were told the price quote had expired.

#### 4.1.2

 * Fixed: canvas products could stop being orderable about 15 minutes after
    setup.
   The plugin now keeps a last-known-good copy of each product’s Printcart field
   list and refreshes it in the background with WP-Cron.

#### 4.1.1

 * Fixed: on Product Setup > Mapping, “Save Mapping” and the “PC Canvas
    enabled”
   checkbox did nothing for a product whose Printcart field list had not been loaded.

#### 4.1.0

 * Added: automatic print-quality (DPI) checking, and a DPI Profiles screen.
    Each
   check costs the store owner 2 Printcart tokens; an empty wallet never blocks 
   a sale.
 * Added: Printing Options setup for a fresh store; mapping of style, material,
   
   finish, hanging hardware and add-ons; production sheet geometry; the print-roll
   limit; multi-panel canvases (not yet priced as a set).
 * Added: a Connection setting, “Artwork”, that refuses a blank canvas at
    add-to-
   cart. On by default.
 * Changed: text domain is now `printcart-canvas-print`.
 * Fixed: a finished design never reached the cart; every customer preview
    failed
   with “No artwork received”; uninstall left seven product settings behind.

Releases before 4.1.0 are not repeated here. 4.0.0 made PC Canvas a
 standalone 
plugin with its own product-page button and designer overlay.

## Meta

 *  Version **4.3.5**
 *  Last updated **20 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [print-on-demand](https://wordpress.org/plugins/tags/print-on-demand/)[product designer](https://wordpress.org/plugins/tags/product-designer/)
   [web to print](https://wordpress.org/plugins/tags/web-to-print/)[woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/printcart-canvas-print/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/printcart-canvas-print/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/printcart-canvas-print/reviews/)

## Contributors

 *   [ David ](https://profiles.wordpress.org/printcart/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/printcart-canvas-print/)