CINXE.COM
How To Install Swifty - Helpjuice
<!-- ## ## ######## ## ######## ## ## ## #### ###### ######## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ######### ###### ## ######## ## ## ## ## ## ###### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ######## ######## ## ###### ####### #### ###### ######## Powered by Helpjuice (https://www.helpjuice.com): The Ultimate Knowledge Base Solution --> <!DOCTYPE html> <html class="no-js" lang="en_US"> <head> <meta name="og:image" content="https://static.helpjuice.com/helpjuice_production/uploads/question/preview_image/1885/583332/preview-226f98469d695fd687c6d9a95d68adad20240927-2-5tuwf0.png" /> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"56aae830c8","applicationID":"15354177","transactionName":"JllXTUtXClVdF00NCwpBVVxdXwNmWgQRA0oOWFZOVV0CXl1KEQ4KEg==","queueTime":5,"applicationTime":156,"agent":""}</script> <script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"56aae830c8",applicationID:"15354177"};;/*! For license information please see nr-loader-rum-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>g,gD:()=>h,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function g(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function h(e,t){if(!e)throw new Error(f);var r=g(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.274.0",i="PROD",o="CDN"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>d,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,d=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=h(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=m()[s[e]];p&&p.push([f,e,r,a]);return a},get:v,listeners:h,context:g,buffer:function(e,t){const r=m();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!m()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=h(e).concat(t)}function h(e){return n[e]||[]}function v(t){return d[t]=d[t]||e(f,t)}function m(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},3434:(e,t,r)=>{"use strict";r.d(t,{YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log";n.K7.logging},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(2614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7603:(e,t,r)=>{"use strict";r.d(t,{j:()=>P});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),g=r(384),p=r(6344);const h=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],v=["setErrorHandler","finished","addToTrace","addRelease"];var m=r(1863),b=r(2614),y=r(993);var w=r(2646),A=r(3434);function R(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,A.YM)(i),a=new w.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function E(){const e=(0,g.pV)();h.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function _(e,t,g=!1){t||(0,c.Ak)(e,"api");const h={};var w=s.ee.get(e),A=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var E="api-",_=E+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(E,n,!0,o||null===r?"session":void 0)(t,r)}function T(){}h.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,m.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},h.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),R(w,e,t,{customAttributes:r,level:i})},v.forEach((e=>{h[e]=j(E,e,!0,"api")})),h.addPageAction=j(E,"addPageAction",!0,n.K7.genericEvents),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(E,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},h.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},h.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},h.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},h[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},h[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},h.interaction=function(e){return(new T).get("object"==typeof e?e:{})};const S=T.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,m.t)(),e,r],i,n.K7.spa,w),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,m.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,m.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[(0,m.t)(),...arguments],r?null:this,i,w),r?void 0:this}}function k(){r.e(296).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{S[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),h.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(E,"routeName",!0,n.K7.spa),h.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,m.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},d.RI?(0,u.GG)((()=>k()),!0):k(),h}var N=r(9417),T=r(8122);const S={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},j={};var k=r(5284);const I=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let O=!1;function P(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:l={},exposed:f=!0}=t;l.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,N.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");j[e]=(0,T.a)(t,S);const r=(0,g.nY)(e);r&&(r.loader_config=j[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},d.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const h=(0,N.D0)(e.agentIdentifier),v=[c.beacon,c.errorBeacon];O||(h.proxy.assets&&(I(h.proxy.assets),v.push(h.proxy.assets)),h.proxy.beacon&&v.push(h.proxy.beacon),E(),(0,g.US)("activatedFeatures",k.B),e.runSoftNavOverSpa&&=!0===h.soft_navigations.enabled&&h.feature_flags.includes("soft_nav")),l.denyList=[...h.ajax.deny_list||[],...h.ajax.block_internal?v:[]],l.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,l),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=_(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),O=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.274.0.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={296:"sha512-gkYkZDAwQ9PwaDXs2YM+rNIdRej1Ac1mupWobRJ8eahQcXz6/sunGZCKklrzi5kWxhOGRZr2tn0rEKuLTXzfAA=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={840:0,374:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(7603);var l=i(1687),f=i(4234),g=i(5289),p=i(6154),h=i(384);const v=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function m(e){return!!(0,h.dV)().o.MO&&v(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(6389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(v(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,3861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(296).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return m(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(6630);class A extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var R=i(9908),E=i(2843),x=i(3878),_=i(782),N=i(1863);class T extends y{static featureName=_.T;constructor(e,t=!0){super(e,_.T,t),p.RI&&((0,E.u)((()=>(0,R.p)("docHidden",[(0,N.t)()],void 0,_.T,this.ee)),!0),(0,x.sp)("pagehide",(()=>(0,R.p)("winPagehide",[(0,N.t)()],void 0,_.T,this.ee))),this.importAggregator(e))}}var S=i(3969);class j extends y{static featureName=S.TZ;constructor(e,t=!0){super(e,S.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,h.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(A),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,h.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[A,T,j],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>How To Install Swifty - Helpjuice</title> <meta name="description" content="Installing Swifty Please note: Before Installing Swifty, You MUST Have A Helpjuice.com Account. To Install Swifty, you must have access to the web app you'" /> <!-- Facebook Open Graph data --> <meta property="og:title" content="How To Install Swifty" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://help.helpjuice.com/swifty-in-app-widget/how-to-install-swifty" /> <meta property="og:description" content="Installing Swifty Please note: Before Installing Swifty, You MUST Have A Helpjuice.com Account. To Install Swifty, you must have access to the web app you'" /> <meta property="og:site_name" content="Helpjuice" /> <!-- Twitter Card data --> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="How To Install Swifty"> <meta name="twitter:description" content="Installing Swifty Please note: Before Installing Swifty, You MUST Have A Helpjuice.com Account. To Install Swifty, you must have access to the web app you'"> <meta name="twitter:image:src" content=""> <link rel="shortcut icon" type="image/png" href="https://static.helpjuice.com/helpjuice_production/uploads/upload/image/12982/2739708/favicon.png" /> <link rel="stylesheet" href="https://s3.amazonaws.com/assets.helpjuice.com/fontawesome/css/all.min.css"> <link rel="stylesheet" href="https://helpjuice-static.s3.amazonaws.com/assets.helpjuice.com/country-flags/flags.min.css"> <link rel="stylesheet" href="/feedbacks.css"> <script src="/feedbacks.js" defer></script> <link rel="stylesheet" href="/knowledgebase.css"> <script src="/knowledgebase.js" defer></script> <link href="https://static.helpjuice.com/helpjuice_production/uploads/account/1885/main_css_1885-7b266bb54d35495fe729b7c76ace5d7f4974bac02a79e84ee8d89d69131d3826.css" media="all" rel="stylesheet" /> <link rel="stylesheet" href="https://helpjuice-static.s3.amazonaws.com/assets.helpjuice.com/highlight/highlight.min.css" /> <script src="https://helpjuice-static.s3.amazonaws.com/assets.helpjuice.com/highlight/highlight.min.js"></script> <script>if ((location.pathname == "/getting-started/embedding-helpjuice-in-a-web-page") || (location.pathname == "/embedding-helpjuice-in-a-web-page")) { location.href = "/getting-started/how-to-install-helpjuice"; }</script> <script> var standardURL = '/en_US/swifty-in-app-widget/how-to-install-swifty'; if (!location.search.includes("draft=true") && location.pathname !== standardURL) { location.href = standardURL + location.search + location.hash; } </script> <script>var enabledAISearch = true;</script> <meta name="question-id" content="583332"><meta name="category-id" content="101877"><meta name="flow-id" content=""><meta name="current-language" content="en_US"><meta name="knowledge-base-url" content="https://help.helpjuice.com/?kb_language=en_US"><meta name="current-user-id" content=""><meta name="ignore-users-analytics" content="false"><meta name="reading-timeout" content="10000"><meta name="account-subdirectory-prefix" content=""><meta name="current-account-id" content="1885"><meta name="account-subdomain" content="help"><meta name="helpjuice-knowledge-base-url" content="https://help.helpjuice.com/"><meta name="chat-theme-color" content="#0E68CA"><meta name="chat-position" content="bottomRight"><meta name="chat-links-color" content="#0e68ca"><meta name="chat-link-sources" content="true"><meta name="chat-header" content="Swifty AI chat"><meta name="chat-welcome-header" content="Ask Anything With Swifty AI Chat"><meta name="chat-welcome-message" content="Need answers? Let us guide you with a wide range of helpful articles and suggested questions "><meta name="chat-input-placeholder" content="Ask, write, or search for anything..."><meta name="chat-no-results-message" content="Sorry, we couldn't find any results. Please contact our team for further assistance."><meta name="search-theme-color" content="#FFFFFF"><meta name="search-placeholder" content="Search or ask anything..."><meta name="search-text-color" content="#384D60"><meta name="search-enable-ai" content="true"><meta name="search-ask-ai-title" content="Ask Swifty AI"><meta name="search-allow-highlighting" content="true"></head> <body class="question_page" data-controller="search"> <div class="archived-question-note"> <div class="container"> <p>You are viewing an Archived item in your Knowledge Base, it is not publicly accessible.</p> </div> </div> <header id="main-header" class="search-bar"> <div class="container"> <div class="two-col-layout"> <div class="column-left"> <div id="branding"> <a href="/" class="logo"><img src="https://static.helpjuice.com/assets/marketing/helpjuice-logo-assets/helpjuice-svg-dcc8347561df3f85c292545f0edd172b26738b869b1c2fe46fd1a0e28b63b99c.svg" width: "146"></a> </div> <div class="search-form" autocomplete="off"> <div class="search-area"> <input id="search-second" type="search" placeholder="How can we help?" autocomplete="off"> <span class="closeSearch"><i class="far fa-times"></i></span> </div> <article id="search_results_second" style="display: none;"> <div id="results-second"> <div class="page_title"> <div class="left-align"> <h1 class="intro center"></h1> </div> </div> <div class="row"> <div class=""> <ul class="list search-results-second"> <!-- load search results here --> </ul> </div> </div> </div> <div id="no-results-second" class="hidden"> <div class="no-results-wrap js_equalise_is_landing"> <!-- if no results found => show contact form --> <div class="contact"> <h1>Contact Us</h1> <p>If you still have questions or prefer to get help directly from an agent, please submit a request. <br/>We鈥檒l get back to you as soon as possible.</p> <div class="contact-form"> <form accept-charset='UTF-8' action='/questions' class='form floating-labels' id='new_question' method='post'> <fieldset> <p>Please fill out the contact form below and we will reply as soon as possible.</p> <!-- Don't modify or delete this below --> <input type='hidden' value='1885' name='question[account_id]' id='question_account_id'> <input placeholder="Your email" class="field email" type="email" name='question[email]' id='question_email' required> <input placeholder="Your question" type="text" class="field message" name='question[name]' id='question_name' required> <textarea placeholder="Description (details)" class="field message" type='text' name='question[description]' id='question_description'></textarea> <div><script src="https://www.google.com/recaptcha/api.js" async defer></script> <script> var invisibleRecaptchaSubmit = function () { var closestForm = function (ele) { var curEle = ele.parentNode; while (curEle.nodeName !== 'FORM' && curEle.nodeName !== 'BODY'){ curEle = curEle.parentNode; } return curEle.nodeName === 'FORM' ? curEle : null }; var eles = document.getElementsByClassName('g-recaptcha'); if (eles.length > 0) { var form = closestForm(eles[0]); if (form) { form.submit(); } } }; </script> <button type="submit" class="g-recaptcha contact-form-submit" data-callback="invisibleRecaptchaSubmit" data-sitekey="6Ldwy9kZAAAAABROvA1eC9EaMW77fNG8338WxP6s">Submit</button> </div> </fieldset> </form> </div> </div> </div> </div> </article> </div> </div> <div class="column-right"> <a href="#" class="open-user-nav"><i class="far fa-bars"></i></a> <nav class="user-nav"> <header> <a href="/" class="nav-logo"><span class="altLogo"></span></a> <a href="#" class="close-user-nav"><i class="far fa-times"></i></a> </header> <ul> <li><a href="https://helpjuice.com/demo">Book a Demo</a></li> <li><a href="https://feedback.helpjuice.com">Product Updates</a></li> <li><a href="/contact-us">Contact Us</a></li> </ul> </nav> </div> </div> </div> </header> <main id="main-content" class="article-content"> <div class="page-intro article-page-intro"> <div class="container"> <ul class="breadcrumbs"> <li><a href="/">Home</a></li> </ul> <div class="article-header"> <div class="col-layout"> <div class="col-left"> <div class="title"> <h1 class="article-title">How To Install Swifty</h1> </div> <div class="author"> <div class="column-left"> <a href="/authors/3868" class="author-image"> <img class="avatar circle" width="96" height="96" style="background: url("/initials_avatars/EH?bg=b03bb3&s=192&fg=fff") 0% 0% / 96px 96px;" src="https://secure.gravatar.com/avatar/5b9ac3cf2f9a563777b37bc9a5571752.png?s=96&d=blank" /> </a> </div> <div class="column-right"> <p class="name">Written by <a href="/authors/3868">Emil Hajric</a></p> <p class="date">Updated at September 27th, 2024, by <a href="/authors/13558" target="_blank" class="last_updated">Amanda Stan莽ani</a></p> </div> </div> </div> <div class="col-right"> <div class="search-form" autocomplete="off"> <input id="search" type="search" placeholder="How can we help?" autocomplete="off"> <i class="far fa-search"></i> <span class="close-search"><i class="far fa-times"></i></span> <article id="search_results" style="display: none;"> <div id="results"> <div class="page_title"> <div class="left-align"> <h1 class="intro center"></h1> </div> </div> <div class="row"> <div class=""> <ul class="list search-results"> <!-- load search results here --> </ul> </div> </div> </div> <div id="no-results" class="hidden"> <div class="no-results-wrap js_equalise_is_landing"> <!-- if no results found => show contact form --> <div class="contact"> <h1>Contact Us</h1> <p>If you still have questions or prefer to get help directly from an agent, please submit a request. <br/>We鈥檒l get back to you as soon as possible.</p> <div class="contact-form"> <form accept-charset='UTF-8' action='/questions' class='form floating-labels' id='new_question' method='post'> <fieldset> <p>Please fill out the contact form below and we will reply as soon as possible.</p> <!-- Don't modify or delete this below --> <input type='hidden' value='1885' name='question[account_id]' id='question_account_id'> <input placeholder="Your email" class="field email" type="email" name='question[email]' id='question_email' required> <input placeholder="Your question" type="text" class="field message" name='question[name]' id='question_name' required> <textarea placeholder="Description (details)" class="field message" type='text' name='question[description]' id='question_description'></textarea> <div><input type="submit" id='question_submit' name='commit' value="Contact Support" class="button"></div> </fieldset> </form> </div> </div> </div> </div> </article> </div> </div> </div> </div> <div class="quick-view-cat"> <ul class="categories-nav"> <li class="item"> <a href="/en_US/getting-started" class="category-item" id="101873">Getting Started</a> <div class="dropdown"> <a href="/en_US/users">Users</a> <a href="/en_US/content-accessibility">Accessibility</a> <a href="/en_US/new-to-helpjuice">New to Helpjuice? Start Here</a> <a href="/en_US/content-management">Content Management </a> <a href="/en_US/languages-and-translations">Multiple Languages/Translations & Localization</a> <a href="/en_US/multilingual-knowledge-bases">Multilingual Knowledge Bases</a> <a href="/en_US/analytics">Analytics</a> <a href="/en_US/video-tutorials">Video Tutorials</a> </div> </li> <li class="item"> <a href="/en_US/customization-guides" class="category-item" id="101870">Customization</a> <div class="dropdown"> <a href="/en_US/customization-advances-guides">Customization Guides</a> </div> </li> <li class="item"> <a href="/en_US/API" class="category-item" id="101875">API V2</a> </li> <li class="item"> <a href="/en_US/api-v3-webhooks" class="category-item" id="110248">API V3 and Webhooks</a> </li> <li class="item"> <a href="/en_US/article-editor" class="category-item" id="101871">Article Editor</a> </li> <li class="item"> <a href="/en_US/billing-subscription" class="category-item" id="101869">Billing / Subscription </a> </li> <li class="item"> <a href="/en_US/authentication" class="category-item" id="265535">Authentication </a> </li> <li class="item"> <a href="/en_US/pricing" class="category-item" id="523508">Pricing</a> </li> <li class="item"> <a href="/en_US/swifty-ai" class="category-item" id="601732">Swifty AI Chatbot</a> </li> <li class="item"> <a href="/en_US/swifty-ai-helpbar" class="category-item" id="601733">Swifty AI Helpbar</a> </li> <li class="item"> <a href="/en_US/what-is-new" class="category-item" id="605433">What's New</a> </li> </ul> <a href="#" class="view-more">+ More</a> </div> </div> </div> <div class="article-content" data-controller="feedbacks" data-feedbacks-load-form-value="/admin/feedbacks/comments/new?question_id=583332"> <div class="container"> <article class="fr-view" data-id="101877" data-action="mouseup->feedbacks#update" data-controller="glossary" data-glossary-url-value="/glossary_terms.json"> <div class="hj-table-of-contents"> <h3 data-toc="false" id="table-of-contents-0">Table of Contents</h3> <a href="#installing-swifty-0" data-tag-name="H2">Installing Swifty</a> <a href="#customizations-1" data-tag-name="H2">Customizations</a> <a href="#which-articles-does-swifty-display-2" data-tag-name="H2">Which Articles Does Swifty Display?</a> <a href="#loading-custom-data-3" data-tag-name="H2">Loading Custom Data</a> <a href="#example-helpjuice-swifty-with-olark-5" data-tag-name="H2">Example: Helpjuice Swifty with Olark</a> <a href="#video-overview-6" data-tag-name="H2">Video Overview</a> </div> <div class="helpjuice-article-body-content helpjuice-editor-content"><h2 id="installing-swifty-0" data-toc="true">Installing Swifty</h2><p style="text-align:center;"><a href="https://helpjuice.com/signup" target="_blank" rel="noopener noreferrer" title=""><span style="color:rgb(147,101,184);"><strong><u>Please note: Before Installing Swifty, You MUST Have A Helpjuice.com Account.</u></strong></span></a></p><p>To Install Swifty, you must have access to the web app you'd like Swifty to appear on. If you'd like for Swifty to appear on every page of your web-app, you'd simply paste the code on every page on your web-app.</p><p class="currently-active">1) Paste this Swifty Embed Javascript snippet before your closing <strong><u></body></u></strong> tag:</p><pre><!-- Helpjuice Will Go Here --><br><script><br>聽 helpjuice_account_url = "https://helps.helpjuice.com";<br><br>聽 //"Contact us" button HREF<br>聽 helpjuice_contact_us_url = 聽"http://help.helpjuice.com/contact-us";<br><br>聽 //On Helpjuice Initialization. Feel free to edit<br>聽 //For Custom activity<br>聽 onHelpjuiceInit = function(){ }<br><br><strong>聽 // You can also customize the look & feel of Swifty聽</strong><br><strong>聽 // using our Config parameter, take a look: </strong><br><strong>聽 // widgetPosition accepts: bottomLeft, topLeft, bottomRight, topRight</strong><br><strong>聽 // </strong><strong>widgetPosition accepts: bottomLeft, topLeft, bottomRight, topRight</strong><br><br><br><span style="color:rgb(184,49,47);"><strong> //helpjuiceSwiftyConfig = {</strong></span><br><span style="color:rgb(184,49,47);"><strong> // widgetPosition: "bottomLeft",</strong></span><br><span style="color:rgb(184,49,47);"><strong>聽 //聽 themeColor: '',</strong></span><br><span style="color:rgb(184,49,47);"><strong>聽 //聽 linkColor: ''</strong></span><br><span style="color:rgb(184,49,47);"><strong>聽 //}</strong></span><br><br><br>聽 // Please use this function if you'd like for JS<br>聽 // to be fired off instead of an HREF Url.<br><br>聽 //onHelpjuiceContactUs = function() { }<br><br></script><br><script async src='https://s3.amazonaws.com/helpjuice-static/helpjuice_production/swifty/helpjuice_inapp.min.js'></script></pre><p>2) Save your file!</p><p>聽</p><h2 id="customizations-1" data-toc="true">Customizations</h2><p id="isPasted">It's possible to change the Swifty icon! Unfortunately, we don't have customization samples for the Helpjuice Swifty widget at the moment, as it would need to be done directly in the front-end code (on the same page where the widget is embedded at).</p><p>This change should be performed on your end, by overriding the default CSS of the Swifty widget. It's a code change and the URL of your CSS file can be found at <a href="https://subdomain.helpjuice.com/swifty.css" data-fr-linked="true">https://subdomain.helpjuice.com/swifty.css</a></p><p>Additionally, you can customize the <i><strong>"Contact Us"</strong></i> button URL, as well as the <strong>Contact Us</strong> and <strong>On Initialization</strong> javascript, in the embed code itself.</p><p>聽</p><h2 id="which-articles-does-swifty-display-2" data-toc="true">Which Articles Does Swifty Display?</h2><p>The Swifty widget displays Public articles, so you must have a Public Knowledge Base for it to work.<br>聽</p><h2 id="loading-custom-data-3" data-toc="true">Loading Custom Data</h2><p>With the latest update of Swifty, you can now call a JavaScript function that allows Swifty to load a search result or popular questions of a given Category.<br>聽</p><pre>openSwifty({search: "OPTIONAL_QUERY_FOR_SEARCH", category: OPTIONAL_CATEGORY_ID })</pre><p>As you can see, the聽<strong>openSwifty聽</strong>function accepts a JSON object, with search, or, category, as the values. Inside search, you may use a string, and inside category, an integer.<br><br>If you only supply聽<strong>search</strong>, it'll run a search for that keyword.<br>If you only supply聽<strong>category</strong>, it'll supply the top 5 articles for that category.<br>If you supply聽<strong>BOTH the search & category,聽</strong>it'll run a search for that keyword, and make sure that it matches that given category.<br><br>You can indeed, have this tied to a link (for example <i>"Read more about this feature"</i>), like so:聽</p><pre><a href="openSwifty({search: "Installing the MacOS File"})">Learn More bout MacOS Installations for this app</a></pre><h2 id="-4">聽</h2><h2 id="example-helpjuice-swifty-with-olark-5" data-toc="true">Example: Helpjuice Swifty with Olark</h2><p>Utilizing the Helpjuice Swifty Custom functions, you can customize Olark to appear & disappear when someone clicks on "Contact Us" in your Helpjuice Swifty Widget button.聽</p><p>Here's a sample Javascript that you'd embed for Helpjuice Swifty to work perfectly with Olark.<br><br>Just make sure you include Swifty <i><strong><u>AFTER</u></strong></i> Olark's embed code.</p><pre><!-- Helpjuice Will Go Here --><br><script><br>聽 helpjuice_account_url = "https://helps.helpjuice.com";<br><br>聽 //"Contact us" button HREF<br>聽 //helpjuice_contact_us_url = 聽"http://google.com/";<br><br><br>聽 onHelpjuiceInit = function(){<br>聽 聽 olark('api.box.hide');<br>聽 }<br>聽 onHelpjuiceContactUs = function() {<br>聽 聽 olark('api.box.show');<br>聽 聽 olark('api.box.expand');<br>聽 聽 $('#helpjuice-widget').fadeOut();<br>聽 }<br><br> //helpjuiceSwiftyConfig = {<br> <strong>聽//</strong> widgetPosition: "bottomLeft",<br> <strong>//</strong> themeColor: '',<br> <strong>//</strong> linkColor: ''<br> <strong>//</strong>}<br><br>聽 //hide Olark on contract.<br>聽 olark('api.box.onShrink', function() {<br>聽 聽 olark('api.box.hide');<br>聽 聽 $('#helpjuice-widget').fadeIn();<br>聽 });<br><br></script><br><script async src='https://s3.amazonaws.com/helpjuice-static/helpjuice_production/swifty/helpjuice_inapp.min.js'></script><br><br><br>聽</pre><p>聽</p><p>聽</p><p>聽</p><h2 id="video-overview-6" data-toc="true">Video Overview</h2><p><strong>How To Install Helpjuice Swifty (Simple):</strong></p><p><span class="fr-video fr-dvb fr-draggable" draggable="true" contenteditable="false"><iframe class="fr-draggable" src="//www.youtube.com/embed/er1kbTxKD_g?wmode=opaque" allowfullscreen="" width="640" height="360" frameborder="0"><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span></iframe>聽</span></p><p><strong>How To Install Helpjuice Swifty + Olark (Advanced):聽</strong></p><p><span class="fr-video fr-dvb fr-draggable" draggable="true" contenteditable="false"><iframe class="fr-draggable" src="//www.youtube.com/embed/0smnA2Q7Ohc?wmode=opaque" allowfullscreen="" width="640" height="360" frameborder="0"><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span><span class="fr-mk" style="display: none;">聽</span></iframe>聽</span></p><p><strong>聽</strong></p></div> <div class="tags"> <a href="/contact-us##search_query=setup swifty"><span>setup swifty</span></a> <a href="/contact-us##search_query=install swifty"><span>install swifty</span></a> </div> <footer class="was-this-helpful"> <div class="thumbs"> <p>Was this article helpful?</p> <form accept-charset="UTF-8" action="/questions/583332/feedbacks" class="new_feedback" id="new_feedback" method="post"> <input name="authenticity_token" type="hidden" value="W7fIKyhlMGSYY6ZpNZ0EjAuXfvwpXGjx8KK7p9liJk0=" style="display: none" /> <input id="feedback_score" name="feedback[score]" type="hidden" value="0" style="display: none" /> <a id="yes" class="response feedback"> <div class="thumb-up"> <i class="far fa-thumbs-up"></i> <span>Yes</span> </div> </a> <a id="no" class="response feedback"> <div class="thumb-down"> <i class="far fa-thumbs-down"></i> <span>No</span> </div> </a> </form> </div> <a class="enable-feedback" data-action="click->feedbacks#showFeedbackForm"><i class="far fa-comment-alt-check"></i>Give feedback about this article</a> </footer> </article> </div> </div> <div class="related-articles"> <div class="container"> <h2><i class="fas fa-link"></i>Related Articles</h2> <ul class="related-articles-list"> <li class="article"> <a href="/integrations/olark" id="583301" class="article-title">Olark Integration</a> </li> </ul> </div> </div> </main> <footer id="footer"> <div class="container"> <div class="copyright"> <p>Copyright © 2024 - <a href="https://helpjuice.com/?utm_source=customer_kb">Helpjuice</a> </p> <p class="small">Helpjuice, Inc. is a registered US Corporation, EIN # 45-2275731</p> <a href="https://helpjuice.com/helpjuice_w9.pdf">Download W9</a> </div> <div class="footer-navigation"> <div class="footer-column"> <ul> <li><a href="https://help.helpjuice.com">Help</a></li> <li><a href="https://helpjuice.com/features">Features</a></li> <li><a href="https://helpjuice.com/pricing">Pricing</a></li> </ul> </div> <div class="footer-column"> <ul> <li><a href="https://helpjuice.com/about">About</a></li> <li><a href="https://helpjuice.com/careers">Careers</a></li> <li><a href="https://helpjuice.com/customers">Customers</a></li> </ul> </div> <div class="footer-column"> <ul> <li><a href="https://helpjuice.com/blog">Blog</a></li> <li><a href="https://helpjuice.com/case-studies">Case Studies</a></li> <li><a href="https://helpjuice.com/resources">Resources</a></li> </ul> </div> <div class="footer-column"> <ul> <li><a href="https://helpjuice.com/knowledge-base-examlpes">Knowledge Base Examples</a></li> <li><a href="https://help.helpjuice.com/privacy-policy">Privacy Policy</a></li> <li><a href="https://help.helpjuice.com/terms-of-service">Terms of Service</a></li> </ul> </div> </div> <div class="knowledge"> <div class="column-left"> <h3>Why is the knowledge base important?</h3> <p>With a knowledge base, you can allow your customers to self-help themselves, thus reducing your customer support by up to 60%. Furthermore, you can also have your team get instant answers to the questions they need without having to email themselves all using knowledge base software.</p> </div> <div class="column-right"> <h3>What is the purpose of a knowledge base?</h3> <p>The purpose of knowledge base software is to allow you to host your knowledge base/corporate wiki in one centralized 'hub'. Both your customers, and employees can now access information within seconds!</p> </div> </div> </div> <div class="helpjuice-info"> <div class="container"> <div class="column-left"> <p>Made with <i class="fas fa-heart"></i> from Miami, Bosnia, Morocco & Brasil</p> </div> <div class="column-right"> <a href="tel:+18333873877">+1 (833) 387 3877</a> <a href="mailto:support@helpjuice.com">support@helpjuice.com</a> </div> </div> </div> </footer> <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script defer type="text/javascript" src="https://helpjuice-static.s3.amazonaws.com/assets.helpjuice.com/jquery-selection.min.js"></script> <!-- To show URLs in iframe --> <script src="https://static.helpjuice.com/assets/template-ac5762484172e351a5f18410317060e84937bca7ebf92c7f499fc688f7706db6.js"></script> <script defer src="https://helpjuice-static.s3.amazonaws.com/assets.helpjuice.com/tocbot.min.js"></script> <!-- Uncomment these 2 lines if KB is on iframe --> <!--<script src='/assets/easyxdm/easyxdm.min.js'></script>--> <!--<script src='/assets/questions_widget.js'></script>--> <!-- Helpjuice JavaScript files --> <script src="https://static.helpjuice.com/assets/knowledge/responsivemenu-86a17116950142b41426c04b0f042c7bcdf0519b7f4e7a9fe1e9d67b48f9b46b.js"></script> <script src="https://static.helpjuice.com/assets/jquery.typewatch-14c782b50fde070c995ed3582b19df3e16cd2bf989f259f7b82121913d6b7210.js"></script> <script src="https://static.helpjuice.com/assets/knowledge/questions-5f7c86b585e58e01f6b6cb825fcb20b7c719be6b7aaa7b9f1f27cc29c5ae68c2.js"></script> <script src="https://static.helpjuice.com/assets/knowledge/contactform-393ba587d203d199f34f03466f29c99af7d0cc9eb653a05c60d4977502eb9e89.js"></script> <script src="https://static.helpjuice.com/assets/knowledge/follow_unfollow-0de54e775b4e5390a7dc74bfe49c89805ed38cd21e1907e00ac897803e04e987.js"></script> <script src="https://static.helpjuice.com/assets/knowledge/decision_trees-ab5fc72b8dc6f02b58a0ab4bd3cd074a7d879215719c6505d1dd45df0bc112e6.js"></script> <script src="https://static.helpjuice.com/assets/knowledge/glossary_article-a1bfc345e3d355d6a13e211dbf6a94d81368263e2d441ada8c4743df1764871e.js"></script> <script src="https://static.helpjuice.com/helpjuice_production/uploads/account/1885/main_js_1885-012115c54b4af98b6b91dce52355aa1260596af8124b815f205814c5db14b56a.js"></script> <script src='/assets/questions_widget.js'></script> <div class="article-modal"> <div class="content"> <div class="sidebar"> <button class="close button">Close <i class="far fa-times"></i></button> <a href="" class="expand button">Expand <i class="fas fa-expand"></i></a> </div> <div class="main-content"> <header> <h2 class="article-name"></h2> </header> <div class="body"></div> </div> </div> </div> <!--<link rel="stylesheet" href="https://help.helpjuice.com/swifty.css"> <script src="https://help.helpjuice.com/swifty.js"></script> <script> helpjuice_account_url = 'https://help.helpjuice.com'; helpjuice_contact_us_url = 'https://help.helpjuice.com/contact-us'; helpjuiceSwiftyConfig = { widgetPosition: 'bottomRight', themeColor: '#126cff', linkColor: '#126cff' } helpjuiceSwiftyUrlMap = { 'admin/dashboard': [583316, 583290], 'admin/swifty_appearances': [583332], 'admin/customize/main_layout': [583358, 583354, 583147], 'admin/users': [583327, 583290, 583352] } </script>--> <style> #toggle-btn-40467d37-053e-4937-9575-8c21ef962bbf img {width: 55px; height: 55px; border-radius: 50%; width: 50px !important; height: 47px !important; margin-left: 4px; margin-top: 5px;} #toggle-btn-40467d37-053e-4937-9575-8c21ef962bbf { background: #136cff; border-radius: 200px; padding: 1px; } </style> <script src="https://static.helpjuice.com/assets/helpjuice-251a8e6285deaaa907a544c1c733033a8b824623c59dadcdb8bc6f725e0bfee9.js"></script><script src="https://static.helpjuice.com/assets/knowledge/glossary-46fe931d51673faa23464c4f518fc7632816d8c5cb231f1a738a566c231cc8c4.js"></script><script src="https://help.helpjuice.com/swifty_chat.js"></script><script src="https://help.helpjuice.com/swifty_search.js"></script></body> </html>