# Custom tags

If you need to implement a tag that is not yet supported natively by Tag Manager, you can use a custom [image](#CustomImage), [HTML](#CustomHTML), or [function](#functioncall) tag.

The best way to avoid performance and malware issues is to use the tag templates built into Tag Manager. Tag manager supports many [tag platforms](https://support.google.com/tagmanager/answer/6106924). If a tag you'd like to deploy isn't yet built into Tag Manager, ask the tag provider to apply to join the [Tag Vendor Program](http://g.co/tagmanagervendors).

## Custom image tag <a href="#customimage" id="customimage"></a>

The Custom Image tag is used to deploy a pixel tag. To create a new Custom Image tag:

1. Click **Tags  New**.
2. Click **Tag Configuration** and select **Custom Image**.
3. Enter the **Image URL** as provided by the vendor. Use "`//`" if protocol-relative versions of the image are available. Use "`https://`" if only a secure version is available. (Use of "`http://`" is not recommended.)
4. To ensure that hits are registered from browsers that have cached versions of a pixel, select **Enable Cache Busting**. This will append the query `gtmcb=<random number>` to the URL. To change the default query parameter, enter a value other than `gtmcb` in the **Cache Busting Query Parameter** field.

## Custom HTML tag <a href="#customhtml" id="customhtml"></a>

The Custom HTML Tag type allows you to deploy a tag that isn't yet supported via Tag Manager. This code will be provided to you by the tag vendor.

To create a new Custom HTML tag:

1. Click **Tags  New**.
2. Click **Tag Configuration** and select **Custom HTML**.
3. Copy the tag code provided by the vendor and paste it into the HTML field, or enter your own custom HTML or JavaScript code. *Note: Always place JavaScript inside `<script></script>` HTML tags.*

If needed, select **Support document.write** to enable calls to `document.write()` in your JavaScript code.

To add a Tag Manager [variable](https://support.google.com/tagmanager/topic/7683268) in your custom HTML, wrap the variable's name in double braces:

`<script>`\
&#x20;  `var foo =`` `**`{{bar}}`**`;`\
&#x20;`</script>`

To inspect differences between versions of your custom HTML tags:

1. Click **Versions**.
2. Click a version entry that has the version of the custom HTML tag that you would like to inspect.
3. In the **Version Changes** card, click the name of the custom HTML tag to view the configuration changes.
4. Click  **View Details** to expand the code with differences highlighted.

## Function call tag <a href="#functioncall" id="functioncall"></a>

In mobile app containers, the Function Call tag allows you to execute pre-registered functions. When you specify a class that you'd like to invoke in a Function Call tag, you can configure a trigger that will cause that function to execute as well as pass arguments to it as key/value pairs. The Function Call tag can be used to extend tag management functionality with 3rd party SDKs.

To learn more, read the [iOS](https://developers.google.com/tag-manager/ios/v5/advanced-config#add-custom-tags-and-variables) and [Android](https://developers.google.com/tag-manager/android/v5/advanced-config#add-custom-tags-and-variables) developer documentation.

Was this helpful?

How can we improve it?
