{"id":23018,"date":"2026-03-30T17:35:03","date_gmt":"2026-03-30T16:35:03","guid":{"rendered":"https:\/\/insituafx.com\/?page_id=23018"},"modified":"2026-04-03T16:45:59","modified_gmt":"2026-04-03T15:45:59","slug":"constructeur-de-flux-de-travail-bluefx","status":"publish","type":"page","link":"https:\/\/insituafx.com\/fr\/bluefx-workflow-builder\/","title":{"rendered":"BlueFX Workflow Builder"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"23018\" class=\"elementor elementor-23018\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-42c24c72 e-con-full e-flex e-con e-parent\" data-id=\"42c24c72\" data-element_type=\"container\" data-e-type=\"container\" id=\"ifx-builder-shell\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5c168424 elementor-widget elementor-widget-html\" data-id=\"5c168424\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"ifx-builder-shell\" class=\"ifx-builder-shell\">\n<h1 class=\"ifx-seo-h1\">BlueFX Workflow Builder<\/h1>\n<div id=\"ifx-loader\" class=\"ifx-loader\" role=\"status\" aria-live=\"polite\">\n<img decoding=\"async\"\n      class=\"ifx-loader__logo\"\n      src=\"https:\/\/insituafx.com\/wp-content\/uploads\/BlueWorkflow\/Images\/IFX_Square_Logo_Black_BG.webp\"\n      alt=\"Free interactive BlueFX Workflow Builder from InsituaFX. A professional web application to design custom photo lab print workflows in three stages. Map your order sources including Shopify, GotPhoto, Kiosk hardware, and CSV files, then configure BlueControl automation features like PackFX package printing, ICC color management, and cluster routing. The tool allows you to select hardware compatibility for Fujifilm Frontier (DX400, DX100, DE100) and Epson SureLab (D1070, D1000, D3000), alongside Noritsu and Agfa systems. The interface builds a live, personalized workflow diagram used by professional drylabs, school photo labs, and print-on-demand studios worldwide to optimize production. No login required.\"\n    \/>\n<div class=\"ifx-loader__spinner\" aria-hidden=\"true\"><\/div>\n<div class=\"ifx-loader__text\">Loading BlueFX Workflow Builder...<\/div>\n<\/div>\n<div id=\"ifx-builder-content\"><\/div>\n<\/div>\n<style>\n  .ifx-builder-shell{\n    position:relative;\n    min-height:280px;\n    background:transparent !important;\n    box-shadow:none !important;\n  }\n \n  .ifx-seo-h1{\n    position:absolute !important;\n    width:1px !important;\n    height:1px !important;\n    margin:-1px !important;\n    padding:0 !important;\n    border:0 !important;\n    overflow:hidden !important;\n    clip:rect(0,0,0,0) !important;\n    clip-path:inset(50%) !important;\n    white-space:nowrap !important;\n  }\n  #ifx-builder-content{\n    opacity:1;\n    transform:none;\n    transition:opacity .25s ease;\n  }\n  .ifx-loader{\n    position:absolute;\n    inset:0;\n    z-index:9999;\n    display:flex;\n    flex-direction:column;\n    align-items:center;\n    justify-content:center;\n    gap:10px;\n    background:#f7fbff;\n    color:#1F3864;\n    font:600 14px\/1.3 Arial, Helvetica, sans-serif;\n    transition:opacity .25s ease;\n  }\n  .ifx-loader__logo{\n    width:54px;\n    height:54px;\n    object-fit:contain;\n    opacity:.92;\n    filter:drop-shadow(0 2px 6px rgba(31,56,100,.15));\n  }\n  .ifx-loader__spinner{\n    width:34px;\n    height:34px;\n    border:4px solid #D6E6F7;\n    border-top-color:#2E75B6;\n    border-radius:50%;\n    animation:ifx-spin .8s linear infinite;\n  }\n  @keyframes ifx-spin { to { transform: rotate(360deg); } }\n  .ifx-loader--error .ifx-loader__spinner{ display:none; }\n  .ifx-loader--error .ifx-loader__text{ color:#B01348; }\n  \/* Hidden Elementor form widget container *\/\n  #ifx-elementor-mail-form{\n    position:absolute !important;\n    left:-99999px !important;\n    width:1px !important;\n    height:1px !important;\n    overflow:hidden !important;\n    opacity:0 !important;\n    pointer-events:none !important;\n  }\n<\/style>\n<script>\n\/* Elementor helper: called by builder submitCTA() as primary path *\/\nwindow.ifxSendViaElementor = function(payload){\n  var host = document.getElementById('ifx-elementor-mail-form');\n  var form = host ? host.querySelector('form') : null;\n  if(!form){\n    throw new Error('Elementor hidden form not found (#ifx-elementor-mail-form form)');\n  }\n  function setField(name, value){\n    var el =\n      form.querySelector('[name=\"form_fields[' + name + ']\"]') ||\n      form.querySelector('#form-field-' + name) ||\n      form.querySelector('[name=\"' + name + '\"]');\n    if(el){\n      el.value = value || '';\n      el.dispatchEvent(new Event('input', { bubbles:true }));\n      el.dispatchEvent(new Event('change', { bubbles:true }));\n      return true;\n    } else {\n      console.warn('Could not find Elementor field for:', name);\n      return false;\n    }\n  }\n  var mappedCount = 0;\n  if(setField('wf_name', payload.name)) mappedCount++;\n  if(setField('wf_email', payload.email)) mappedCount++;\n  if(setField('wf_sources', payload.sources)) mappedCount++;\n  if(setField('wf_features', payload.features)) mappedCount++;\n  if(setField('wf_printers', payload.printers)) mappedCount++;\n  if(setField('wf_products', payload.products)) mappedCount++;\n  if(setField('wf_note', payload.note)) mappedCount++;\n  if(setField('wf_page_url', payload.page_url)) mappedCount++;\n  if(setField('wf_snapshot', payload.workflow_snapshot_data_url)) mappedCount++;\n  if(mappedCount === 0){\n    throw new Error('No Elementor fields mapped. Check field IDs in Elementor.');\n  }\n  var submitBtn = form.querySelector('button[type=\"submit\"], .elementor-button[type=\"submit\"]');\n  if(!submitBtn){\n    throw new Error('Elementor submit button not found');\n  }\n  return new Promise(function(resolve, reject){\n    var done = false;\n    var timer = setTimeout(function(){\n      if(done){ return; }\n      done = true;\n      resolve({ success:true, source:'timeout', mapped:mappedCount });\n    }, 5000);\n    function finishOk(meta){\n      if(done){ return; }\n      done = true;\n      clearTimeout(timer);\n      resolve(meta || { success:true, source:'event', mapped:mappedCount });\n    }\n    function finishFail(err){\n      if(done){ return; }\n      done = true;\n      clearTimeout(timer);\n      reject(err || new Error('Elementor submission failed'));\n    }\n    form.addEventListener('submit_success', function(){\n      finishOk({ success:true, source:'submit_success', mapped:mappedCount });\n    }, { once:true });\n    form.addEventListener('submit_error', function(){\n      finishFail(new Error('submit_error event'));\n    }, { once:true });\n    submitBtn.click();\n  });\n};\n(async function () {\n  var shell = document.getElementById('ifx-builder-shell');\n  var loader = document.getElementById('ifx-loader');\n  var content = document.getElementById('ifx-builder-content');\n  if (!shell || !content) { return; }\n  function setLoaderError(msg){\n    if(!loader){ return; }\n    loader.classList.add('ifx-loader--error');\n    var text = loader.querySelector('.ifx-loader__text');\n    if(text){ text.textContent = msg || 'Workflow builder is temporarily unavailable.'; }\n  }\n  function hideLoader(){\n    if(!loader){ return; }\n    loader.style.opacity = '0';\n    setTimeout(function(){\n      if(loader && loader.parentNode){ loader.parentNode.removeChild(loader); }\n    }, 260);\n  }\n  function injectBuilderHtmlWithScripts(target, html) {\n    var parser = new DOMParser();\n    var doc = parser.parseFromString(html, 'text\/html');\n    Array.from(doc.head.querySelectorAll('link[rel=\"stylesheet\"],style')).forEach(function (node) {\n      document.head.appendChild(node.cloneNode(true));\n    });\n    target.innerHTML = doc.body ? doc.body.innerHTML : html;\n    Array.from(target.querySelectorAll('script')).forEach(function (oldScript) {\n      var newScript = document.createElement('script');\n      Array.from(oldScript.attributes).forEach(function (attr) {\n        newScript.setAttribute(attr.name, attr.value);\n      });\n      if (!oldScript.src) { newScript.textContent = oldScript.textContent; }\n      oldScript.parentNode.replaceChild(newScript, oldScript);\n    });\n  }\n  try {\n    var tokenRes = await fetch('\/wp-json\/ifx\/v1\/builder-token', {\n      method:'GET',\n      credentials:'same-origin'\n    });\n    if (!tokenRes.ok) throw new Error('Token request failed: ' + tokenRes.status);\n    var tokenJson = await tokenRes.json();\n    var builderRes = await fetch('\/wp-json\/ifx\/v1\/builder?raw=1', {\n      method:'POST',\n      headers:{\n        'Content-Type':'application\/json',\n        'Accept':'text\/html'\n      },\n      credentials:'same-origin',\n      body:JSON.stringify({\n        token:tokenJson.token,\n        payload:tokenJson.payload\n      })\n    });\n    if (!builderRes.ok) throw new Error('Builder request failed: ' + builderRes.status);\n    var builderHtml = await builderRes.text();\n    \/* Safety fallback for stacks returning quoted JSON string text *\/\n    if (builderHtml && builderHtml.charAt(0) === '\"' && builderHtml.indexOf('\\\\n') !== -1) {\n      try { builderHtml = JSON.parse(builderHtml); } catch(e) {}\n    }\n    if (!builderHtml || !builderHtml.trim()) {\n      throw new Error('Builder response missing html payload');\n    }\n    injectBuilderHtmlWithScripts(content, builderHtml);\n    hideLoader();\n  } catch (err) {\n    console.error('IFX Builder loader:', err);\n    setLoaderError('Workflow builder is temporarily unavailable. Please contact InsituaFX.');\n  }\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-92c7f3e e-con-full e-flex e-con e-parent\" data-id=\"92c7f3e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e284d2b elementor-button-align-end elementor-widget elementor-widget-form\" data-id=\"e284d2b\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"ifx-elementor-mail-form\" data-settings=\"{&quot;step_next_label&quot;:&quot;Next&quot;,&quot;step_previous_label&quot;:&quot;Previous&quot;,&quot;button_width&quot;:&quot;100&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"BlueWorkflowServerMail\" aria-label=\"BlueWorkflowServerMail\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"23018\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"e284d2b\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"\" \/>\n\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-above\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-hidden elementor-field-group elementor-column elementor-field-group-field_5dce227 elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"hidden\" name=\"form_fields[field_5dce227]\" id=\"form-field-field_5dce227\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-hidden elementor-field-group elementor-column elementor-field-group-field_a63981b elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"hidden\" name=\"form_fields[field_a63981b]\" id=\"form-field-field_a63981b\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-hidden elementor-field-group elementor-column elementor-field-group-field_1bee85d elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"hidden\" name=\"form_fields[field_1bee85d]\" id=\"form-field-field_1bee85d\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-hidden elementor-field-group elementor-column elementor-field-group-field_c730545 elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"hidden\" name=\"form_fields[field_c730545]\" id=\"form-field-field_c730545\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-hidden elementor-field-group elementor-column elementor-field-group-field_dd51bae elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"hidden\" name=\"form_fields[field_dd51bae]\" id=\"form-field-field_dd51bae\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-hidden elementor-field-group elementor-column elementor-field-group-field_998894e elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"hidden\" name=\"form_fields[field_998894e]\" id=\"form-field-field_998894e\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-hidden elementor-field-group elementor-column elementor-field-group-field_8e8b1d6 elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"hidden\" name=\"form_fields[field_8e8b1d6]\" id=\"form-field-field_8e8b1d6\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-hidden elementor-field-group elementor-column elementor-field-group-field_7b15b53 elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"hidden\" name=\"form_fields[field_7b15b53]\" id=\"form-field-field_7b15b53\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-hidden elementor-field-group elementor-column elementor-field-group-field_86dd9d8 elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"hidden\" name=\"form_fields[field_86dd9d8]\" id=\"form-field-field_86dd9d8\" class=\"elementor-field elementor-size-sm  elementor-field-textual\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button class=\"elementor-button elementor-size-md\" type=\"submit\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-location-arrow\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Send<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>BlueFX Workflow Builder Loading BlueFX Workflow Builder&#8230;<\/p>","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-23018","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/insituafx.com\/fr\/wp-json\/wp\/v2\/pages\/23018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/insituafx.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/insituafx.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/insituafx.com\/fr\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/insituafx.com\/fr\/wp-json\/wp\/v2\/comments?post=23018"}],"version-history":[{"count":3,"href":"https:\/\/insituafx.com\/fr\/wp-json\/wp\/v2\/pages\/23018\/revisions"}],"predecessor-version":[{"id":23259,"href":"https:\/\/insituafx.com\/fr\/wp-json\/wp\/v2\/pages\/23018\/revisions\/23259"}],"wp:attachment":[{"href":"https:\/\/insituafx.com\/fr\/wp-json\/wp\/v2\/media?parent=23018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}