Connect: printIQ

For all PrintIQ Academy Content please click here

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.

 mceclip0.png

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'. 

mceclip0.png

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

mceclip1.png

 

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'.

mceclip2.png

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:

mceclip0.png

  • 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)

 

mceclip1.png

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).

mceclip0.png

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.

Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.