# Advanced iOS Tag Manager configuration

To extend the functionality of Google Tag Manager, you can add Function Call
variables and Function Call tags. Function Call variables let you capture the
values returned by calls to pre-registered functions. Function Call tags let you
execute pre-registered functions (e.g. to trigger hits for additional
measurement and remarketing tools that are not currently supported with tag
templates in Google Tag Manager).

To create a custom **tag** , create a class that implements the
`TAGCustomFunction` protocol:

    @implementation MYCustomTag<TAGCustomFunction>

    - (NSObject*)executeWithParameters:(NSDictionary*)parameters {
      // Add custom tag implementation here.
    }

    @end

To create a custom **variable** , create a class that implements the
`TAGCustomFunction` protocol:

    @implementation MYCustomVariable<TAGCustomFunction>

    - (NSObject*)executeWithParameters:(NSDictionary*)parameters {
      // Return the value of the custom variable.
      return @42;
    }

    @end

Once your class has been set up with `TAGCustomFunction`, use Tag Manager's web
interface to set up tags or variables with the class name you created.