🚀 Connect: PrintIQ Problem Solvers 🚀

Picture of 🚀 Connect: PrintIQ Problem Solvers 🚀
Read our handy storefront styling tips and tricks!

Connect: Print IQ General Overview

 

Who are printIQ?

printIQ is one of Infigo's Premium Partners. Based out of Australia the team at printIQ specialise in Print MIS, Workflows, Estimating and Print Management. They have built their own sophisticated MIS and we have built a plugin that integrates with it.

You can find out more about the company and their software here

 

Our integration

Below is a brief outline of the capabilities of the Connect: printIQ plugin.

  • Enables users to fetch a price back from printIQ on-demand for a specific Product Code, which can then be displayed your storefront's product landing page for the end user.
  • Product sync capabilities, allowing users to create and update products in Infigo from printIQ. This supports both print-on-demand static PDF products and stock/inventory items.
  • Multiple modes for placing orders for multiple line items in Infigo, and have them create quotes in printIQ.
  • Accept shipped statuses back from printIQ, storing the tracking number to be distributed in the Infigo Shipped notification to update the customers that their order is on its way.
  • Infigo requests on-demand inventory levels for a product when it is displayed to the customer.

 

 

Basic Setup

Our printIQ plugin is a paid module, so if you are interested in purchasing it please reach out to your Customer Success Manager and they can provide you with the pricing and get you setup.

Once the plugin is enabled the initial setup process is very simple:

  1. Enable the plugin. Simply search 'Connect' in admin and it will return two results that you need
    • Connect Settings - Open this page in a new tab and Under the list of Enabled MIS Plugins you should see 'printIQ' ensure that this is checked.
    • Connect Plugins - Open this in another tab and here is where you can start configuring the connection
  2. Start off by entering in your printIQ instance URL, and then you need to fetch a username, password, application name and application key - all of which can be provided to you by printIQs support team.
  3. Once you have entered this information you can now check the connection to ensure everything is how it should be. To do this click 'Back to plugin list' and then next to the printIQ plugin click on 'Check Connection'. If everything is correct you will see a green popup appear with a successful connection message. If a connection cannot be made then you will see a failed red popup appear and something is not quite right with the details you have entered. If you are struggling then please raise a ticket with the support team and we can assist you.

 

Mapping Customers

Every customer in Infigo that will be placing orders needs to be mapped to a printIQ Customer Code. 

To do this, simply create a customer in Infigo (checkout our article on creating customers) or take an existing customer and click Edit. Once in the customer record, on the info tab, scroll down to find our Magic Green Button - 'Infigo Connect Link' - Keep an eye out for this guy throughout admin, he will be your best friend when setting up an MIS plugin in Infigo.

 

Click the green button and in the popup you can enter in your printIQ Customer Code. This code will be passed into printIQ with every estimate and order that this customer places in Infigo.

If you do not wish, or need to have individual Customer Codes per unique customer you can set a storefront default customer code as described in this section.

 

Mapping Products

Very similar to the process of mapping customer, every product needs to have a printIQ product code or SKU assigned to it.

There are many ways to do this, each time just look for the Green Button:

  • You can add your products to a Product Group and assign the Product Group to a printIQ product code, therefore every product in that Product Group will inherit that printIQ product code.
  • Directly on the product variant
  • Create attributes, assign them to the product and then create Attribute Combinations and assign a printIQ product code to the Attribute Combination.

 

Mapping Shipping Options

If you offer shipping options in Infigo and want that information to be passed into printIQ we offer the ability to setup simple mappings from a Infigo shipping option to a printIQ shipping method.

To do this you need to go back to printIQ Connect plugin configuration page (As shown in the Basic Setup step) then scroll down until you find the Delivery Settings section.

 

Clicking 'Add new item' for the Delivery mapping table allows you to start mapping your Infigo Delivery Options you have created to PrintIQ Delivery/Shipping Types.

The Key is the delivery method system name for your Infigo Delivery Method (you can find this on any Delivery Computation Plugin you are using - click shipping options at the base of the page and then from the list select the ShippingMethodSystemName)

The Value is the name of the PrintIQ Shipping Type and will be the value that we pass into printIQ with the quote request.

 

View from PrintIQ of Delivery/Shipping Types

You can continue to add as many of these as you need.

 

We also allow for you to pass the Infigo Delivery By date into printIQ, if you wish. If this setting is disabled we will not pass it and so therefore printIQ will determine the timings as part of the quote and the job. If you do send it then we will override what printIQ might have set with the date that we send it from Infigo. See our article on Delivery and Production restrictions for more information.

 

Creating Invoices

We support passing invoice and paid flags into printIQ for each job which you can configure as part of the plugin on a storefront wide basis.

If you wish to have Infigo tell printIQ to create an invoice for ALL jobs placed then you need to enable the settings called 'Create invoice for all jobs in printIQ'. 

When the job comes into printIQ and this setting is enabled it will look like this:

 

Marking jobs as paid

printIQ has a flag against a job that is used to determine if that job has been paid for or not.

We have added support for passing this information with the job request from Infigo at the point when the order is confirmed on the storefront. The setting that controls this is called 'Send Jobs marked as paid' and it is a drop down with the following options, which each option controlling how that information is passed into printIQ:

  • Never - When this is set we will never mark a job as paid in printIQ so all will come through as Paid - No.
  • Always - When this is set we will always mark a job as paid in printIQ so all will come through as Paid - Yes.
  • Always except when Purchase Order payment - When this is set we will mark all jobs as paid in printIQ EXCEPT when a customer uses the Purchase Order payment type. For example, if you offer credit card and PO as payment options on the site then we recommend setting it to this option as it will pass into printIQ the job as paid when the customer has paid upfront on the site for the order using PayPal, SagePay, Authorize.Net etc. but for the orders where they have selected Purchase Order it will mark it as unpaid and allow printIQ to invoice and charge for it later.

Tax Codes IMPORTANT

It is important, when handling tax codes that the configuration and setup of the tax codes in both Infigo and printIQ is consistent.

In Infigo these are our Tax Categories.

In printIQ they are their Tax Codes.

And we match them on name so it is important that your Infigo Tax Categories and your printIQ Tax Codes match by name exactly.

Checkout our article on setting up your Tax Categories here.

Within the printIQ plugin we also allow for you to specify a 'Fallback Taxcode'. This value will be sent with every job where the product they are ordering does not have a tax category assigned to it in Infigo. So again, it is important that this Tax Category name exists as a Tax Code in printIQ.

 

Sending Additional Job Reference information

We support the ability to send additional Job Information with every job using printIQs Job Reference fields.

To do this you need to first enable the setting in the printIQ plugin configuration called 'Send additional Reference Fields'.

Once enabled you will be presented with a mapping UI that will allow you to determine what Job Reference field  in printIQ information is passed into, and what value we pass for that reference.

First, click on the 'Add new item' button. This will then present you with two paired text fields. The 'Key' which is the name of the Job Reference Field as it appears in printIQ exactly. And the 'Value' which you should populate with an Infigo placeholder(s) to build up the value you want to be passed.

Checkout how to use placeholders here.

You can add as many Job Reference field mappings as you need, however please bear in mind, that for each Job Reference field mapping you include we need to make an additional API request to printIQ so the more you add the more it could impact on performance.

 

Other Configuration

Found at the bottom of our printIQ Connect Plugin configuration page we have a number of other configurations that you can set, all of which act as storefront wide settings:

  • General Account Manager ID - This should be populated with the printIQ Account Manager ID that you want to be passed with every quote request. If you require this to potentially be different for different users placing an order then you can use Departments in Infigo to group the users and then set the printIQ Account Manager ID as the External ID of the department (Using the Green Button), that will be used as an override for this setting and be sent instead.
  • Customer Reference Type - We pass a CustomerReference field in with the quote request to printIQ and this setting lets you determine whether we pass the OrderID or the PO Number (if using PO as a payment method) for this value.
  • Default customer code - This value is a Storefront default, fall back Customer Code that is used when an order is placed by a customer that doesn't have a Customer Code assigned directly to them (as part of this section).
  • Delivery Notes Checkout Attribute & Special Instructions Checkout Attribute - These last two fields are both mapping fields. If you want to allow for the customer to add notes about the order in the basket then you can create a Infigo Checkout Attribute. Once you have created one, you need to put the name of that attribute into one of these fields depending on how you want it sent to printIQ. We then simply pass whatever the customer enters into that Checkout Attribute as a Delivery Note or a Special Instruction depending on your configuration.

 

Webhook - Status Updates

As mentioned we support Shipped status updates back from printIQ once the job has been set as dispatched in printIQ. In order to make this possible printIQ need to setup a webhook to pass the information back to us. At the bottom of the printIQ Connect Plugin configuration page there is a Webhook Link which we need to provide to the printIQ team. A request to either us through our Support Desk or directly to printIQ can be made to start this setup process.

As part of the information sent back from printIQ we will capture the value from the Connote field (Products[].AcceptanceProductDeliveryDetails.Connote)

 

which will contain the Shipment Tracking Numbers. And when Easypost is used in the printIQ instance we will also capture the Consignment Tracking URL (Products[].ConsignmentTrack.Consignments.Trackers[].TrackingURL).

We will store these against the order in Infigo and they can be viewed in all the regular tracking URL locations (My Account, Sales > Orders, shipped notifications etc.)

Attached is a sample payload sent back from printIQ of the Despatch Status Update (UpdateDespatchStatus.json). First we filter by the 'Dispatched' and then we will set the corresponding Job/Order to shipped in Infigo.

 

NOTE: As you can have multiple storefronts sending orders into printIQ, and printIQ only supports sending status updates back to ONE URL, we need to configure a 'Master' Infigo storefront. This identifies which one of your storefronts should be used for status updates, and will be the URL provided to printIQ when setting up the webhook.

To identify this in Infigo you need to ask an Infigo Support team member to enable the 'mispluginsettings.storefrontmasterids' setting, providing them with the storefront that you want to make as your master storefront.

 

 

Product Sync

The purpose of this feature is to create and update products in Infigo from printIQ.

This supports both print-on-demand static PDF products and stock/inventory items.

 

The concept is that when a product is created or updated in printIQ, a webhook will be triggered from printIQ sending a product payload to Infigo. Infigo will then parse the information and either create or update the relevant product in the relevant storefront.

 

The plugin introduces the concept of a blueprint/master product and category to be created and configured so that the display of the products and categories created from printIQ can be controlled to a certain degree. Options like display settings will then be copied over to the new products and categories.

 

Inventory Products

The below table describes the mapping from the printIQ payload into Infigo for Inventory products, demonstrating the information that is captured and how it is used.

 

printIQ Infigo Comments
SIName Product Name  
SIDescription Product Description  
SIActive IsActive true = enabled, false = disabled
SIAllowBackOrders BackOrders

true = Allow qty below 0

false = No backorders

InventoryItem.IICode Product External ID Yhis will be used as the key mapping between the product in Infigo and the product in IQ. When GetPrice is called to obtain a price this is the product code that is passed, likewise when the order is placed.
InventoryItem.IICode SKU  
InventoryItem.IISingleUnitWeight Product Unit Weight  
InventoryItem.ItemWidth Product width  
InventoryItem.ItemHeight Product height  
InventoryItem.ItemDepth Product depth  
InventoryItem.ItemDefaultLocation Item Location Not supported
InventoryItem.ImageFullFilePath Product Image Will be displayed on the product landing page and in the product teaser on category pages
Categories[] This section details the category structure that needs to be created/updated related to that product This object will include an array of categories for the entire tree structure
Categories[i].ID Category External ID  
Categories[i].Name Category Name  
Categories[i].ParentID External ID of parent Category Used to assign the category to a parent category to create the hierarchy
Categories[i].Description Category Description  
Categories[i].ImageURL Category Image  
Categories[i].Level A numerical representation of the hierarcy of that category

Level 0 is always the value of the category where the product is assigned. Any parent categories are then represented with a negative number for each level up (0 = product category, -1 = parent, -2 = parents parent)

The top level category (i.e. the lower number) this would be the storefront (Categories[i].Name = storefront external ID)

 

Static Print-On-Demand products

The below table describes the mapping from the printIQ payload into Infigo for Static PDF products, demonstrating the information that we capture and how it is used.

printIQ Infigo Comments
Name Product Name  
Description Product Description  
QPDActive IsActive true = enabled, false = disabled
ProductCode Product External ID  
ProductCode SKU  
Weight Product Unit Weight Always in grams
QPDMinOrderQuantity Minimum basket quantity  
QPDMaxOrderQuantity Maximum basket quantity  
ThumbnailURL Product Image  
PricingItems.SPQuantity Quantity Tiers If the pricing method is not set to ‘Each’ for the product in printIQ we will create the relevant passed quantity tiers so that customers can only order in those quantities.
TreeNodes[] This section details the category structure that needs to be created/updated related to that product This object will include an array of categories for the entire tree structure
TreeNodes[i].ID Category External ID  
TreeNodes[i].Name Category Name  
TreeNodes[i].ParentID External ID of parent Category Used to assign the category to a parent category to create the hierarchy
TreeNodes[i].Description Category Description  
TreeNodes[i].ImageURL Category Image  
TreeNodes[i].Level A numerical representation of the hierarcy of that category

Level 0 is always the value of the category where the product is assigned.

This will also act as the storefront filter to determine which storefront that product should be created/sync’d on. The lowest level must match the Storefront External ID.

ArtworkURL Dictates if a static PDF product should be created (if there is a valid URL set) or not (if the value is empty/null)  

 

NOTE: If the Print IQ product contains multiple sections and therefore multiple PDFs we will not pull these into Infigo and treat the product as a inventory stock item. Only when the artwork is a single section, single PDF static product we will create a static PDF product in Infigo.

 

Important notes

The category structure of the products is passed from printIQ to Infigo as per the table above. It is important that the category structure in printIQ is correctly setup as this will be represented in Infigo.

It is also important to note that, due to the nature of multiple storefront setups adopted by many users, that the very top level category in printIQ is named the same as the Infigo Storefront External ID. This is used in Infigo to determine which storefront the product is subsequently created and updated on.

 

Products are created with a free type quantity box for all products in printIQ that are setup with a pricing method of ‘Each’. Otherwise, if a quantity exists against a product, we create quantity tiers in Infigo for each quantity and ignore any pricing that is stored in Infigo which retricts the end user from being able to order that product apart from only in those specified set quantities.

Pricing should be held solely in printIQ and Infigo requests this via the GetPrice API.

 

Live Inventory

Infigo requests on-demand inventory levels for a product when it is displayed to the customer.

In order to reduce the amount of requests made to printIQ, Infigo creates an inventory short lived cache that is populated with the inventory of each response from printIQ.

When retrieving the inventory levels for a product, Infigo first checks the cache for a valid match and if found uses that.

Otherwise, Infigo makes a request to printIQ for the inventory and populates the cache with that response to be used next time. This improves the performance but still allows it to be accurate.

The temporary cache for a particular product is invalidated each time that product is ordered in order to force the next request for inventory for the product to be requested from printIQ directly to ensure it is accurate.

Infigo also includes an Inventory validation step prior to the order being placed to ensure that the inventory levels are still available to be ordered.

For orders that are going through approval, Infigo has created a permanent cache for ‘On hold’ stock levels.

When an order is placed and it is going through approval, Infigo writes that stock amount to the on hold cache – which means it is temporarily on hold – once the order is confirmed that cache quantity is removed and the order placed.

Infigo checks this cache and considers it when displaying the live inventory stock levels on the website.

 

Example:

Product A currently has 50 items that have been ordered but are awaiting approval.

Customer lands on Product A page and Infigo requests Inventory levels from printIQ.

printIQ returns an Inventory quantity of 135.

Infigo then checks the on hold cache and finds a count of 50.

Infigo then takes the printIQ Inventory quantity and deducts the on hold cache count and displays the result of 85 available stock to the customer.

 

Live Pricing

As part of the integration we also support fetching a price directly from printIQ in the form of an estimate.

So instead of having pricing stored and calculated in Infigo, we will make an API call to printIQ passing the product code and quantity, and in return we will retrieve an estimate cost back which will be displayed to the user.

 

In order to configure this you simply need to enable two settings:

  1. Navigate to Quote Settings in admin
  2. Enable 'Create quote automatically'
  3. Enable 'Keep quote reference when ordering'

 

Currently we do not support requesting a new estimate and price from the shopping basket, this only works on the product landing page. Therefore we suggest you disable the Cart/Basket Setting 'Allow editable quantities' so that your customers cannot amend the quote once it is added to the basket.

 

NOTE: only pricing at a SKU to SKU mapping level is supported currently.

 

Setup steps for Product sync, inventory lookup and live pricing

Here, we detail the setup steps required on each storefront in order for the product sync, inventory lookup and live pricing all to work in tandem as expected.

 

Create a master product

Start by creating a master product, name it however you wish but make it identifiable as you will need to locate it later when configuring your printIQ plugin settings.

Ensure the following settings are configured on that master product

  • Require Quote (enabled)
  • Show price as order total (if want to do this) (enabled)

Create the master product as a static pdf product. This allows you to cater for the sync creating both and being able to configure the static PDF settings of the product too.

NOTE: All settings set against this master product are then used as the default settings for all new products that are created via the sync. Information that is then provided from printIQ, as detailed in the tables above, will then be used to overwrite the default configuration where applicable.

Not included in the inheritance from the master are attributes, required product mappings, category mappings and related product mappings.

 

Create a master category

Far simpler than the product setting but the same principles apply. The master category is there mainly so you can configure your display settings against it so it appears as you wish on your storefront.

 

Configure your storefront

Detailed below is the configuration required prior to running a product sync or utilising the storefront.

 

Quote Settings:

  • Create quote automatically (enabled)
  • Keep quote reference when ordering (enabled)

Connect Settings:

  • Connect Plugin to Handle Stock (Connect: printIQ)
  • Master Product mapping (select master product from drop down)
  • Master Category mapping (select master category from drop down)
  • Sync Print on Demand products (enabled)
  • Sync stock products (enabled)
  • Failure email (set to an email address to notify someone of a sync failure)

Connect: printIQ plugin Settings:

  • Base 64 token
  • Use  getPrice instead of createQuote (enabled)

 

Webhooks in printIQ

In order for information to be passed from printIQ into Infigo you need to request your printIQ account manager to create and setup 3 webhooks that will be triggered based on different events within printIQ.

 

Sync static PDF (print-on-demand) Products

The first is the static pdf product sync webhook. You need to provide the webhook link URL to printIQ which can be found within the Connect: printIQ plugin in your Infigo admin.

 

It will look something like this:

https://yourinfigostorefront.com/mishandler/2/Mis.PrintIQ/syncprintondemandproducts

 

Sync Stock Products

The second is the Inventory Items product sync webhook. Again, you need to provide the webhook link URL to printIQ which can be found within the Connect: printIQ plugin in your Infigo admin.

It will look something like this:

https://yourinfigostorefront.com/mishandler/2/Mis.PrintIQ/syncstockproducts

 

Status Updates

Finally, the third webhook is for sending shipped status updates back to Infigo so that the jobs and orders can be marked as shipped and the end customer notified.

This webhook link URL looks something like this:

https://yourinfigostorefront.com/mishandler/2/Mis.PrintIQ/syncstockproducts

 

 

Custom Quoting

A new addition to our PrintIQ integration is the ability to do advanced mapping between Infigo attributes/values to PrintIQ sections, sides, operations, colours, stocks, job operations etc. to create a custom quote.

 

NOTE: Need to be on version 48 of PrintIQ to use this

 

 

Data sent to IQ

Attached is a SAMPLE.json file which demonstrates the data that is sent through to printIQ when an order is placed.

Enabling the Custom Product Type in PrintIQ

 

This article explains how to enable the Custom option in the product type dropdown when building a custom quote using PrintIQ. The option is controlled by a tickbox found in the PrintIQ Configuration Settings.

By following this guide, users can quickly locate and enable the setting, ensuring that the Custom option appears as expected in the dropdown menu. This procedure is applicable whenever a custom quote is needed.

Users are encouraged to verify the setting after toggling the tickbox to ensure that the change is correctly applied. The process is simple and requires only a few steps in the configuration panel.

Use cases

  • Building a custom quote when the Custom product type is not visible.
  • Integrating custom workflows in PrintIQ through configuration settings.

Key settings in the system

  • Custom Product Type Tickbox: Located in the PrintIQ Configuration Settings panel.

Step-by-step guide

  1. Log in to the system and navigate to the PrintIQ Configuration Settings.
  2. Locate the tickbox for the Custom product type option.
  3. Tick the box to enable the Custom option.
  4. Refresh or review the product type dropdown to confirm the Custom option is now visible.
  5. If needed, save the changes and test by creating a custom quote.

Related links

For additional guidance, head over to the Infigo Academy or contact our Customer Support team.

Resolving Pricing Issues with Custom Quoting via PrintIQ

 

This article covers how to resolve issues where products using custom quoting from PrintIQ display a price of $0.00. The problem can stem from incomplete PrintIQ configuration and product type mismatches that prevent live pricing from being retrieved correctly.

In such cases, logs may show errors such as “Quote is Expired” even though the custom quoting information is filled in. Often, the issue arises when a product is set as a Stock product type, which is not designed to sync with a printable PrintIQ product.

Following the step-by-step guide below will help ensure that the required settings are enabled and that the product is configured correctly to retrieve live pricing from PrintIQ.

Use cases

  • Product displays $0.00 when requesting a custom quote.
  • Error messages such as “Quote is Expired” appear during price requests.

Key settings in Infigo

  • Use New Pricing API (GetPrice): Enabled in the PrintIQ plugin.
  • Quote Settings in Admin: Located under Admin > Quote Settings, ensure the following options are enabled:
    • âś… Create quote automatically
    • âś… Keep quote reference when ordering

Step-by-step guide

  1. Verify that the PrintIQ plugin has the setting for Use New Pricing API (GetPrice) enabled.
  2. Navigate to the Quote Settings and confirm that both Create quote automatically and Keep quote reference when ordering are checked. Save your changes.
  3. Check the product settings: if the product is configured as a Stock product, change it to a printable product type (such as Static or MegaEdit) to ensure proper syncing with PrintIQ.
  4. Clear your browser cache to ensure that the changes take effect on the frontend.
  5. Test the product by requesting a price to ensure live pricing is now displayed correctly.

Related links

For additional guidance, head over to the Infigo Academy or contact our Customer Support team.

Enabling and Troubleshooting Quote Creation from Teaser Pages with PrintIQ Integration

 

When a customer clicks the “Add to Basket” button on a category (teaser) page (i.e. not from the product landing page itself), the storefront can automatically create or update a quote for that product via the PrintIQ integration. This functionality ensures that the correct pricing is fetched from the MIS (PrintIQ), preventing any scenario where the product enters the basket at a $0.00 price.

Why It Matters

  • Streamlined User Experience: Customers can bypass the product detail page for a quicker purchase flow.

  • Accurate Pricing: Automatically pulling pricing details from PrintIQ ensures no manual updates or missed pricing rules.

  • Improved Efficiency: Reduces cart abandonment caused by pricing inconsistencies or the extra step of loading the product page.


Use Cases

  1. Quick Ordering Flow

    • Users who know their product requirements can skip the product detail page, quickly add items to the cart, and see the correct price without extra steps.

  2. Standardized Product Attributes

    • Products that have default attributes or configurations often only need a quantity input, so bypassing the product page simplifies purchasing.

  3. Bulk Ordering from Category Page

    • When a category page displays multiple products with an “Add to Basket” button, users can build a multi-item basket rapidly while ensuring each product’s price is accurately pulled from PrintIQ.


Step-by-Step Implementation Guide

1. Enable Price Handling on Teaser Pages

  1. Go to Admin > Configuration > Settings > Integrations > Connect Settings

  2. Locate the option “Price Handling on Teaser Pages”

  3. Check or enable this setting to ensure pricing is fetched from PrintIQ when adding items from teaser pages.

2. Display Quantity Selector on Teaser Pages

  1. Go to Admin > Configuration > Settings > Catalog Settings
  2. Enable the “Show quantity selector on Product Teaser” option.

  3. Save changes. This allows customers to specify their desired quantity before adding the product to the basket.

3. Integrate or Confirm PrintIQ Plugin Configuration

  1. Confirm that your Connect: printIQ plugin is active.

  2. Verify that the plugin is configured to handle quote-based pricing properly.

  3. Ensure your credentials and settings for PrintIQ are correctly entered to avoid failed requests or incorrect price returns.

  4. Content on the configuration of Connect: printIQ can be foud here.

4. Adjust the Creation of Quotes

  1. Location: Admin > Configuration > Settings > Quote Settings
  2. Setting Name: "Auto Create Quote"

  3. Purpose: Determines whether the system automatically creates a quote if one does not already exist (or updates the existing one).


Summary

By properly configuring the Add to Basket action on teaser pages and ensuring that your PrintIQ plugin is integrated with auto-quote creation, you can maintain accurate, up-to-date pricing for items added directly from categories or the homepage. This setup not only speeds up the ordering process for your customers but also eliminates pricing errors that might lead to abandoned carts or manual price corrections later in the checkout flow.

Preventing Duplicate Artwork in PrintIQ from Connect: PrintIQ

 

When a PrintIQ product already has a static PDF attached and Infigo also uploads artwork during order creation, you can end up with two PDFs attached to the same job. This causes downstream workflow confusion (e.g., systems may try to produce both).

To resolve this, a new optional field is supported on the artwork upload request: ReplaceQQADAKey. When present, PrintIQ replaces the existing static PDF artwork (identified by its QQADAKey) with the file uploaded by Infigo—so only one PDF is associated with the job.

  • QQADAKey = the artwork’s internal identifier in PrintIQ.

  • The value for ReplaceQQADAKey is retrieved from the AcceptQuote API response.

  • The feature is controlled by a switch in Connect: PrintIQ and is disabled by default.

  • Multi-section products are supported by mapping each section to the correct QQADAKey so all PDFs in PrintIQ are replaced with the Infigo versions.

Key Settings

  • Use Existing Artwork Reference (Connect Plugins > Configure [Connect: PrintIQ] > Data Mapping [Section])

    • Enabled → Infigo sends ReplaceQQADAKey and replaces existing product PDFs in PrintIQ.

    • Disabled → Infigo does not replace existing PDFs; the uploaded file is added normally (risk of duplicates remains).

    • Default: Disabled.

Use Cases

  • Product with static PDF
    The product has a PDF attached in PrintIQ. With the feature enabled, Infigo replaces that PDF using ReplaceQQADAKey, preventing duplicates.

  • Multi-section product
    Each section in PrintIQ may have its own static PDF. Infigo maps each section to the correct QQADAKey and replaces all PDFs section-by-section.

  • Artwork Bypass / IFrame integrations
    For flows where artwork is set at quote/product level and also uploaded during acceptance, ReplaceQQADAKey forces a clean handover to a single, correct PDF per job/section.

  • Product Sync scenarios
    When PrintIQ products are synced with Infigo and already carry artwork, the replacement mechanism ensures only the Infigo PDF is retained.

Step-by-Step Implementation Guide

  1. Enable the feature (optional)

    • In Connect: PrintIQ settings  (Connect Plugins > Configure [Connect: PrintIQ] > Data Mapping [Section]) , turn on Use Existing Artwork Reference to activate replacement behavior.

      • Leave it off if you prefer current behavior (no replacement).

Syncing Products from PrintIQ

 

The purpose of this feature is to create and update products in Infigo from printIQ.

This supports both print-on-demand Static PDF products and stock/inventory items.

The concept is that when a product is created or updated in printIQ, a webhook will be triggered from printIQ sending a product payload to your Infigo platform. Infigo will then parse the information channelled through a central "Master" storefront and either create or update the relevant product in the relevant storefront based on information with that request.

 

The plugin introduces the concept of a blueprint/master product and category to be created and configured so that the display of the products and categories created from printIQ can be controlled to a certain degree. Options like display settings will then be copied over to the new products and categories based on the Master one set.

 

Setup Process

You need to set up a Master storefront that is used to filter the products from PIQ so that they can be created on their respective storefront. To set this you can either use an existing storefront that is already created on your platform OR you would create a new storefront and set that as the "Master Sync storefront".  The benefit of having a separate storefront is that if any of the products are created without the correct category structure in PIQ they would be set up on this separate storefront which would not act as a LIVE storefront.  Create the new storefront and make a note of the ID under the manage storefront section OR navigate to the platform level using your Platform Admin account.

Platform level settings

To set the Master storefront you need to go to the platform level and specify the storefront ID of the new Master storefront you wish to use against the connect settings section and the entry for ":"

Screenshot 2024-03-28 at 21.43.05.png

Whilst still at platform navigate to the Connect plugin section and click configure on PIQ plugin - under the section for Product Sync, enable the sync switches for Sync Print on Demand products + Sync stock products

PrintIQ Infigo Comments
SIName Product Name  
SIDescription Product Description  
SIActive IsActive true = enabled, false = disabled
SIAllowBackOrders BackOrders

true = Allow qty below 0

false = No backorders

InventoryItem.IICode Product External ID This will be used as the key mapping between the product in Infigo and the product in IQ. When GetPrice is called to obtain a price this is the product code that is passed, likewise when the order is placed.
InventoryItem.IICode SKU  
InventoryItem.IISingleUnitWeight Product Unit Weight  
InventoryItem.ItemWidth Product width  
InventoryItem.ItemHeight Product height  
InventoryItem.ItemDepth Product depth  
InventoryItem.ItemDefaultLocation Item Location Not supported
InventoryItem.ImageFullFilePath Product Image Will be displayed on the product landing page and in the product teaser on category pages
Categories[] This section details the category structure that needs to be created/updated related to that product This object will include an array of categories for the entire tree structure
Categories[i].ID Category External ID  
Categories[i].Name Category Name  
Categories[i].ParentID External ID of parent Category Used to assign the category to a parent category to create the hierarchy
Categories[i].Description Category Description  
Categories[i].ImageURL Category Image  
Categories[i].Level A numerical representation of the hierarchy of that category

Level 0 is always the value of the category where the product is assigned. Any parent categories are then represented with a negative number for each level up (0 = product category, -1 = parent, -2 = parents parent)

The top-level category (i.e. the lower number) would be the storefront (Categories[i].Name = storefront external ID)

 

Static Print-On-Demand products

The below table describes the mapping from the printIQ payload into Infigo for Static PDF products, demonstrating the information that we capture and how it is used.

PrintIQ Infigo Comments
Name Product Name  
Description Product Description  
QPDActive IsActive true = enabled, false = disabled
ProductCode Product External ID  
ProductCode SKU  
Weight Product Unit Weight Always in grams
QPDMinOrderQuantity Minimum basket quantity  
QPDMaxOrderQuantity Maximum basket quantity  
ThumbnailURL Product Image  
PricingItems.SPQuantity Quantity Tiers If the pricing method is not set to ‘Each’ for the product in PrintIQ we will create the relevant passed quantity tiers so that customers can only order in those quantities.
TreeNodes[] This section details the category structure that needs to be created/updated related to that product This object will include an array of categories for the entire tree structure
TreeNodes[i].ID Category External ID  
TreeNodes[i].Name Category Name  
TreeNodes[i].ParentID External ID of parent Category Used to assign the category to a parent category to create the hierarchy
TreeNodes[i].Description Category Description  
TreeNodes[i].ImageURL Category Image  
TreeNodes[i].Level A numerical representation of the hierarchy of that category

Level 0 is always the value of the category where the product is assigned.

This will also act as the storefront filter to determine which storefront that product should be created/sync’d on. The lowest level must match the Storefront External ID.

ArtworkURL Dictates if a static PDF product should be created (if there is a valid URL set) or not (if the value is empty/null)  

 

NOTE: If the Print IQ product contains multiple sections and therefore multiple PDFs we will not pull these into Infigo and treat the product as a inventory stock item. Only when the artwork is a single section, single PDF static product we will create a static PDF product in Infigo.

Mapping Checkout Attributes to PrintIQ References

 

You have a single user or client placing orders that should be split by department or cost center in PrintIQ. Instead of creating multiple Infigo logins or separate storefronts, you want to use a single login while still routing data appropriately into PrintIQ for invoicing and reporting.


âś… Solution: Use Checkout Attributes + Additional Reference Mapping

To streamline the workflow:

  1. Create a Checkout Attribute
    Example: Cost Code, Department, Budget Centre, etc.

  2. Add the Attribute to the Checkout Workflow
    Ensure the user is prompted during checkout to select the relevant value.

  3. Map the Attribute to PrintIQ

    • Navigate to: Infigo Admin > Connect: PrintIQ Plugin > Configure Plugin

    • Use the Additional Reference Fields Mapping section.

    • Use the attribute's internal name, not the display name.

    • Select the appropriate PrintIQ reference field from the dropdown.

  4. Result:

    • Orders will be tagged with the selected cost code in PrintIQ.

    • The end user only needs one Infigo login.

    • Reporting and invoicing in PrintIQ will remain cleanly separated.


đź’ˇ Notes

  • This does not merge orders; each reference still creates a separate order in PrintIQ.

  • PrintIQ accounts can remain departmental if needed, but the data routing can now be based on the attribute selection.

  • You can use this approach for any structured custom data needed per order (e.g., internal project numbers, job references, etc.).

Separate Calls for Order and Artwork in PrintIQ

 

This article outlines feature in the Connect integration settings for Connect: printIQ that modifies how orders are sent from Infigo to PrintIQ. Instead of waiting for all artwork outputs to be fully generated, you can enable a setting that immediately pushes the order details into PrintIQ. When each job’s artwork is ready, a second, separate call is made to upload the artwork.

This approach is designed to speed up production workflows by ensuring that orders can be created and processed in PrintIQ without having to wait for final artwork.


Key Settings

  1. Separate calls for order and artwork

    • A new toggle in Admin > Configuration > Settings > Integrations > Connect Settings.

    • Default Value:

      • False for existing platforms (to maintain the current workflow).

      • True for fresh platforms (so new sites benefit from immediate order calls by default).

    • When set to True, the system calls PrintIQ as soon as an order is placed. Once the artwork is generated for each job, the system calls PrintIQ separately to provide the finalized files.

  2. Allow ordering without artwork

    • This is a product-level or catalog-level configuration that lets orders proceed even when artwork isn’t fully finalized.

    • Found in Catalog Settings or Product Variant settings. If enabled, it works seamlessly with the “Separate calls for order and artwork” feature to allow immediate order placement with partial or no artwork available at checkout.


Use Cases

  • Faster Fulfillment Pipelines
    If your production team needs immediate visibility of new orders in PrintIQ, enabling this setting helps them commence planning or scheduling before artwork is fully generated.

  • Complex Artwork Generation
    In cases where artwork generation can be time-consuming or requires multiple steps, separating the order and artwork calls prevents the rest of the workflow from stalling.

  • High-Traffic Environments
    During peak seasons or large sales campaigns, early order notification allows production teams to get a head start on logistics while artwork is still being finalized.


Step-by-Step Implementation Guide

  1. Access Connect Settings

    1. Sign in to your Infigo Admin site.

    2. Go to Admin > Configuration > Settings > Integrations > Connect Settings.

  2. Locate the ‘Separate calls for order and artwork’ Setting

    1. Scroll through your Connect settings to find the toggle labeled “Separate calls for order and artwork.”

    2. By default, this might be set to False on existing platforms.

  3. Enable or Disable the Setting

    1. Switch the toggle to True if you want the system to immediately send order data to PrintIQ.

    2. If left False, the system will continue waiting for finalized artwork before notifying PrintIQ (the legacy behavior).

    3. After making your selection, save your changes.

  4. Review ‘Allow Ordering Without Artwork’

    1. If required, enable Allow ordering without artwork in your catalog or specific product variant settings.

    2. This ensures orders can be placed even if the product artwork isn’t complete at checkout.

  5. Testing Your Setup

    1. Place a test order on your storefront.

    2. Verify that the order appears in PrintIQ immediately after checkout.

    3. Once the artwork finalizes, check that a second call occurs, attaching the finalized design to the existing order in PrintIQ


Tip:
If you notice that after disabling the feature, your first new order still sends the call early, it’s likely due to temporary caching. Place a second order or clear the cache to confirm your updated setting has taken effect.


That’s it! Once you have Separate calls for order and artwork enabled, you’ll be able to send orders instantly to PrintIQ, saving time and speeding up production. If you have any issues or need additional guidance, be sure to contact our support team or consult our other Academy articles.

Synchronizing Shipping Costs from PrintIQ

 

This guide explains how to synchronize shipping costs between Infigo and PrintIQ, to appear during the checkout process. It provides a comprehensive walkthrough for configuring the integration, mapping delivery methods, and validating the synchronization. The goal is to ensure accurate and seamless shipping cost updates for end-users.

For additional information and detailed tutorials, the Infigo Academy offers extensive resources on a wide variety of topics. Visit the Infigo Academy to search and browse our content.


2. Contents

  1. Overview
  2. Contents
  3. Key Points and Takeaways
  4. Key Settings
  5. Step-by-Step Guide
  6. FAQs
  7. Alternate Search Terms

3. Key Points and Takeaways

  • This feature allows syncing shipping rates from PrintIQ to Infigo during checkout.
  • The Use Print IQ Delivery Rates setting must be enabled in the Connect settings.
  • Delivery methods in Infigo must be mapped to PrintIQ delivery types using external IDs (Mapped using the green Connect Link buttons).
  • Only mapped delivery methods with valid rates will be displayed during checkout.

4. Key Settings

Use Print IQ Delivery Rates

  • Path: Configuration > Plugins > Connect Plugins > Configure (on Connect: printIQ row) > Delivery Settings (section) > Use Print IQ Delivery Rates
  • Explanation: Enables synchronization of shipping rates between Infigo and PrintIQ. When enabled, this replaces the manual Delivery Mapping Table displayed below it.

Order Submission Approach

  • Path: Configuration > Plugins > Connect Plugins > Configure (on Connect: printIQ row) > Other Settings (section) > Order Submission Approach
  • Explanation: This must be set to "Append additional order line items to the same quote" for proper syncing.

5. Step-by-Step Guide

Follow these steps to enable and configure the synchronization of shipping costs between Infigo and PrintIQ:

Step 1: Enable Shipping Cost Synchronization

  1. Log in to your Infigo storefront and navigate to the settings page for the Connect: printIQ plugin
    • Path: Configuration > Plugins > Connect Plugins > Configure (on Connect: printIQ row)
  2. Locate the Use Print IQ Delivery Rates setting and enable it.
    • If disabled, the manual Delivery Mapping Table will be used instead.
  3. Ensure the Order Submission Approach setting is set to “Append additional order line items to the same quote”. Other options are not valid for this functionality.
  4. Save the settings.

Step 2: Configure Delivery Method Mapping

  1. In PrintIQ, log in to your admin dashboard and navigate to Manage Freight > Delivery Types to view available delivery configurations.
  2. Note the Delivery Type Name for each method you want to map.

  3. In Infigo, create or edit delivery methods and add the External ID corresponding to the PrintIQ Delivery Type Name.
    • Navigate to the Delivery Methods page





    • The green Connect Link button on the corresponding delivery method row will give you access to input the External ID.




  4. Save your changes.

Step 3: Test and Validate Synchronization

  1. Add products to your basket in the Infigo storefront.
  2. Proceed through the checkout process and monitor the following steps:
    • Billing Address
    • Shipping Address
    • Delivery Method Selection
  3. Validate that only mapped delivery methods with rates from PrintIQ are displayed at the Delivery Method step.
  4. Adjust product quantities or details, then revisit the Delivery Method step to confirm cache refresh and updated rates.




6. FAQs

Q: What happens if a delivery method doesn’t have an external ID in Infigo?
A: The system falls back to the Delivery Mapping Table if configured. If no match is found, the delivery method won’t appear during checkout.

Q: How long is the cache duration for shipping options?
A: Shipping options are cached for 5 minutes. Any changes to payloads will trigger a new API call after this period.

Q: What if some delivery types don’t return rates?
A: Delivery types that do not appear in the PrintIQ API response (GetPrice/GetPriceForProduct) will not be displayed during checkout.

Q: Can I use this feature if I’ve set the Order Submission Approach to “Raise independent quotes”?
A: No, this feature is not supported with this configuration.

 


For additional information and detailed tutorials, the Infigo Academy offers extensive resources on a wide variety of topics. Visit the Infigo Academy to search and browse our content.

Upgraded Custom Quoting: Select Wholesale/Retail Price Lists from printIQ

 

This upgrade(September 2025) adds explicit price list selection to Custom Product quoting within Connect: printIQ. Previously, if no price list was passed in the getprice API call, printIQ used its default price list, which could differ from what you intended. With this enhancement, you can define which printIQ price table to use—Wholesale or Retail—and control it globally or per product.

Two new configurable fields power this feature:

  • WholesalePricelist

  • RetailPricelist

You can set them at:

  • Storefront (Connect plugin) level — acts as a fallback.

  • Product mapping level (including Variant/Group and Attribute Combination) — overrides the fallback.

Selection logic

  1. If set on the product (or attribute combination) → that value is sent.

  2. If product is blank → the storefront fallback is sent.

  3. If both are blank → the property is not sent; printIQ uses its default price list (unchanged from previous behavior).

Scope

  • Updates only the Custom Product external popup configuration.

  • Applies at Product, Product Variant/Group, and Product Attribute Combination levels.


Key settings

Product level

Group: Price settings

  • Wholesale Price list

  • Retail Price list

Use product-level values when a specific product (or attribute combination) must always quote against a particular wholesale/retail table.

Storefront level (Connect plugin settings)

  • Wholesale Price list fallback

  • Retail Price list fallback

Use storefront fallbacks to set your store-wide default wholesale/retail lists; product-level values override these.


Use cases

  • B2B vs B2C routing
    Ensure trade customers quote against a wholesale table while consumers quote retail, without manual intervention.

  • Mixed catalog rules
    Some products use a special wholesale table while others stay on retail; product-level overrides keep this tidy.

  • Attribute-specific pricing
    Premium finishes or bundles can map to a different price table by setting values on the attribute combination.


Step-by-step implementation guide

  1. Set storefront fallbacks (recommended)

    • Navigate to Connect Plugins > Configure [Connect: PrintIQ] > Data Mapping [Section].

    • Enter values for:

      • Wholesale Price list fallback

      • Retail Price list fallback

    • Save.
      These become your global defaults whenever a product doesn’t provide its own list.

  2. Configure product-level overrides (as needed)

    • Open the relevant product utilising printIQ Custom Quoting.

    • Click the green Connect Link icon on the required level (Full product, attribute combination, etc)

    • In Price settings:

      • Set Wholesale Price list (leave empty to inherit the storefront fallback).

      • Set Retail Price list (leave empty to inherit the storefront fallback).

    • Save.

  3. How values are sent to printIQ

    • Product/combination value present → send that value in getprice.

    • Product empty + storefront fallback present → send fallback value in getprice.

    • Both empty → do not send the property; printIQ uses its default table

    •  

Bi‑Directional Order & Job Status Synchronisation

 

Keep job and order statuses perfectly aligned in both Infigo and printIQ systems using Infigo's Connect: printIQ plugin.

In this article, we'll take a look at the status information that can be passed to and fro between the two systems.


1. What the feature does

Action Result
Cancel a Print‑on‑Demand or custom job in Infigo The matching job is automatically cancelled in printIQ.
Cancel a Print‑on‑Demand or custom job in printIQ The matching job is automatically cancelled in Infigo.
Cancel a stock item in printIQ The matching stock line is cancelled in Infigo.(Infigo‑initiated stock cancellations will follow once printIQ adds support.)
Dispatch / shipping updates Still handled by the long‑standing /changestatus webhook—no change here.

2. Endpoints available in your storefront

You’ll find all the links in Admin ▶ Connect Plugins ▶ Configure [Connect: printIQ] ▶ Webhook actions.

Purpose Endpoint
Cancel or otherwise update Print‑on‑Demand / custom jobs …/mishandler/{storefrontId}/Mis.PrintIQ/updatejobstatus
Cancel or otherwise update stock order lines …/mishandler/{storefrontId}/Mis.PrintIQ/updateorderstatus
Dispatch / delivery status (existing) …/mishandler/{storefrontId}/Mis.PrintIQ/changestatus

 


3. How to configure — step‑by‑step

Where What to do
Infigo 1. Make sure Connect: printIQ is enabled (Connect Settings).2. Go to Admin ▶ Connect Plugins ▶ Configure [Connect: printIQ] ▶ Webhook actions and copy the updatejobstatus and updateorderstatus URLs.
printIQ 3. Send those two URLs to printIQ support (or add them yourself in Administration ▶ External Webhooks).  • Configure Job Cancelled events to call updatejobstatus.  • Configure Order/Stock Cancelled events to call updateorderstatus.
Done! No further setup inside Infigo. The existing changestatus link should already be in printIQ for dispatch/shipping updates, but can be added in the same way if required.

4. Testing the flow

  1. Place an order containing a Print‑on‑Demand, a custom and (optionally) a stock item.

  2. Cancel one of the items in printIQ.
    The corresponding line in Infigo should change to “Cancelled” within seconds.

  3. Cancel a job or the whole order in Infigo.
    Refresh printIQ; the linked job(s) will show “Cancelled.”

  4. Verify that dispatch/shipping updates are still coming through via /changestatus.


5. Need more detail?

Our printIQ integration tutorials and troubleshooting guides live in the Infigo Academy:
👉 https://academy.infigo.net/c/75

If anything doesn’t behave as described, raise a ticket with our Customer Support team and include the storefront details and order number.


Recap

  • Two new webhooks (updatejobstatus & updateorderstatus) power the cancellation flow as of April 2025.

  • /changestatus continues to handle dispatch/shipping events—no changes required.

  • Only printIQ needs updating: input the two new URLs into their External Webhooks list.

  • Stock cancellations currently flow from printIQ to Infigo only.

Enjoy the peace of mind that comes with perfectly synchronised order data!

Are versioned products (for Multipart products) supported in PrintIQ?

 

At the time of writing (Janauary 2026), versioned / versioning products are not supported with printIQ.

Can I add two external IDs to a single customer in a single Storefront for use with the PrintIQ integration?

 

No. The system supports only a one-to-one relationship. One customer to one linked External ID on a single storefront.

I'm getting this error when placing a order: Unable to accept a quote that has unpriced lines

 

The Full MIS failed message:

Connect Failed

Connect Create Order call failed for plugin Mis.PrintIQ. Connect PrintIQ: This job was not sent. QuoteNo: Qxxxxxx was not marked as accepted. Accept Quote API Call was not successful for QuoteNo - Qxxxxxx. The Error Message - Unable to accept a quote that has unpriced lines

A: This error normally means part of the quote failed to price, so it can't be accepted. Print IQ usually asks customers to ensure the product's price within PIQ before adding to Infigo, this usually stops the error occurring.

Can Pack Quantities be sent from PIQ with the Product Sync?

 

At the moment, only Stock items can have additional mapping added where you’re able to set the packing quantity.
For the other product types, you will need to manually update the pack QTY in the product variant after the sync has happened.


To do this, you'll need to know (or confirm with PIQ) the property path for that field on the syncstockproducts event.

You may also need to check to see if the Pack Quantity field is available in ~/Admin/ReferenceFields.aspx within PIQ. If you're unsure of the field path or can’t locate it, it might be worth reaching out to the PIQ team directly for assistance with identifying the correct path.

Incomplete

Can’t find what you need?

Ask our Infigo Support Team for help..

🔎
Loading…
    Select a Problem Solver