HowdyGo SDK
The HowdyGo SDK lets your website or app identify demo viewers, personalize content, open pop-up demos, and control playback. Its keyed Tracking Script can also capture visitor information from the sources you enable, including forms, CRM cookies, and analytics tools.
Add the SDK to your page
Create a publishable SDK key in Settings > Integrations > Tracking Script, then copy the generated snippet into your website’s <head>, before any SDK calls. An Admin on a Pro or Enterprise plan can create and configure keys.
The example below uses a placeholder. Replace hgk_your_publishable_key with your own key, or use the complete snippet from settings.
<script>
window.HOWDYGO_CONFIG = { config: { key: "hgk_your_publishable_key" } };
!function(h,o,w,d,y,g,o0){if(!(h.HowdyGoSDK||h[y]&&(h[y].q||h[y]._stub)||h._howdygo_loading)){var e=h.HOWDYGO_CONFIG||{};d=e.sdkUrl||d;var n=null,t=o.currentScript;if(t instanceof HTMLScriptElement&&!(n=t.getAttribute("data-key"))&&t.src)try{n=new URL(t.src).searchParams.get("key")}catch(e){n=null}o.querySelector('script[src="'.concat(d,'"]'))||(h._howdygo_loading=!0,Object.keys(e.config||{}).length>0&&(h.howdygo_config=e.config),n&&(h.howdygo_config=h.howdygo_config||{},h.howdygo_config.key=n),h[y]=h[y]||new Proxy({},{get:function(e,n){return"q"===n?e[n]||[]:"_stub"===n||function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];try{for(var r=[n],c=0;c<arguments.length;c++)r.push(arguments[c]);r.push({timestamp:Date.now()}),(h[y].q=h[y].q||[]).push(r)}catch(e){console.error("HowdyGo SDK Snippet: Failed to queue method call:",e)}return h[y]}}}),(g=o.createElement(w)).async=!0,g.src=d,g.onload=function(){return h._howdygo_loading=!1},g.onerror=function(){h._howdygo_loading=!1,console.error("HowdyGo SDK: Failed to load",d)},(o0=o.getElementsByTagName(w)[0])&&o0.parentNode?o0.parentNode.insertBefore(g,o0):o.head&&o.head.appendChild(g))}}(window,document,"script","https://app.howdygo.com/sdk/index.js","howdygo");
</script>The snippet creates window.howdygo immediately and loads the SDK in the background. Add it once per page. For Google Tag Manager, use the generated Google Tag Manager snippet in a Custom HTML tag; see the installation instructions.
Keyless installations are deprecated and log a console warning once per SDK instance. Existing manual identification, personalization, modal, and player control calls continue to work. Automatic visitor tracking requires a key.
Identify the current viewer
Use externalUserId for your application’s stable user ID and email for the viewer’s email address. Both are optional, and you can supply either one or both.
howdygo.identify({
externalUserId: "customer-123",
email: "jane@example.com",
name: "Jane Smith",
company: "Acme Corp",
});For profile updates, personalization, and how these values appear in analytics, read Identification & Personalization.
Choose an API
Calls made before a demo loads
Once the snippet has run, calls such as identify(), personalize(), and openModal() can be queued while the SDK loads. If you load the snippet itself with an asynchronous script tag, wait for that script before making any calls.
The SDK discovers HowdyGo iframes and sends the current stored identity to demos that load later. Partial identity updates are retained across page navigation while browser storage is available.
Methods that return values, such as getStoredIdentity() and control(), need the initialized SDK. The loading snippet only queues calls; it cannot return stored data or a player controller. Once you have a controller with an explicit demo ID, its commands can wait for that iframe to register.
For identity from CRM cookies, forms, query parameters, or existing analytics tools, install the keyed Tracking Script.