___TERMS_OF_SERVICE___ By creating or modifying this file you agree to Google Tag Manager's Community Template Gallery Developer Terms of Service available at https://developers.google.com/tag-manager/gallery-tos (or such other URL as Google may provide), as modified from time to time. ___INFO___ { "displayName": "HubSpot", "categories": [ "ADVERTISING", "ANALYTICS", "MARKETING", ], "description": "The HubSpot tracking code is unique to each HubSpot account and allows HubSpot to monitor your website traffic. The tracking code is automatically included on HubSpot blog posts, landing pages...", "securityGroups": [], "id": "cvt_temp_public_id", "type": "TAG", "version": 1, "brand": { "thumbnail": "data:image/png;base64,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\u003d", "displayName": "Custom template created by Luratic", "id": "brand_dummy" }, "containerContexts": [ "WEB" ] } ___TEMPLATE_PARAMETERS___ [ { "simpleValueType": true, "name": "accountId", "type": "TEXT", "valueValidators": [ { "type": "NON_EMPTY" } ], "displayName": "Account id:", "help": "Account id", "valueHint": "1234567" }, { "type": "LABEL", "name": "info", "displayName": "\u003ca href\u003d\"https://www.luratic.com/posts/templates/tags/hubspot\"\u003eMore info\u003c/a\u003e" } ] ___SANDBOXED_JS_FOR_WEB_TEMPLATE___ const injectScript = require('injectScript'); const encodeUriComponent = require('encodeUriComponent'); const id = encodeUriComponent(data.accountId); const trackingUrl = 'https://js.hs-scripts.com/' + id + '.js'; injectScript(trackingUrl,data.gtmOnSuccess,data.gtmOnFailure,'hubspot'); ___WEB_PERMISSIONS___ [ { "instance": { "key": { "publicId": "inject_script", "versionId": "1" }, "param": [ { "key": "urls", "value": { "type": 2, "listItem": [ { "type": 1, "string": "https://js.hs-scripts.com/" } ] } } ] }, "clientAnnotations": { "isEditedByUser": true }, "isRequired": true } ] ___TESTS___ scenarios: - name: gtmOnSuccess is invoked on injectScript success code: |- // test that gtmOnSuccess() is called when injectScript succeeds mock('injectScript', (url, onSuccess, onFailure) => { onSuccess(); }); // Call runCode to run the template's code. runCode(); // Verify that the tag finished successfully. assertApi('gtmOnSuccess').wasCalled(); - name: gtmOnFailure is invoked when injectScript fails code: |- // test gtmOnFailure() is called when injectScript fails mock('injectScript', (url, onSuccess, onFailure) => { onFailure(); }); // Call runCode to run the template's code. runCode(); // Verify onFailure was called assertApi('gtmOnFailure').wasCalled(); ___NOTES___ Developed with ❤ by: Alfonso, Txema and Brais. Web: www.luratic.com Linkedin: https://www.linkedin.com/in/braiscalvo/ https://www.linkedin.com/in/alfonsorc/ https://www.linkedin.com/in/txema-s%C3%A1nchez-a48482ba/