Introduction

    Welcome to the ClickFix documentation!

    We offer several types of features to help you customize your Ontraport Pages, streamline your workflows, and integrate with other applications.

    Our features are divided into several categories:

    • Shortcodes : customize your Ontraport Pages and transform fields into powerful inputs
    • Magic Hooks : use webhooks to simplify complex processes (we aim to add requests within 72 hours; request here)
    • Ontra-App Toolkit : use data from Custom Objects on the front end, and build internal systems via internal Ontra-Apps or powerful external Ontra-Apps to serve clients
    • Integrations : Connect with external applications
    • Payments : flexible payment solutions with multiple methods, currencies, and cart options
    • Other features and plugins

    This documentation includes detailed information about each of these features and how to use them. On the right side, you will find examples, demos, case studies, and templates that you can use.

    There are different types of ClickFix accounts, and some features are only available for certain types of accounts. Here's what the symbols mean:

    🆓 : These features are available for Free Account and above

    ➰ : These features are only available for Essential Account and above

    💡 : These features are only available for Marketer Account and above

    ♾️ : These features are only available for Pro Account

    You can upgrade your account anytime by clicking here.

    This documentation is a work in progress, so if you have any suggestions for how to make it better, please let us know in the Facebook Group. Thank you for using ClickFix!

    Getting Started

    How to use this documentation

    What you see What you need to do
    %keyword% Remove the two % symbols. And replace keyword with the appropriate value. This value will be explained in the documentation.
    %grab_your_token% This is a clickable link that will take you to the ClickFix app to get or generate a secure token. Note that this link will open in a new tab, leaving this documentation open.
    %target_field% Replace this with the field you want to target on your page or form.

    You can target a field by its ID by using the prefix # (e.g. #%field_id%).

    You can also use the field name (e.g. %field_name%).

    Keep in mind that a #%field_id% is unique, while multiple fields can have the same %field_name%.

    You can save yourself some time by using our Free Chrome Plugin to find your #%field_id% or %field_name%.
    #%trigger.anchor% Replace this with the anchor button that will trigger the action.

    (e.g. #hide.menu to hide a menu)
    %[do_something]% Replace this with the shortcode you want to execute.

    Unless specified, you can also add a %keyword% in place of or along with a %[do_something]%, which will be displayed when the action is triggered.

    In the case of a conditional system to display different page elements based on a dropdown value, %[do_something]% is what happens when the condition is true.
    Required. If a parameter is not marked as Required., it likely has a (Default) value.

    In any case, a non-Required. parameter can be considered Optional.

    Training

    In this section you will find Training Videos or links to Ressources and Case Studies related to a specific Feature.

    If this is your first time using ClickFix, we advise you watch the following videos :

    Examples

    This box will contain Example uses of our Features.
    

    Followed by an explanation of what is happening.

    Live Demos

    Here you will fill Live Demos, generally Ontraport Pages where you can see our Features in action.

    You can see most of our Demos in the Demo Dashboard

    On our Live Demos, remember that you can always Right Click -> View Source to see the Shortcodes and how we used them (they should be right at the top of the Source).

    Register your Domain Names

    If you want to use our Shortcode on your pages, you need to register your domain name with us.

    To do this, go to https://app.clickfix.io/managedomains/ while beeing logged into ClickFix.

    Keep in mind that each ClickFix Plan has a limit on the number of domains you can register. If you want to register more domains, you can upgrade your account in your account settings.

    Enter Your Ontraport Keys

    (If you are on a Free Account you may skip this part)

    If you want to use our special ClickFix Shortcodes on your pages, you need to give us your Ontraport API keys. To do this, click on this link while you are logged in to ClickFix: https://app.clickfix.io/manageontraportkeys/

    Remember, if you have the Basic Plan, you can only use one set of Ontraport API keys at a time. But if you want to use more, you can go to your account settings and upgrade your account.

    Get Help

    If you have a question that you can't find the answer to, or you see a mistake in this documentation, you can get help by logging into https://app.clickfix.io and going to the Help Center.
    You can also post about it in the Facebook Group and someone will try to help you.

    Shortcodes 🆓/➰/💡/♾️

    Shortcodes are used as you would use Javascript code.

    You can use them within the headers of your Ontraport Pages (or more generally in most places where you can add Javascript), or anywhere else you want on the page (links, titles, text...).

    To use Shortcodes on your Ontraport Pages, you have to add a special line of code called an "import script" to the header of your page. Here's what it looks like:

    <script src="https://klikfx.com/js/1"></script>

    You also have to make sure the website you want to use the Shortcodes on is listed here:

    https://app.clickfix.io/managedomains/

    Even though Shortcodes were originally made for Ontraport Pages, you can use them on other types of websites too as long as you can insert the <script src="https://klikfx.com/js/1"></script> import script.

    Pro Tip :
    If you don't want people visiting your website to see the Shortcodes, you can use an invisible <div> to hide them. It looks like this:

    <script src="https://klikfx.com/js/1"></script>
    <div style="display:none;">
    %Add Your Shortcodes Here%
    </div>

    Note on Dynamic Blocks
    Sometimes, Shortcodes don't work well with "Dynamic Blocks".

    But now, if you add [loop: before any Shortcode, it will work properly.

    So for example instead of this :
    [StarRating max=5 rating=[Block//Rating]]

    You would do this :

    [loop:StarRating max=5 rating=[Block//Rating]]

    Conditions 🆓/➰/💡/♾️

    Conditions shortcodes allow you to perform actions based on a specific condition being met.
    They are similar to campaign triggers, which also allow you to execute actions based on specific conditions.

    They consist of an opening [If] shortcode and a closing [/If] shortcode.

    [IfAnchor]

    Simple :

    [IfAnchor #%trigger.anchor%]
    %[do_something]%
    %keyword%
    [/IfAnchor]

    Advanced :

    [IfAnchor #%trigger.$variable%]
    %[do_something]%
    $%variable%
    [/IfAnchor]


    This shortcode will Trigger one or more Actions - %[do_something]% - and/or display a String - %keyword%- when a certain link #%trigger.anchor% is Triggered.

    You can also use it with WildCards with the help of the $ sign (see Examples and Demos for more information on this Feature).

    An Anchor can be Triggered :

    Remember :

    • This Shortcode needs an Opening Shortcode, [IfAnchor], and a Closing Shortcode, [/IfAnchor]
    • You can put this Shortcode all on one line like this:

      [IfAnchor][do_something][/IfAnchor]

      or on multiple lines like this:

      [IfAnchor]
      [do_something]
      [/IfAnchor]

    • If you send someone to a page and the link has an Anchor, it will Trigger when the page is loaded
    • It is usually better not to use [IfAnchor] with a #%block_id% as your #%trigger.anchor% because the page may moove before %[do_something]% is finished, which can cause the page to act strange if the block was hidden at first. In this case, we would use a [Redirect #%block_id%] just before the closing [/IfAnchor]

    Attribute Type Description
    #%trigger.anchor% or #%trigger.$variable% #Anchor Replace this with the Anchor Link that will Trigger your Action.

    So if you build an anchor that will hide a menu for example, it could look like this #hide.menu.

    Required.
    %[do_something]% Shortcode Will Execute your %[do_something]% Shortcode.
    %keyword% String (Word or Sentence) Will display the %keyword% when your [IfAnchor] is Triggered.
    $%variable% String Will display the $%variable%'s Value when your [IfAnchor] is Triggered.

    Examples

    Access Tutorial

    [IfAnchor #hide.block]
    [HideBlock #o7dff3cad25e6]
    [/IfAnchor]
    

    Will hide the Block with id #o7dff3cad25e6 if someone triggers the Anchor #hide.block.

    [IfAnchor #show.message]
    Hello World
    [/IfAnchor]
    

    Will display "Hello World" if someone triggers the Anchor #show.message.

    [IfAnchor #select.$state]
    [FillField state with $state]
    [/IfAnchor]
    

    If I Trigger #select.Nevada, my State will be set to Nevada.

    If I Trigger #select.New%20Hampshire, my State will be set to New Hampshire.

    [IfAnchor #add.$number][Calc f1234=f1234+$number][/IfAnchor]
    

    If I Trigger #add.1, it will add '1' to the Value of the Field whose Field Name is f1234.

    [IfBump]

    [IfBump %bump_id% %is/not% checked]
    %[do_something]%
    %keyword%
    [/IfBump]


    This shortcode will Trigger one or more Actions - %[do_something]% - and/or display a String - %keyword%- based on whether your %bump_id% is checked or not.

    Remember :

    • This Shortcode is "Always-On", which means that if you want to show a block when a bump is checked, it will stay hidden until the bump is actually checked
    • This Shortcode requires an Opening Shortcode, [IfBump, and a Closing Shortcode, [/IfBump]
    • You can put this Shortcode all on one line like this:

      [IfBump][do_something][/IfBump]

      or on multiple lines like this:

      [IfBump]
      [do_something]
      [/IfBump]


    Attribute Type Description
    %bump_id% ID Replace this with the ID of the Bump that will Trigger your Action.

    You can use our Free Chrome Plugin to find the ID of your bump easily.

    Required.
    %is/not% is or not Choose whether you want to trigger your action when the bump is checked (is) or when it is not checked (not).

    Required.
    %[do_something]% Shortcode Will Execute your %[do_something]% Shortcode.
    %keyword% String (Word or Sentence) Will display the %keyword% when your [IfBump] is Checked or Not.

    Examples

    Access Tutorial
    Live Démo

    [IfBump 33 is checked]
    [ShowElement 55]
    [/IfBump]
    

    Will display the Element with ID 55 uppon the Bump being checked.

    [IfBump 33 not checked][HideElement 55][/IfBump]
    

    Will do the exact same thing as the first example.

    [IfUrl]

    Contains :

    [IfUrl type=contains %parameter%]
    %[do_something]%
    %keyword%
    [/IfUrl]

    Attribute Type Description
    #parameter% String The String to look for in the URL.

    Required.

    Parameter is :

    [IfUrl type=query %url_parameter% %operator% %target_value%]
    %[do_something]%
    %keyword%
    [/IfUrl]

    Unlike IfField, which will execute the reverse shortcode if not true, IfUrl will not do that. This means you will need to first use a hide to hide all conditional elements for example, and then use IfUrl to display the one you want displayed.

    Attribute Type Description
    %url_parameter% String The parameter to look for in the URL.

    Required.
    %value% String The String to match to the parameter in the URL.

    Required.
    %operator%

    Required.
    is %url_parameter% is equal to %target_value%
    not %url_parameter% is not equal to %target_value%
    > %url_parameter% is more than %target_value%
    < %url_parameter% is less than %target_value%
    >= %url_parameter% is more than or equal to %target_value%
    <= %url_parameter% is less than or equal to%target_value%
    OR Use OR to separate multiple combinations of %url_parameter% %operator% %target_value% if you only want one of them to have to be Validated.
    AND Use AND to separate multiple combinations of %url_parameter% %operator% %target_value% if you want all of them to have to be Validated. OR takes precedence over AND.
    () Use brackets to make even more complex conditions.

    Exemples

    [IfUrl type=query amount is 800]
    The URL contains the query amount=800
    [/IfUrl]
    
    [IfUrl type=contains fbclid]
    Welome, facebook visitor!
    [/IfUrl]
    

    [IfField]

    [IfField %target_field% %operator% %target_value_01%,%target_value_02%]
    %[do_something]%
    %keyword%
    [/IfField]


    This shortcode will Trigger one or more Actions - %[do_something]% - and/or display a String - %keyword%- based on whether your %target_field% and your %target_value% match according to your %operator%.

    You can use this Shortcode for simple or complex comparisons. See the examples for more information.


    Remember :

    • This Shortcode is "Always-On", which means that if you want to show a block when a field has a certain value, it will stay hidden until the field actually has that value
    • This Shortcode requires an Opening Shortcode, [IfField], and a Closing Shortcode, [/IfField]
    • You can put this Shortcode all on one line like this:

      [IfField][do_something][/IfField]

      or on multiple lines like this:

      [IfField]
      [do_something]
      [/IfField]


    Attribute Type Description
    %target_field% #%field_id% or %field_name% You can specify a specific field by using its #%field_id%.

    If you use %field_name% and there are multiple fields with the same name on the page, only the first one will be checked.

    You can use our Free Chrome Plugin to find the id or name of your field easily.
    %operator%

    Required.
    is %target_field% is equal to %target_value%
    not %target_field% is not equal to %target_value%
    > %target_field% is more than %target_value%
    < %target_field% is less than %target_value%
    >= %target_field% is more than or equal to %target_value%
    <= %target_field% is less than or equal to%target_value%
    is checked/unchecked %target_field% is a checkbox and it is checked or unchecked
    OR Use OR to separate multiple combinations of %target_field% %operator% %target_value% if you only want one of them to have to be Validated.
    AND Use AND to separate multiple combinations of %target_field% %operator% %target_value% if you want all of them to have to be Validated. OR takes precedence over AND.
    () Use brackets to make even more complex conditions.
    %target_value_0X% Can be pretty much anything. Check the examples for more information.
    Your target value can be surrounded by single quotes ' or double quotes ".
    If your %target_field% is a Dropdown, you can use either Value or Label as %target_value%.
    You can have a single %target_valueX%, or multiple separated by commas ,
    Required.
    %[do_something]% Shortcode Will Execute your %[do_something]% when your Shortcode [IfField] is Validated.
    %keyword% String (Word or Sentence) Will display the %keyword% when your [IfField] is Validated.

    Note for Dynamic Blocks

    [Loop:IfField %field_name% of $blockid[Block//ID] %operator% %target_value%]
    %[do_something]%
    %keyword%
    [/IfField]


    If you want to use IfField with a %target_field% inside dynamic block you will need to use the %field_name% with the $variable from [ThisBlock] shortcode

    Examples

    [HideField #o39626ddbd9db-confirm_email]
    [IfField email not '']
    [ShowField #o39626ddbd9db-confirm_email]
    [/IfField]
    

    Will first hide the confirm_email Field so that it is displayed only once the Visitor has entered his Email Address in the Email Field.

    [IfField country not 'United States,Australia,Canada']
    [FillField state with "My State is not listed”]
    [HideField state]
    [/IfField]
    

    Will Hide and Fill the state Field if the selected country is not United States, Australia or Canada.

    [IfField f1631 >= 3 and f1631 <= 5]
    This number is between 3 & 5.
    [/IfField] 
    

    If the Numeric Field f1631 is greater than or equal to 3, and less than or equal to 5, then we display "This number is between 3 & 5".

    [IfField (lastname is Ray OR firstname is Moon) AND country not '' OR firstname is Rochelle AND email not ''] 
    Your Last Name is Ray or or your Last Name is Moon, and you have selected a Country. 
    Either that or your First Name is Rochelle and you have entered an email address.
    [/IfField]
    

    You can go as far as you want with complex conditions, using (), and and or.

    [Loop:ThisBlock $blockid[Block//ID]]
    
    [Loop:IfField f2053 of $blockid[Block//ID] is 'Not Well'][Loop:ShowElement 4 in $blockid[Block//ID]][/IfField]
    

    Will show the element 4 in a dynamic block if the field f2053 in that same dynamic block is Not Well. You Need The shortcode [Loop:ThisBlock $blockid[Block//ID]] in the same Custom HTML to allow the IfField to target the correct field.

    [IfVar]

    [IfVar %$var% %operator% %target_value_01%,%target_value_02%]
    %[do_something]%
    %keyword%
    [/IfVar]


    This shortcode will Trigger one or more Actions - %[do_something]% - and/or display a String - %keyword%- based on whether your %$var% and your %target_value% match according to your %operator%.

    You can use this Shortcode for simple or complex comparisons. See the examples for more information.


    Remember :

    • This Shortcode is "Always-On", which means that if you want to show a block when a variable has a certain value, it will stay hidden until the variable actually has that value
    • This Shortcode requires an Opening Shortcode, [IfVar], and a Closing Shortcode, [/IfVar]
    • You can put this Shortcode all on one line like this:

      [IfVar][do_something][/IfVar]

      or on multiple lines like this:

      [IfVar]
      [do_something]
      [/IfVar]


    Attribute Type Description
    %$var% variable You can use your Variable $var defined through your [Calc] shortcodes
    %operator%

    Required.
    is %$var% is equal to %target_value%
    not %$var% is not equal to %target_value%
    > %$var% is more than %target_value%
    < %$var% is less than %target_value%
    >= %$var% is more than or equal to %target_value%
    <= %$var% is less than or equal to%target_value%
    is checked/unchecked %$var% is a checkbox and it is checked or unchecked
    OR Use OR to separate multiple combinations of %$var% %operator% %target_value% if you only want one of them to have to be Validated.
    AND Use AND to separate multiple combinations of %$var% %operator% %target_value% if you want all of them to have to be Validated. OR takes precedence over AND.
    () Use brackets to make even more complex conditions.
    %target_value_0X% Can be pretty much anything. Check the examples for more information.
    Your target value can be surrounded by single quotes ' or double quotes ".
    If your %$Var% is a Dropdown, you can use either Value or Label as %target_value%.
    You can have a single %target_valueX%, or multiple separated by commas ,
    %target_valueX% can be another Variable, You can use your Variable $var defined through your [Calc] shortcodes
    Required.
    %[do_something]% Shortcode Will Execute your %[do_something]% when your Shortcode [IfVar] is Validated.
    %keyword% String (Word or Sentence) Will display the %keyword% when your [IfVar] is Validated.

    Examples

    [Calc $total=f2371+f2370]
    
    [IfVar $total >= 2]
    [FillCoupon "SAVE50"]
    [/IfVar]
    [IfVar $total < 2]
    [FillCoupon ""]
    [/IfVar]
    

    Will Add the valor of the 2 field and store it into the variable $total, and then will apply the coupon SAVE50 if the variable is greater than 2.

    [IfVar $inventory > 0][ShowBlock #o281404921618][/IfVar]
    [IfVar $inventory is 0][ShowBlock #obc2f6724b911][/IfVar]
    

    Will show a block based on the variable $inventory left.

    Graphic Helpers 🆓

    [CSS]

    CSS shortcodes can be used to add custom styling to the different parts of your Ontraport Pages:

    Blocks
    Columns
    Elements
    Fields*
    Rows*

    *NOTE: To target Fields & Rows, you’ll need an advanced understanding of how CSS selectors & the inspector panel works.

    [CSS] - Targets Blocks

    [CSS #%id_of_target_block_01%,#%id_of_target_block_02% “%css-property01%:%value01%;%css-property02%:%value02%;”]

    The declaration block contains one or more declarations separated by semicolons ; .

    Each declaration includes a CSS property name and a value, separated by a colon : .

    A CSS declaration always ends with a semicolon ; , and the shortcode declaration is surrounded by square brackets [ ].

    Examples

    Access Tutorial

    More info on CSS https://www.w3schools.com/css/css_syntax.asp

    [CSS #oa32642f55230 “margin-top: -60px;z-index:99;”]

    Will move the block 60 pixels up (invading the space of the previous block) and make sure it is shown in front of the block it overlaps.

    [CSSColumn] - Targets Columns

    [CSSColumn %id_of_target_column_01% of #%id_of_target_block “%css-property01%:%value01%;%css-property02%:%value02%;”]

    The declaration block contains one or more declarations separated by semicolons.
    Each declaration includes a CSS property name and a value, separated by a colon.
    A CSS declaration always ends with a semicolon, and the shortcode declaration is surrounded by square brackets
    EXAMPLES
    [CSSColumn 5 in #o9463cb77cd6a "margin-top:-50px;"]
    Will move the column up by 50 pixels (useful for creating overlapping effects).

    [CSSElement] - Targets Elements

    [CSSElement %id_of_target_element_01% in #%id_of_target_block “%css-property01%:%value01%;%css-property02%:%value02%;”]

    The declaration block contains one or more declarations separated by semicolons.

    Each declaration includes a CSS property name and a value, separated by a colon.

    A CSS declaration always ends with a semicolon, and the shortcode declaration is surrounded by square brackets

    [CSSElement 5 in #o0c1f32b349e8 "text-shadow: 2px 2px 4px #000000;"]

    This applies a drop shadow to the text element.

    [CSSElement 9 in #o0bdf5617467c "box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);"]

    This applies a box shadow to an element (in this case an image).

    [CSSElement 9 in #o05ff3c1a834a "-webkit-filter: blur(5px); /* Safari 6.0 - 9.0 */ filter: blur(5px);"]

    This applies a blur effect to an element (in this case an image).

    [CSSElement 9 in #o9890af95297a "border-radius: 50%;"]

    This applies a circle crop effect to an element (in this case an image).

    [ToolTip]

    [ToolTip %id_of_element% in #%block_id% delay=%delay content=" content" follow-cursor=yes/no placement=top/bottom/left/right theme=light/light-border/material/translucent interactive=yes/no]


    This shortcode will add a Tooltip : "content" when you hover your cursor over an element with the ID %id_of_element% the block with the ID #block_id.

    Attribute Type / Values Description
    %id_of_element% ID The ID of the element you want to add the Tooltip to.
    #%block_id% ID The ID of the block the element is in.
    delay= parameters The amount of time in milliseconds before the message appears when you hover your cursor over the element.
    content= parameters The message (text) that appears in the tooltip, the text needs to be in doubles quotes.

    If you wish to add html (links for example) to your tooltips simple use {a} instead of <> for all your html tags, and make sur to use single quotes inside the tags.
    follow-cursor= parameters yes or no - determines whether the tooltip should follow the cursor movement or not.
    placement= parameters top / bottom / left / right - position of the tooltip.
    theme= parameters light / light-border / material / translucent - theme of the tooltip.
    interactive= parameters yes or no - determines if user can interact with the tooltip (Select text, copy etc..)

    Exemples

    Live Demo

    Tooltip for HTML Content

    Clickable Link

    [ToolTip 52 in #o29a18cc01728 delay=1 content="{a href='https://clickfix.io/pricing' target='_blank'}Click Here{/a} to join ClickFix" follow-cursor=no placement=bottom theme=material interactive=yes]
    You can add target='_blank' to your link to make it open in a new page.

    Embed Youtube Video

    [ToolTip 53 in #o29a18cc01728 delay=1 content="{iframe width='320' height='240' src='https://www.youtube.com/embed/X1DEK5ikTIw'}{/iframe}" follow-cursor=no placement=bottom theme=material interactive=yes]

    [FunnelGraph]

    [FunnelGraph height=%height direction=vertical/horizontal labels=' %labels' colors=' %color'] ([%target_field_0X%])([%target_field_0X%])([%target_field_0X%])[/FunnelGraph]


    This shortcode allows you to make a nice Graph based of several data (%labels/ %target_field_0X%)

    Attribute Type / Values Description
    height= Option Graph height in pixels
    width= Option Graph width in pixels
    direction= Option graph direction (vertical/horizontal, default vertical)
    gradientDirection= Option gradient direction (vertical/horizontal, default vertical)
    labels= Option labels separated by commas (Represents each segment of graph)
    subLabels= Option labels separated by commas (Represents each color)
    colors= Option colors separated by | sign, each color can be a gradient separated by commas, example: red,green|blue,green (First gradient red to green, second gradient blue to green)
    displayPercent= Option Display the percentage or not (yes/no, default no)
    subLabelValue= Option Whether display percentage or real value of segment (percent/raw, default percent)
    hideLabels= Option Hide the labels or not (yes/no, default yes)
    hideLegend= Option Hide the legend or not (yes/no, default yes)
    %target_field_0X% %field_name%
    Or
    %$variable%
    Ontraport Merge Field to populate the shortcode.

    A variable set on the page via shortcodes. Read the Calc documentation to learn more about variables.

    [StarRating]

    Parameters

    [StarRating rating=x/$%variable% max=x star-size=x]


    This shortcode allows you to build a star rating system.


    Attribute Type Description
    rating= Value or $variable rating= can be either a numerical value or a $variable.

    It will show a number of full stars equal to the rating= value.

    Required.
    max=x Keyword X is the number of stars you want to display (full or empty).

    Default value max=5

    Optional.
    star-size=x Keyword X is the size of the stars in pixels, it's a vector so it will be high quality on any size.

    Default value star-size=24

    Optional.
    rater= %field_name% This will display selectionnable stars and will fill the %field_name% selected with the number of stars.

    Optional.

    Exemples

    Access Tutorial

    Live Demo - rating
    Here we are using a variable [StarRating rating=$rating max=5 star-size=24] and it will display stars based on the average rating of the product out of 5

    Live Demo - rater
    Here we are using [StarRating max=5 rating=0 rater=f2187 star-size=50] to fill the field rating (f2187)

    [PhoneStyle]

    [PhoneStyle field=%target_field_1%,%target_field_2%]


    This shortcode will change the way a phone field looks by adding a dropdown menu for selecting a country. The dropdown will be filled with the correct country for the visitor based on their IP address.


    Attribute Type Description
    %target_field% #%field_id% or %field_name% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    You can use our Free Chrome Plugin to find the ID or name of the field easily.

    Required.

    You can also add CSS parameters to the shortcode such as :

    background-color=#The background color code

    dropdown-divider-color=#The dropdown divider color code

    dropdown-bg-color-hover=#The hover color code

    line-height= The heigh of the line in pixel ( px )

    margin-top/bottom/left/right= The heigh of the margin in each the direction you choose in pixel ( px )

    [PhoneStyle field=sms_number background-color=#XXXXX dropdown-divider-color=#XXXXX dropdown-bg-hover=#XXXXX line-height=39px margin-top=1px margin-left=1px]

    [IfScreen]

    [IfScreen min-width:%pixels%px and max-width:%pixels%px]
    [/IfScreen]


    The Screen Targeting shortcode lets you change your Ontraport pages depending on the size of the screen your visitor is using.

    *NOTE: You can also use it to change the way your page looks based on the device orientation, like if it's a phone or a tablet.

    These shortcodes work like Media Queries, which are usually only used for CSS.
    But we modified them so you can use any shortcode or display text based on the screen size you set.

    [IfScreen min-width:%number%px]
    %[do_something]%
    %keyword%
    [/IfScreen]

    This shortcode will Trigger one or more Actions - %[do_something]% and/or display a String - %keyword% for any screen that is AT LEAST %number%px wide.

    Also please note that:
    This shortcode requires an Opening Shortcode - [IfScreen] and a Closing Shortcode - [/IfScreen]
    This shortcode DOES NOT require line-breaks


    [FloatingBlock]

    [FloatingBlock %block_id% left=%value_left% top=%value_top%]


    This shortcode will make the block with ID #block_id stay in the same place on your screen as you scroll the page, you can also use bottom=%value_bottom% and right=%value_right%, any combination of those attributes.

    Attribute Type / Values Description
    %block_id% ID The ID of the block you want to make floating
    top= Option Block distance from the top of the page, pixels or percentage (e.g 100/100px or 50%), use either top or bottom, not both
    bottom= Option Block distance from the bottom of the page, pixels or percentage (e.g 100/100px or 50%)
    left= Option Block distance from the left of the page, pixels or percentage (e.g 100/100px or 50%), use either left or right, not both
    right= Option Block distance from the right of the page, pixels or percentage (e.g 100/100px or 50%)

    Remember :
    *You should only use one of top or bottom, and one of left or right.

    [FloatingElement]

    [FloatingElement %id_of_element% of #%block_id% onscroll=yes/no width=%value_width top=%value_top% right=%value_left%]


    This shortcode will make the Element with ID %id_of_element% of #block_id stay in the same place on your screen as you scroll the page, you can also use bottom=%value_bottom% and right=%value_right%, any combination of those attributes.

    Attribute Type / Values Description
    %id_of_element% ID The element ID you want to make floating. required.
    #%block_id% ID The ID of the block you want to make floating
    onscroll= parameters yes or no
    width= Option The additional width of the floating element in pixels (e.g 100)
    top= Option Block distance from the top of the page in pixels (e.g 100), use either top or bottom, not both
    bottom= Option Block distance from the bottom of the page in pixels (e.g 100)
    left= Option Block distance from the left of the page in pixels (e.g 100), use either left or right, not both
    right= Option Block distance from the right of the page in pixels (e.g 100)

    Remember :
    *You should only use one of top or bottom, and one of left or right.

    Examples

    Access Démo

    [StickyBlock]

    [StickyBlock %block_id% %top_offset%]


    This shortcode will make the block sticky, it will stick to the position after scrolling to the certain position(%top_offset%).

    Attribute Type Description
    %block_id% ID The Block ID you want to make sticky. required.
    %top_offset% Option Scroll offset, The number of pixels you need to scroll down before the block becomes sticky.

    [StickyColumn]

    [StickyColumn %id_of_column% in/of %block_id% %top_offset% freeze=%freeze%]


    This Shortcode will make the Column sticky, it will stick to the position after scrolling to the certain position(%top_offset%).

    Attribute Type Description
    %id_of_column% ID The column ID you want to make sticky. required.
    in %block_id% or of %block_id% ID If there are multiple columns with the same ID on the page, you can specify in which Block is the one you want by adding this to the shortcode.
    %top_offset% Option Scroll offset, The number of pixels you need to scroll down before the Column becomes sticky.
    freeze= Boolean values are yes or no,
    If yes, the column will always stay in its first position

    [StickyElement]

    [StickyElement %id_of_element% in/of %block_id% %top_offset% freeze=%freeze%]


    This shortcode will make the element sticky, it will stick to the position after scrolling to the certain position(%top_offset%).

    Attribute Type Description
    %id_of_element% ID The element ID you want to make sticky. required.
    in %block_id% or of %block_id% ID If there are multiple Elements with the same ID on the page, you can specify in which Block is the one you want by adding this to the shortcode.
    %top_offset% Option Scroll offset, The number of pixels you need to scroll down before the Element becomes sticky.

    [ProgressBar]

    [ProgressBar x=%value_x% y=%value_y%]


    This special Shortcode will show a progress bar on your page using data from different sources :

    • from a regular Ontraport [Merge] field
    • from a url parameter
    • from a [Calc] variable on your page

    X is the current score, Y is the maximum score.


    Attribute Type / Values Description
    %value% Numeric Replace this with either :
    * [Field Name] if you want to use an Ontraport Merge Field
    * %url_parameter% if you wish to get the value from your URL
    * $variable if you want to use a Variable.

    Required.
    type= Type Option is 'dots'. Default is solid.
    height= Option A Height in pixels.
    color= Option A color, like red or #FFF for example.
    background= Option A color, like red or #FFF for example.
    border-size= Option A Border Size in pixels.
    border-style= Option solid, dashed or dotted
    padding= Option A Padding size in pixels.

    Examples

    Access Tutorial

    Page Manipulation 🆓

    Page Manipulation Shortcodes allows you to hide certain parts of your Ontraport pages (and then display them again) :

    • Blocks
    • Columns
    • Elements
    • Fields

    However, you can't use it with rows because they can't be identified individually.

    (There is a Feature Request with Ontraport here).

    Page Manipulation Shortcodes can be :

    • Used in combination with our Conditions Shortcodes.
    • Combined together (But be careful, because if you hide a column that has an element in it and then try to show the element, it won't work because the surrounding column is hidden).

    Live Demos

    Simple Page Manipulation using :

    [HideBlock][ShowBlock] 
    [HideColumn][ShowColumn] 
    [HideElement][ShowElement] 
    [HideField][ShowField]
    [IfAnchor]
    [Redirect]
    

    Right Click -> View Source to see the Shortcodes and how we used them.

    [HideBlock][ShowBlock]

    [HideBlock #%id_of_target_block_01%,#%id_of_target_block_02%]


    This shortcode can show or hide a block or a series of blocks on an Ontraport Page.


    Attribute Type Description
    %id_of_target_block_0X% ID The ID of the Block you want to hide.

    You can save yourself some time by using our Free Chrome Plugin to find your Block's ID.

    Required.

    Examples

    Access Tutorial

    [HideBlock #o9a6611924513]
    

    Will hide the blocks with id #o9a6611924513.

    [ShowBlock #ob8099e4c466e]
    

    Will show the block with id #ob8099e4c466e (which must have previously been hidden using [HideBlock #ob8099e4c466e].

    [HideBlock #ob8099e4c466e,#o9a6611924513][ShowBlock #o76aaaa4513]
    

    Will hide the blocks with ids #ob8099e4c466e and #o9a6611924513, and will show the block with id #o76aaaa4513.

    [HideDynamicBlock][ShowDynamicBlock]

    [HideDynamicBlock %id_of_target_dynamicblock%]
    [ShowDynamicBlock %id_of_target_dynamicblock%]


    This shortcode can show or hide a Dynamic Block on an Ontraport Page.


    Attribute Type Description
    %id_of_target_dynamicblock% ID The ID of the Block you want to hide.

    Contraty to Hide/ShowBlock you cant find this id with our plugin for now.

    You will need to use the DevTools on chrome by right clicking on one of the dynamic block and click 'Inspect' then you have to go up the tree to find a line with "<div id=" of your dynamic block, att the end of this line you will have to retrieve the id after "data-template-id=".

    Required.

    [HideColumn][ShowColumn]

    [HideColumn %id_of_column_01%,%id_of_column_02% in #%block_id%]
    [ShowColumn %id_of_column_01%,%id_of_column_02% in #%block_id%]


    This shortcode can show or hide a column or a series of column, within a specific block, on an Ontraport Page.

    NOTE: It is usually better to use the [ShowElement]/[HideElement] Shortcodes instead, because HideColumn can sometimes mess up the formatting of the page unless if you use it on a single column row.


    Attribute Type Description
    %id_of_column_0X% ID The ID of the column you want to hide.

    You can save yourself some time by using our Free Chrome Plugin to find your Column's ID.

    Required.
    in #%block_id% ID If there are multiple columns with the same ID on the page, you can specify in which Block is the one you want by adding this to the shortcode.

    Examples

    Access Tutorial

    [HideColumn 8]
    

    Will hide the column with id 8.

    [ShowColumn 1]
    

    Will show the column with id 1. (which must have previously been hidden using [HideColumn 1].

    [HideColumn 1,2,3,4 in #o76aaaa4513][ShowColumn 5 in #o76aaaa4513]
    

    Will show the columns with ids 1,2,3 and 4 and will hide the column with id 5 within the block with id #o76aaaa4513.

    [HideElement][ShowElement]

    [HideElement %id_of_element_01%,%id_of_element_02% in #%block_id%]
    [ShowElement %id_of_element_01%,%id_of_element_02% in #%block_id%]


    This Shortcode can show or hide an Element or a series of Elements, within a specific Block, on an Ontraport Page.


    Attribute Type Description
    %id_of_element_0X% ID The id of the Element you want to hide.

    You can save yourself some time by using our Free Chrome Plugin to find your Element's ID.

    Required.
    in #%block_id% ID If there are multiple elements with the same ID on the page, you can specify in which Block is the one you want by adding this to the shortcode.

    Examples

    Access Tutorial

    [HideElement 8]
    

    Will hide the Element with id 8.

    [ShowElement 1]
    

    Will show the Element with id 1. (which must have previously been hidden using [HideElement 1].

    [HideElement 1,2,3,4 in #o76aaaa4513][ShowElement 5 in #o76aaaa4513]
    

    Will show the Elements with ids 1,2,3 and 4 and will hide the Element with id 5 within the block with id #o76aaaa4513.

    [HideField][ShowField]

    [HideField %target_field_01%,%target_field_02%]
    [ShowField %target_field_01%,%target_field_02%]


    This Shortcode can show or hide a Field or a series of Fields on an Ontraport Page or an Ontraport Form.

    Note that on an Ontraport Form, you'll need to add the "ontraform" parameter : [HideField %target_field_01% ontraform]


    Attribute Type Description
    %target_field_0X% #%field_id% or %field_name% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    If you use %field_name% and multiple Fields with the same name are found on the page, all the Fields will be displayed or shown.

    You can save yourself some time by using our Free Chrome Plugin to find your Field's id or name.

    Required.

    Note : be careful not to hide a required field. If a field is required AND hidden, the "required" part will break the form, meaning the form will appear to submit despite the required field, BUT Ontraport will not register the data.

    Examples

    [HideField email]
    

    Will hide the Field with name email (the email field, basically).

    [ShowField f1345]
    

    Will show the Field with name f1345 (which must have previously been hidden using [HideField f1345].

    [HideField #o76aaaa4513-f1345,#o76aaaa4513-f1359][ShowField email]
    

    Will show the unique Fields with ids #o76aaaa4513-f1345 and #o76aaaa4513-f1359, and will hide all the Fields with name email.

    [Tabs]

    [Tabs #%id_of_target_block_01%,#%id_of_target_block_02%]


    This Shortcode will create a system of Tabs from your Blocks automatically, meaning it will hide and show the Blocks based on the Anchor clicked.

    You will then simply need to link buttons to #%id_of_target_block_01% and #%id_of_target_block_02% so your Visitors can use the Tabs feature.

    By default, all the blocks that make up the tabs will be hidden. If you want a specific block to be displayed when the page loads, you can use the [HideBlock #%id_of_target_block%] Shortcode right after the [Tabs] Shortcode.

    You can have as many [Tabs] as you want using this Shortcode.


    Attribute Type Description
    #%id_of_target_block_0X% ID The IDs of the different Blocks you want to build into a Tabs system.

    You can save yourself some time by using our Free Chrome Plugin to find your Block's ID.

    Required.

    Examples @Adam : you can copy the #Shortcode #PageManipulation template and turn each function in the into a tab (note : easy way to do this is to clone the whole block 4 times then delete what you don't need. Keep in mind field IDs will change)

    [Tabs #o9a6611924513,#ob8099e4c466e]
    

    Will hide the Blocks with ids #o9a6611924513 and #ob8099e4c466e.

    If a user presses a Button linking to a #o9a6611924513, that Block will appear.

    If a user then presses #ob8099e4c466e, it will hide the other block (#o9a6611924513) and display the block #ob8099e4c466e in its stead.

    [HideBlock #o9a6611924513,#ob8099e4c466e]
    
    [IfAnchor #o9a6611924513]
    [HideBlock #ob8099e4c466e]
    [ShowBlock #o9a6611924513]
    [/IfAnchor]
    
    [IfAnchor #ob8099e4c466e]
    [HideBlock #o9a6611924513]
    [ShowBlock #ob8099e4c466e]
    [/IfAnchor] 
    

    Is the equivalent of the previous example, [Tabs #o9a6611924513,#ob8099e4c466e].

    Data Manipulation 🆓/➰/💡/♾️

    [Calc]

    Parameters

    Name Description Example
    fields List of fields & variables, separated with commas my_test_field,$test_variable
    calculation A calculation, can include fields, variables and numbers ((field + $variable) / 25) - $var2

    [Calc %target_field_01%,$%variable_01%=%target_field_02% +|-|*|/ $%variable_02% round=x display]


    This shortcode lets you build anything from very basic calculations (adding or subtracting a number from a field when a button is clicked for example) to highly complex quote forms.


    Attribute Type Description
    %target_field_0X% #%field_id% or %field_name% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    If you use %field_name% and multiple Fields with the same name are found on the page, all the Fields will be displayed or shown.

    You can save yourself some time by using our Free Chrome Plugin to find your Field's id or name.
    $%variable_0X% Variable A Variable of your choice. Basically a way to give a Name to a Value. This Name can only contain the underscore '_' symbol.
    round=x Keyword X being how many numbers you want to see after your decimal point but the result will be rounded up or down.

    Ex : 12,6278 round=0 will show you 13 round=3 : 12.628
    decimal=x Keyword X being how many decimal you want to see after your decimal point.

    Ex : 12,6278 decimal=0 will show you 12, decimal=3 : 12.627
    display Keyword If you insert this Keyword at the end of your Shortcode, it will display the value set by the [Calc].

    Please note that :

    • You can use Text, Long Text and Dropdowns fields with this functionnality. Obviously, if you do so, calculus won't work for those Fields and Variables.
    • Variables always need to start with the dollar sign ($) And the only special character you can use in a variable name is an underscore (_).
    • Fields and variables that don't have a value will be considered zero.

    Examples

    [Calc $myvar1=5]
    [Calc f1234,$myvar2=f5678+$myvar1]
    

    Will Fill the f1234 Field with 5 + the value of the field f5678.

    Live Demos

    Some possibilities with the calc shortcode

    Live demo

    Right Click -> View Source to see the Shortcodes and how we used them.

    [SetVar]

    [SetVar $var="STRING"]

    This shortcode allows you to define a variable, similar to [Calc $var="STRING"] except it will remove any character that Calc could interfere with such as -*/+.

    [SetVar $var=#%target_field% type=string]

    This shortcode allows you to define a variable, similar to [Calc $var=#target_field] except it will remove any character that Calc could interfere with such as -*/+.

    [SetVar $var=#%target_field% type=unix]

    This shortcode allows you to define a variable, similar to [Calc $var=#target_field] except it will transform the date or date & time field into a UNIX Timestamp variable.

    [Autocomplete]

    This shortcode allows you to provide a list of options for the user to choose from when filling out a form field : %target_field%.

    [Autocomplete #%target_field% options='a,b,c,d']


    The options can be provided as a string, with each option separated by a comma.


    [Autocomplete #%target_field_01% options=#%target_field_02%]


    Or the options can be provided from the contents of another field : %target_field_02%.


    Attribute Type / Values Description
    %target_field_0x% #%field_id% or %field_name% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    If you use %field_name% and multiple Fields with the same name are found on the page, all the Fields will be Filled.

    You can save yourself some time by using our Free Chrome Plugin to find your Field's id or name.

    Required.
    %options% String Value provided by a string with each option separated by a comma.

    Examples

    Live Demo

    [Autocomplete #oa09d7553999b-title options='Mr,Mrs,Miss,Ms,Master,Sir']
    

    Will allow you to chosse between Mr,Mrs,Miss,Ms,Master,Sir to fill in the Title field.

    [ToNumber]

    [ToNumber $mvyar=[Merge]]

    Will turn a string into a numeric, to remove currency data when merging Price fields for example.

    Attribute Type Description
    [Merge] Ontraport Merge Field The Ontraport Merge Field you want to turn to numeric.
    $mvyar Variable A Variable of your choice. Basically a way to give a Name to a Value. This Name can contain the underscore '_' symbol.

    Can then be displayed/used as a regular variable in Calc :

    [Calc $myvar display]

    Example

    We created this shortcode because [Calc $price=[Price]] didnt work, [Price] is merged in this format : $10.50 USD

    [EncryptBeforeSubmit]

    [EncryptBeforeSubmit fields=%target_field_01%,%target_field_02% form=#%id_of_target_block% key=%public_key%]


    This shortcode is used to encrypt data in fields before it is submitted to a form.

    You can use this to let your Visitors submit sensitive data without it ever being sent/stored unencrypted over the Internet.

    In Ontraport you will only see an Encrypted version of your visitor's Input, and you will need to use your %private_key% in order to read it in the future (see below).


    Attribute Type Description
    %target_field_0X% #%field_id% or %field_name% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    If you use %field_name% and multiple Fields with the same name are found on the page, all the Fields will be displayed or shown.

    You can save yourself some time by using our Free Chrome Plugin to find your Field's id or name.

    Required.
    %id_of_target_block% ID The ID of the Block that contains the fields you want to Encrypt Before Submit.

    You can save yourself some time by using our Free Chrome Plugin to find your Block's ID.
    %public_key% & %private_key% RSA Keys You will need to generate your keys here : Online RSA Key Generator. We advise you to use an Encryption of at least 512bits. Leave the "Async" box ticked. You can watch our training video to the right for more instructions regarding how to do this. Remember to save your %private_key% very privately.

    Your %public_key% is the only thing you should be sharing.

    Please note that :

    • Encrypted content can take a lot of space compared to an Unencrypted String, so we advise you to use Long Fields
    • Your RSA Keys will look similar to this :
    -----BEGIN PUBLIC KEY-----
    MFswDQYJKoZIhvcNAQEBBQADSgAwRwJAcEzl7YR3bK7A8r8JlgH3SnDhpSU532Rl
    xkPPLzpUpAlq2t6r3aYqX7DKQoKPGA/yvL25efvGQj3APrhWkZZCQwIDAQAB
    -----END PUBLIC KEY-----
    

    Remember to remove the top -----BEGIN PUBLIC KEY----- and the bottom -----END PUBLIC KEY----- so you can replace %public_key% with the Key itself and only that (see examples).

    • To Decrypt the content, you can use the same tool you used to generate your keys. Simply replace the Private Key with yours.
    • We can automate this process for you if you tell us how you want it. Just Contact Us and let us know.

    Examples

    [EncryptBeforeSubmit fields=firstname,lastname key=MFswDQYJKoZIhvcNAQEBBQADSgAwRwJAcEzl7YR3bK7A8r8JlgH3SnDhpSU532RlxkPPLzpUpAlq2t6r3aYqX7DKQoKPGA/yvL25efvGQj3APrhWkZZCQwIDAQAB]
    

    Will Encrypt First Name and Last Name before the form is submitted.

    Live Demo

    Encrypt a message before it's sent to you.

    Right Click -> View Source to see the Shortcodes and how we used them.

    [SyncFields]

    [SyncFields %target_field_01%,%target_field_02%]


    This shortcode will make sure that all the fields with the same name on a page have the same value.

    You can use this if you want to build a One Page Survey for example, or a One Page, Mulsti Step checkout form with multiple Form Submissions (the data is sent to Ontraport even if they don't complete every step of the Form) through our MultiStep Shortcode.

    Note that you can just add [SynchFields] to your page to synchronize all the fields of all your forms, but this might slow down your page if you have too many fields or forms.


    Attribute Type Description
    %target_field_0X% %field_name% You can save yourself some time by using our Free Chrome Plugin to find your Field's name.

    Examples

    [SyncFields]
    

    Will Synchronize all your Form Fields on an Ontraport Page.

    [SyncFields email,firstname,lastname]
    

    If you have more than one Email, First Name and Last Name Field on the page, they will be synchronized with each other (all Email Fields will have the same value, all the First Name Fields will have the same value, and so on...).

    Live Demos

    @ComingSoon

    Two Synchronized Forms

    Right Click -> View Source to see the Shortcodes and how we used them.

    [SyncCoupon]

    [SyncCoupon #fieldid,fieldname]

    Will synchronize the coupon code into a field on the page.

    Better Fields ➰/💡/♾️

    [EmailVerification]

    [EmailVerification field=xxx(default : look for email) reject=risky(level at which we stop) message='Your email is invalid' suggestion=yes/no submit=yes/no]
    

    This Shortcode will check if an email address is valid.

    Attribute Type / Values Description
    field= #%field_id% or %field_name% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    If you don't provide this, it will check the "email" field by default.
    reject= Option The level of rejection to consider. You can choose from risky, unknown, or undeliverable.

    The default is undeliverable.

    You can also include multiple options by separating them with a comma.

    See below for the description of each level.
    message= String A custom message to display instead of the default verification message.
    suggestion= Parameters yes or no- If yes, and there is a suggested email, it will display a message asking if you meant to use that suggested email instead.

    The default is yes.
    submit= Parameters yes or no- If no, the form will not be submited unless the email is valid.
    If yes, the form will be submitted even if the email is not valid, but the message will be displayed.

    The default is no.

    Rejection level :

    • reject=risky
      A risky result means the email addresses appears to exist, but have quality issues that may result in low engagement or a bounce. This includes emails such as info@, contact@ or admin@

    • reject=unknown
      Unknown occurs when we are unable to get a valid response from the recipient's email server. This may happen when the destination email server is too slow or temporarily unavailable.

    • reject=undeliverable
      An email is considered undeliverable if the email addresse does not exist, or is syntactically incorrect.

    [SearchField]

    [SearchField TOKEN FilterListName field=%field_name% preview="{%field_name%} {%field_name%}" trigger=#selected.{%field_name%}]


    This shortcode will let you transform a field into a searchbox of a filtered list.


    Attribute Type / Values Description
    Token Key The Token of the object containing your filtered list.

    Go here : https://app.clickfix.io/clickfixapps/

    Select your object and at the bottom of the page get "Your Token :".

    Required.
    FilterListName Key The name of the filtered list in which you want to search. The filtered list must have the "Searchable" switch on "Yes".

    Required.
    field= %field_name% You must add a field to the page which will be used as a searchbox.

    Required.
    preview= "{%field_name%}" The information you want to be displayed in the search list. You can use several {%field_name%} separated by a space.
    trigger= #selected.{%field_name%} Or {url} The action that will be trigerred when you select a result of your search.

    Example

    Live Demo
    In this demo we search in the Objects JobPosts and the filtered list SearchJobs. In the search field you will see the Job Title and Description preview="{f1800} {f1801}" . When you select a job you will be redirected to the Dynamic Templates page of that job with trigger={page_104_url}.

    [PhoneVerification]

    [PhoneVerification field=xxx message='Your number is invalid' submit=no/yes background-color=#XXXXX dropdown-divider-color=#XXXXX dropdown-bg-hover=#XXXXX line-height=39px margin-top=1px margin-left=1px]
    

    This shortcode is used to verify the validity of a phone number.

    Attribute Type / Values Description
    field= #%field_id% or %field_name% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    If you don't provide this, it will check the "sms_number" field by default.
    message= String A custom message to display instead of the default verification message.
    submit= Parameters yes or no- If no, the form will not be submited unless the phone number is valid.
    If yes, the form will be submitted even if the phone number is not valid, but the message will be displayed.

    The default is no.

    You can also add CSS parameters to the shortcode such as :

    background-color=#The background color code

    dropdown-divider-color=#The dropdown divider color code

    dropdown-bg-hover=#The hover color code

    line-height= The heigh of the line in pixel ( px )

    margin-top/bottom/left/right= The heigh of the margin in each the direction you choose in pixel ( px )

    [GetAddress]

    [GetAddress %target_field% hide=%hide% language=%language% gkey=%google_key%]


    This shortcode will let your visitors give you their physical address using just one visible search field, and prefilling the default Ontraport address fields using the searched address.

    Note that if you use a Long Text type Field (such as Notes), your Browser will throw a JavaScript Error, but you can dismiss it, it'll work like a charm.


    Attribute Type / Values Description
    %target_field% #%field_id% or %field_name% You must add a field to the page which will be used as a searchbox by your customer. This field will also be populated with the full address.

    Required.
    %hide% no Will not hide the default Ontraport address fields from your Page (you can still hide them using the [HideField] Shortcode).
    yes
    Default.
    Will automatically hide all the default Ontraport address fields from your Ontraport Page.
    %language% ISO 639-1 Language Code

    en (Default)
    Choose a language you wish to use for the search box.
    %google_key% Key Please follow the instructions below.

    Required.

    You can also map the different part of the address to fields of your choice like this :

    [GetAddress %target_field%language=%language% gkey=%google_key% address=billing_address1 city=billing_city zip=billing_zip state=billing_state country=billing_country]

    If you do this you will need to hide the fields manually.

    Notes :

    • Address 2 field is never used and should be offered to your customers so they can enter things like appartement number
    How to get your Google Map Key

    Step 1

    Go to the Google Developer Console.

    Step 2

    Click on “Select Project”. If you have already created a Google Project before, one will automatically be seclected (in this capture, it’s “My Project”).

    getaddress_01.png

    Step 3

    Click on "New Project". You'll be required to enter a name.

    getaddress_02.png

    Step 4

    Once you've picked a name, you'll see a notification at the top right corner while your project is being created.

    Once that's done, go back to Step 2 and select your newly created project.

    Step 5

    Click on “+ ENABLE APIS AND SERVICES”.

    getaddress_03.png

    Step 6

    Search for "Places API" and click "Enable". Then do the same for "Maps JavaScript API".

    Step 7

    After enabling the Places API, you’ll see the Places API management dashboard. Click on the “Credentials” tab.

    getaddress_04.png

    Step 8

    Click on "To view all credentials or create new credentials visit Credentials in APIs & Services".

    getaddress_05.png

    Step 9

    Click on “Create Credentials” -> “API Key”.

    Step 10

    Bravo, you now have your API Key which you can use in place of %google_key% in your [GetAddress] shortcodes.

    Note that you have to create a billing account and add a payment method to be able to use the Places API.

    To do so go to https://console.cloud.google.com/, click on “Get started for free” and fill up the needed information.

    As of September 2019 this feature is being offered free of charge by Google.

    You can learn more about Google's Pricing here :
    https://developers.google.com/places/web-service/usage-and-billing#basic-data

    [QrScan]

    [QrScan #%trigger.anchor% %redirect_url%={QR}]


    This shortcode will allow you to pop up a QR-Code scanner through a button linking to a #%trigger.anchor%, allowing your visitor to scan it using a webcam or phone camera.

    Once a QR code is successfully scanned, the visitor will be redirected to the %redirect_url% specified in the shortcode. In the %redirect_url%, you can use the {QR} placeholder to insert the data from the scanned QR code.

    You can have multiple [QrScan] shortcodes on a page, allowing you to have multiple buttons, redirect URLs, and functions.

    Note that you can use Magic Hooks to turn a string into a QR-Code.

    This combined with our other tools should let you build very complex QR Systems, covering most use cases from Ticketing to Inventory Management or even Order Tracking. Contact us if you need help.


    Attribute Type / Values Description
    #%trigger.anchor% Replace this with the anchor button that will trigger the QR-Code Scanner.

    Required.
    %redirect_url% The Url the visitor will be redirected to after scanning the QR-Code.
    {QR} Use as-is Add {QR} anywhere in your %redirect_url% to use the scanned data.

    You can use only a %redirect_url% attribute or the {QR} reference, but at least one of them is Required.

    Examples

    Vidéo Exemple

    [QrScan #go.to.login https://app.ontraport.com]
    

    Will let you scan a QR-Code and it will then redirect the user to the Ontraport Login Page. No, it doesn't make any sense to do this.

    [QrScan #redirect.qr {QR}]
    

    Will redirect the visitor directly to the scanned data.

    [QrScan #search.google https://google.com?q={QR}]
    

    Will search Google.Com for the scanned data.

    Live Demos

    Live Demo

    Right Click -> View Source to see the Shortcodes and how we used them.

    [Signature]

    [Signature %target_field%]


    This shortcode will transform the target field into a signature drawing box, allowing users to sign with their mouse or finger if they are on a touchscreen or type it with a keyboard.

    The signature image will be encoded and stored as a "data://" string that can be used as an image src attribute on pages. Note that this will not work in Emails.

    You can use this image by simply calling the value of the field in place of the image url in an email or an Ontraport Page.


    Attribute Type / Values Description
    %target_field% #%field_id% or %field_name% You must add a field to the page which will be used as a signature drawing box by your customer. This field will also be populated with the signature and saved upon form submission.

    Must be a Long Text field in order to store the (long) signature as a String.

    Required.
    type= draw or draw,type or type type=draw will transform the field into a signature drawing box, allowing users to sign with their mouse or finger.
    type=type will transform the field into a text signature field, allowing users to sign by typing with their Keyboard.
    type=draw,type will allow users to choose if they want to type or draw their signature in the field.

    Default is type=draw.

    Live Demos

    Simple Signature field

    Contract Signature Portal

    Right Click -> View Source to see the Shortcodes and how we used them.

    Access Tutorial

    [Scheduling]

    Our Scheduling Better Field is a set of Shortcodes and Webhooks that will let you build very simple or infinitely complex Appointment Booking Setups.

    Examples

    Access Tutorial

    [Schedule]

    [Schedule %target_field% %public_scheduling_token%]


    This shortcode will transform the target Date and Time Field into a Calendar Booking field, allowing your users to pick a free Date and Time on your Calendar.

    This will then fill that Date and Time field with the proper Date/Time/Timezone combination, which will then be sent to Ontraport upon form submission.

    Note that in order to avoid any Double Booking, you must set your "Log an event into your calendar" webhook in order for the event to be added to your calendar.


    Attribute Type / Values Description
    %target_field% #%field_id% or %field_name% You must add a Date and Time field to the page which will be used to hold our Calendar Booking information. This field will be populated with the proper date/time/timezone and saved upon form submission.

    Must be a Date and Time field.

    Required.
    %public_scheduling_token% Key Your %public_scheduling_token%(click to get it). Required.
    align= Parameter align=left or center or right With center default.

    Will let you set how you want to align the calendar within the column it sits.

    Optional

    [ScheduleTimer]

    [ScheduleTimer token=%public_scheduling_token% block=#%block_id% display=yes/no]

    This Shortcode will set an Ontraport Countdown Timer to the next available time for the Scheduling Module related to your Token.

    Attribute Type Description
    token= Key Your %public_scheduling_token%(click to get it).

    Required.
    #%block_id% ID The ID of the block containing the Countdown you wish to set to the proper time. If no #%block_id% is provided, it will default to "All Countdowns".
    display=yes/no Boolean Yes (Default) : The timer will be visible, even if the time has already passed.

    No : The timer will be hidden when the time has already passed.(0)

    Log an event into your calendar

    This Webhook will add an event to your calendar.

    To use this Magic Hook, get your %private_scheduling_token%by visiting the link provided.
    Once you have your token, you can simply POST the following Webhook from your Ontraport Campaign:

    https://klikfx.com/api/schedule/log-event?token=%private_scheduling_token%

    POST Parameters:

    Parameter Type DESCRIPTION
    title= String A name for your event. Required.
    &email= Ontraport Merge Field The merge field for the email address of the contact you have an appointment with. In general it will be [Email], unless you use Custom Objects. Required.
    &date= Ontraport Merge Field The merge field for the date of the appointment. This should be a UNIX timestamp formatted field. Must be UNIX Timestamp formatted. Required.
    &description= String A description for your event.
    &location= String A location for your event.
    &block= Parameter yes - Default value, the event will block time on the calendar, equivalent to setting Show me as to Busy in the Calendar UI. .
    no - The event does not block time on the calendar, equivalent to setting Show me as to Available in the Calendar UI.
    &object_id= Object ID The Object ID of the object you wish to update with the Event ID.

    Required if you want to use the cancel or reschedule webhook.
    &id= ID The ID of the object you wish to update with the Event ID.

    Required if you want to use the cancel or reschedule webhook.
    &field= Field ID The ID of the field where the Event ID will be stored.

    Required if you want to use the cancel or reschedule webhook.

    Campaign webhook example:

    Add the destination URL: https://klikfx.com/api/schedule/log-event?token=[%private_scheduling_token%]
    Select webhook method: POST
    Add the data to send:

    title=Meeting with [First Name] [Last Name]&email=[Email]&description=Please call this person promptly: [SMS Number]&date=[Appointment Date Field unix+0]
    

    Will add an event to your calendar looking like this :

    Title : Meeting with John Doe

    Description : Please call this person promptly: +1xxxxxxxxxx

    Date : Date

    Cancel an event

    This Webhook will cancel an event of your calendar.

    To use this Magic Hook, get your %private_scheduling_token%by visiting the link provided.
    Once you have your token, you can simply POST the following Webhook from your Ontraport Campaign:

    https://klikfx.com/api/schedule/cancel-event?token=%private_scheduling_token%

    POST Parameters:

    Parameter Type DESCRIPTION
    event_id= ID The Event ID of your event. This ID need to be setup with Log an event into your calendar Required.

    Reschedule an event in your calendar

    This Webhook will reschedule an event in your calendar.

    To use this Magic Hook, get your %private_scheduling_token%by visiting the link provided.
    Once you have your token, you can simply POST the following Webhook from your Ontraport Campaign:

    https://klikfx.com/api/schedule/reschedule-event?token=%private_scheduling_token%

    POST Parameters:

    Parameter Type DESCRIPTION
    event_id= ID The Event ID of your event. This ID need to be setup with Log an event into your calendar Required.
    &date= Ontraport Merge Field The new date for you event. Need to be in UNIX Timestamp. Required.

    [UploadBox]

    [UploadBox %target_field% %your_token% subfolder=%a_folder_name%]

    Attribute Type Description
    %target_field% #%field_id% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    You can save yourself some time by using our Free Chrome Plugin to find your Field's id.

    Required.
    %your_token% Key You may access our Upload Box Feature and your token by clicking here.

    Required.
    subfolder= Variable or String All the files uploaded with this uploadbox will be stored within a %a_folder_name% folder. So every different client can have a different folder name.

    You can Have multiple different subfolder=Variable or String.

    Exemple : email=$email or email=[Email]

    Optional

    Create Folder In Your Storage

    This hook creates a folder in your UploadBox storage. To use it please obtain your %clickfix_token% and your uploadbox token. Send this webhook from your Ontraport Automation:

    https://klikfx.com/a/h/storage-folder?token=[your_clickfix_token]

    Parameter Type DESCRIPTION
    &upload= UploadBox Token Your UploadBox token.

    Required.
    &path= String A path to your desired folder. Please note that path will be sanitized to a path-safe characters (letters, digits, spaces and -._/). To create a several nested folders, please use / as a separator.

    NB: your UploadBox path must contain the [PATH] variable to take effect.

    Example: folder1/folder2
    &vars[<name>]= Array Additional variables for your path. If you specified any custom variables in the UploadBox path, provide the values in this parameter. Example: vars[name]=PeterGriffin&vars[email]=awesome.me@example.com
    &object= Object ID The Object ID of the Destination Object you wish to get the data into. If id presents and this parameter is skipped, Contacts object will be updated. Optional.
    &id= ID The ID of the destination object you wish to get the data into. If not provided, no object will be updated.
    &field= String Destination field of object. Receives an URL to directory that was created. If not provided, no object will be updated.

    NB: Only supports Google Drive storages.

    NB: The created directory will be shared for reading for anyone with an URL. To prevent that, use "Private Links" setting in your storage.

    NB: As a safety measure set by Google we cannot interact with folders that were not created via the API, so you can’t add files or folders to an existing folders, and creating a folder with an existing name will simply create a new folder.

    Edit Folder Name

    This hook will modify a folder in your UploadBox storage. To use it please obtain your %clickfix_token% and your UploadBox token. Send this webhook from your Ontraport Automation:

    https://klikfx.com/a/h/storage-folder-change-path?token=[your_clickfix_token]

    Parameter Type DESCRIPTION
    &upload= UploadBox Token Your UploadBox token.

    Required.
    &path= String A path to your desired folder. Please note that path will be sanitized to a path-safe characters (letters, digits, spaces and -._/). To create a several nested folders, please use / as a separator.

    NB: your UploadBox path must contain the [PATH] variable to take effect.

    Example: folder1/folder2
    &vars[<name>]= Array Additional variables for your path. If you specified any custom variables in the UploadBox path, provide the values in this parameter. Example: vars[name]=PeterGriffin&vars[email]=awesome.me@example.com
    &old_path= String The old path to your desired folder.

    Example: old_path=folder/[ID]/Contracts

    NB: Choose between &old_path= OR &path_link=.
    &path_link= URL A shared link url (the link you get when you first create your folder).

    NB: Choose between &old_path= OR &path_link=.

    NB: As a safety measure set by Google we cannot interact with folders that were not created via the API, so you can’t edit the name of a folder that was not created via the API.

    [UploadToField]

    [UploadToField %field%]

    Will make an upload box that'll allow you to turn an image or any file into a date:// string to be stored inside a long text field.

    Others 🆓/➰/💡/♾️

    [Random]

    Simple :

    [Random]


    This shortcode generates a random numeric number.

    It can be used as a unique identifier for users in a multi-step form if you don’t require their email address as a first step for example. Simply add this shortcode as “prefill” to a hidden field, and use a [SyncFields] shortcode to propagate that randomly generated identifier across your different forms.

    It's important to note that using this shortcode requires you to add the fields to your page and hide them using the clickfix Hide shortcodes.

    Example

    Live Demo

    [FillField]

    [FillField %target_field% with "%keyword%"]


    Will Fill the Field %target_field% with %keyword%.


    [FillField %target_field%with url %url_parameter_01%,%url_parameter_02%]


    Will Fill the Field %target_field% with the value of your %url_parameter_01%, and if not found of your %url_parameter_02%.


    [FillField %target_field%with url %url_parameter_01%,%url_parameter_02% or "%keyword%"]


    Will Fill the Field %target_field% with the value of your %url_parameter_01%, and if not found of your %url_parameter_02%, and if not found it will Fill it with %keyword%.


    [FillField %target_checkbox_field%with %checked/unchecked%]


    Will set your %target_checkbox_field% as either %checked% or %unchecked%.


    Attribute Type / Values Description
    %target_field% #%field_id% or %field_name% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    If you use %field_name% and multiple Fields with the same name are found on the page, all the Fields will be Filled.

    You can save yourself some time by using our Free Chrome Plugin to find your Field's id or name.

    Required.
    "%keyword%" String (Word or Sentence) A set Value with which you want to Fill your Field.
    Checkbox Field Type If you are dealing with a Checkbox Field Type, use either with checked or with unchecked.
    Dropdown Field Type If you are dealing with a Dropdown Field Type, you can use either Value or Label.
    %url_parameter_0X% URL Parameter Replace this with the Parameter(s) you want to get from the URL and send to your Field.

    Examples

    [FillField email with url email,Email or “Enter Your Email To Continue”]
    

    Will Fill the email Field with :

    1. The Value found in the url parameter "email", and if not found with...
    2. The Value found in the url parameter "Email", and if not found with...
    3. Enter Your Email To Continue
    [IfField country not 'United States','Australia','Canada']
    [FillField state with "My State is not listed”]
    [HideField state]
    [/IfField]
    

    Will Hide and Fill the state Field if the selected country is not United States, Australia or Canada.

    [BumpQuantity]

    [BumpQuantity quantity=%quantity%]

    Will update the quantity of a product in a Bump.

    You will need to active "Allow the buyer to change quantity" for the product in the bump you want to update the quantity of.

    A %quantity%can a numeric or a $var.

    [ThisBlock]

    [ThisBlock $var]


    This shortcode will allow you to grab the ID of the surrounding block and store it into a $variable.

    To be used as [loop:ThisBlock $var[Block//ID]] to be able to act on individual blocks generated via Dynamic Blocks.


    Exemples

    Live Demo

    2 Steps :
    
    1- In the dynamic block, Custom HTML element
    [Loop:ThisBlock $blockid[Block//ID]]
    [loop:HideElement 4 in $blockid[Block//ID]]
    
    2- In the Custom Code Header
    [IfAnchor #show.$ablock]
    [ShowElement 4 in $ablock]
    [HideElement 5 in $ablock]
    [/IfAnchor]
    

    On this demo the shortcodes we used in a dynamic loop block will alow us to get the ID of the block in wich we click the button with this Anchor #show.$blockid[Block//ID]. And then we will hide the element 5 and show the element 4 only in this block of the loop with the Anchor in the Custom Code.

    [CopyFields]

    [CopyFields %field_name_1%,%field_name_X% of #%source_block_id% to #%target_block_id%]


    This Shortcode will copy all the selected field from one block to the targeted block.


    Attribute Type Description
    %field_name_X% %field_name% All the field you want to copy. You can select as many field as you want, they just needs to be separated by a comma.

    You can save yourself some time by using our Free Chrome Plugin to find your Field's name.

    Required.
    of #%source_block_id% ID The block ID where the field you want to copy are.

    You can save yourself some time by using our Free Chrome Plugin to find your Block ID.

    Required.
    to #%target_block_id% ID The block ID where you want to copy the field you selected.

    Required.

    Examples

    [CopyFields email,state,city,address,address2,zip,country,firstname,lastname,sms_number of #o67e0646174c8 to #o98335abdbf38]
    

    Will copy the value of the field email, state, city, address, address2, zip, country, firstname, lastname and sms_number found in the block ID #o67e0646174c8 to the block ID #o98335abdbf38

    [FillBump]

    [FillBump %bump_id% in #%id_block% with %checked/unchecked%]


    Will set your bump: %bump_id% in the block: #%id_block% as either %checked% or %unchecked%.


    Attribute Type / Values Description
    %bump_id% Bump ID The Bump id of the bump you want to target.

    You can save yourself some time by using our Free Chrome Plugin to find your Bump's id.

    Required.
    #%id_block% Block ID Because the same Bump id can be on different block we need the #blockid of the bump you want to target.

    You can save yourself some time by using our Free Chrome Plugin to find your Block's id.

    Required.
    Bump Field Type If you are dealing with a Bump Field Type, use either with checked or with unchecked.

    Required.

    [FillCoupon]

    [FillCoupon %url_parameter% in #%id_of_target_block%]


    Will Fill and Submit the Coupon Field in the #%id_of_target_block% Block with the value of your %url_parameter%.


    [FillCoupon "%coupon%" in #%id_of_target_block]


    Will Fill and Submit the Coupon Field in the #%id_of_target_block% Block with %coupon%.


    If no Block ID is provided we will fill the first coupon field we find.

    Attribute Type Description
    #%id_of_target_block% ID Because coupon have the same ID if they are in different Blocks, you may target a specific coupon by adding this to your Shortcode.

    You can save yourself some time by using our Free Chrome Plugin to find your Block's ID.

    Optional.

    Examples

    Vidéo Exemple

    Live Demos

    Filling the coupon with the url parameters

    Right Click -> View Source to see the Shortcodes and how we used them.

    [FillFrame]

    [FillFrame #%frame_id% %url_parameter_01%,%url_parameter_02%]


    It is not possible for a Frame (in our case, an Ontraport Form embedded in a Page) to access parameters from the URL.

    This shortcode will let you send those parameters manually to the Frame so you can exploit it (for prefilling Fields for example.

    Note that when using Frames you must add the ClickFix import script ( <script src="https://klikfx.com/js/1"></script>) to both the Page Header and a Custom HTML Block at the Ontraport Form level.


    Attribute Type / Values Description
    #%frame_id% ID The ID of the Frame you want to send Data to. When publishing your Form, one of the Parameter is named data-opf-uid. This is what you're looking for. Remember to include the # in your Attribute.

    Required.
    %url_parameter_0X% URL Parameter Replace this with the Parameter(s) you want to Get from the URL and send to your Frame.

    Required.

    [FillFrame #%frame_id% anchor=#%trigger.anchor%]


    This shortcode will let you send those parameters manually to the Frame so you can exploit it with [IfAnchor #%trigger.anchor%] %[do_something]%[/IfAnchor].

    Attribute Type Description
    #%frame_id% ID The ID of the Frame you want to send Data to. When publishing your Form, one of the Parameter is named data-opf-uid. This is what you're looking for. Remember to include the # in your Attribute.

    Required.
    #%trigger.anchor% #Anchor Replace this with the Anchor Link that will Trigger your Action. Note that in Ontraport, in order to publish a #%trigger.anchor% you must insert a dot "." in the middle of it.

    So if you build an anchor that will hide a menu for example, it could look like this #hide.menu.

    Required.

    Examples

    [FillFrame #p2c185444f23 email,firstname]
    

    Will send the email and first name Parameters from the Browser URL onto the Frame whose ID is #p2c185444f23.

    Then in the Frame itself you can do most of the things you would normally do with our Shortcodes on an Ontraport Page such as :

    [FillField email with url email][HideField email]
    

    [FromURL]

    [FromURL %url_parameter_01%,%url_parameter_02% or "%keyword%"]


    Mostly Deprecated : On your Ontraport Pages you can now just do [%url_parameter%] to get the same functionality. This Shortcode - as most of our Shortcodes - can be used outside of Ontraport Pages though.

    This Shortcode will display the Value found in the Browser URL for %url_parameter_01%. If not found it will look for %url_parameter_02%, and if this is not found it will display your "%keyword%".


    Attribute Type Description
    %url_parameter_0X% URL Parameter Replace this with the Parameter(s) you want to display from the URL. Required.
    %keyword% String (Word or Sentence) Will display the %keyword% if none of your %url_parameter_0X% is found in the URL.

    Examples

    Access Tutorial

    [FromURL email,Email or "Enter Your Email To Continue"]
    

    Will display :

    1. The Value found in the url parameter "email", and if not found with...
    2. The Value found in the url parameter "Email", and if not found with...
    3. Enter Your Email To Continue

    [MultiStep]

    Simple :

    [MultiStep #%id_of_target_block% #%trigger.anchor%]


    This shortcode will :

    • Prevent the automatic redirection that occurs on Ontraport after a visitor submits the form located in the block with ID #%id_of_target_block%
    • Send the data from the form located in the block with ID #%id_of_target_block%to Ontraport.
    • Trigger your #%trigger.anchor% when the form located in the block with ID #%id_of_target_block% is Submitted.

    The Shortcode [MultiStep] can be used multiple times on a single Ontraport page, allowing for the creation of seamless multi-step experiences for visitors while still saving all data to Ontraport in case they do not reach the final step.

    It's important to note that, in general, a unique identifier such as an email address from the URL is needed to identify the contact across different forms. In such cases, our [SyncFields] shortcode can be used to help with this.


    It's also noteworthy that when using shipping on an order form in a second block, the address data from the first block may not be automatically populated, so it's necessary to add and hide the address fields on the second block.

    Additionally, if "Merge via cookie data" checkbox is enabled in the form settings, it can help to alleviate potential issues that may arise when using multistep forms, such as blank contact creation if fields are not properly synched.


    Attribute Type Description
    %id_of_target_block% ID The ID of the Block in which you want to prevent the Form from being automatically Redirected while still Posting its Submited Data to Ontraport.

    You can save yourself some time by using our Free Chrome Plugin to find your Block's ID.

    Required.
    #%block_id% Shortcode Will Execute your %[do_something]% Shortcode upon your [IfAnchor] being Triggered.
    #%trigger.anchor% #Anchor Replace this with the Anchor Link that will be Triggered upon your Form being Submitted.

    Required.
    except=#anchor% Parameter Will prevent the multistep and let the form submit normally if #anchor is found in the url. Useful if you use only one block/form to.

    Advanced :

    [MultiStep #%id_of_target_block% #%trigger.$variable%]

    You can use your Variable $variable defined through your [Calc] shortcodes Trigger an Anchor.

    Live Demos

    Multi Step Form

    Right Click -> View Source to see the Shortcodes and how we used them.

    Examples

    [HideBlock #o76aaaa4513]
    
    [MultiStep #o7dff3cad25e6 #step.2]
    
    [IfAnchor #step.2]
    [HideBlock #o7dff3cad25e6]
    [ShowBlock #o76aaaa4513]
    [Redirect #o76aaaa4513]
    [/IfAnchor]
    
    [SyncFields email]
    

    Will :

    • [HideBlock #o76aaaa4513] : Hide the Block with ID #o76aaaa4513
    • [MultiStep #o7dff3cad25e6 #step.2] :
      • Send to Ontraport the Data from the Form contained in the Block with ID #o7dff3cad25e6 when Submit is clicked
      • Trigger the #step.2 Anchor when Submit is clicked
    • [IfAnchor #step.2] [HideBlock #o7dff3cad25e6] [ShowBlock #o76aaaa4513] [Redirect #o76aaaa4513] [/IfAnchor] : Now, we use our [IfAnchor] to do what we want to do upon Form Submission. In this case, we Hide the previous Form and Display the next Form (plus we use [Redirect]) to center the new Form
    • The SyncFields is necessary to identify the contact between step one and two.
    [Calc $total=f1234]
    [MultiStep #o7dff3cad25e6 #add.$total]
    
    [IfAnchor #add.$total]
    [Calc f5678=$total+f5678]
    [/IfAnchor]
    

    Will make the sum of f5678 and f1234. The found value will then replace the value in f5678 upon form submit.

    [Redirect]

    [Redirect %url%]

    or

    [Redirect #%anchor%]


    This shortcode will Redirect a Visitor to a %url% or an #%anchor%(triggering any related [IfAnchor] in the process).

    You are Required. to provide an Anchor or a URL to Redirect the Visitor to.


    Other possible syntax :

    [Redirect url="%url%"]

    Use if you have a complex url that includes parameters.

    [Redirect url="%url%?param={fromurl:%url_parameter%}" ]

    Will grab a url parameter to append to the redirect url.

    Examples

    Access Tutorial

    [Redirect https://google.com]
    

    Will redirect your Visitor to https://google.com.

    [ShowAfter 1min]
    [ShowBlock #o7dff3cad25e6]
    [Redirect #o7dff3cad25e6]
    [/ShowAfter]
    

    Will display the Block with ID #o7dff3cad25e6 after one minute, and scroll the Visitor down to that Block.

    [IfAnchor #show.my.block][ShowBlock #o7dff3cad25e6][Redirect #o7dff3cad25e6][/IfAnchor]
    

    Will do the same as above, but upon your Visitor clicking an Anchor Button.

    Note that we don't use [IfAnchor #o7dff3cad25e6] because if you were to do this, the page would immediately redirect you to the Block with ID #o7dff3cad25e6 - which will lead to some odd page behaviour since the Block is still hidden at this point.

    [SearchReplace]

    [SearchReplace search="A string" replace="Another string" monitor=#%blockid%]

    This shortcode will search for a specified string on the page and replace it with another specified string.

    It can be useful for translating text on a page, such as in a payment form.

    The shortcode includes an attribute "monitor" where you can specify the ID of the block containing the text that needs to be translated, allowing the shortcode to dynamically update the translation as the user interacts with the page.

    monitor=#blockid of your payment form

    Because the payment form tends to evolve / needs to be retranslated as the user interacts with the page (if they enter a coupon code for example).

    [Submit]

    [Submit #%id_of_target_block%]


    This Shortcode will Submit the Form contained in the Block with ID #%id_of_target_block%.

    If no #%id_of_target_block% is provided, this Shortcode will Submit the first form found on the page.

    So for Ontraport Forms, you can simply use [Submit].


    Attribute Type Description
    %id_of_target_block% ID The ID of the Block you want to submit.

    You can save yourself some time by using our Free Chrome Plugin to find your Block's ID.

    Examples

    [IfAnchor #submit.form]
    [Submit #o76aaaa4513]
    [/IfAnchor]
    

    Will Submit the Form in the Block with ID #o76aaaa4513 once the #submit.form Anchor is triggered.

    [ShowAfter]

    [ShowAfter %time%]
    %[do_something]%
    %keyword%
    [/ShowAfter]


    This shortcode will Trigger one or more Actions - %[do_something]% - and/or display a String - %keyword%- after a certain %time%.

    Please note that :

    • This Shortcode requires an Opening Shortcode, [ShowAfter], and a Closing Shortcode, [/ShowAfter]
    • You can put this Shortcode all on one line like this:

      [ShowAfter][do_something][/ShowAfter]

      or on multiple lines like this:

      [ShowAfter]
      [do_something]
      [/ShowAfter]


    Attribute Type Description
    %time% Delay Replace this with your Wait Time. Your delay can be expressed with :

    Seconds : s,sec,second,seconds

    Minutes : m,min,minute,minutes

    Hours : h,hour,hours

    Required.
    %[do_something]% Shortcode Will Execute your %[do_something]% after your %time%.
    %keyword% String (Word or Sentence) Will display the %keyword% after your %time%.

    Examples

    Access Tutorial

    [HideBlock #o7dff3cad25e6]
    [ShowAfter 1min]
    [ShowBlock #o7dff3cad25e6]
    [Redirect #o7dff3cad25e6]
    [/ShowAfter]
    

    Will first hite the Block with ID #o7dff3cad25e6, and will then display the Block with ID #o7dff3cad25e6 after one minute, and scroll the Visitor down to that Block.

    Live Demos

    @ComingSoon

    Timed Sequence Of Events

    Right Click -> View Source to see the Shortcodes and how we used them.

    [TheYear]

    [TheYear]


    Will display the current year.


    [Timer]

    Step 1

    [Timer type=%timer_type% field=%target_field% display=yes/no]


    This Shortcode will set an Ontraport Countdown on an Ontraport Page to a date and time related to your %timer_type% and Fill the %target_field% with a TimeStamp (allowing you to transfer this TimeStamp over to Page 2, or to send it via Email to your Visitor).

    Note that your %target_field% will be hidden automatically.

    Your %target_field% must be either a Numeric, a Text, a Long Text Field or Date & Time Fields.

    Note that once the contact is cookied and the value is stored inside a field, you can just use a regular Ontraport Merge Field to bring up that timestamp.


    %timer_type%


    Values Description
    every_quarter Will set the timer to the next quarter of the hour.
    %time% Replace with a time of your choice. our delay can be expressed with:
    Seconds: s,sec,second,seconds
    Minutes: m,min,minute,minutes
    Hours: h,hour,hours
    next(day1:time1:tz)(day2,day3:time1,time3:tz) Will set the timer to the next combination of day and time found in the chosen timezone. See examples for more information on how to use this case.

    Timezones can be found here under the TZ database name column

    Feel free to contact us if you need other options.
    %timestamp% A Unix Timestamp

    %target_field%



    May be #%field_id% or %field_name%. Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    If you use %field_name% and multiple Fields with the same name are found on the page, all fields will be Filled.

    You can save yourself some time by using our Free Chrome Plugin to find your Field's ID or Name.

    %display%


    Values Description
    yes (default) Will do nothing.
    no Will hide the Timer elements that have already reached Zero when the page loads.
    days, hours, minutes, seconds You can also specifiy the columns you want to display by adding their names, comma-separated.

    Step 2

    [Timer param=%url_parameter% submit=#%id_of_target_block%]


    This Shortcode will collect the TimeStamp from your %url_parameter% and submit the Form with ID #%id_of_target_block% once the Timer has expired.


    Demo and Video page

    Examples

    Step 1 : Optin Page : Every Monday and Wednesday at 8pm or every friday or saturday at 6pm Paris Time, whatever comes first
    
    [Timer type=next(monday,tuesday:8pm:Europe/Paris)(friday,saturday:6pm:Europe/Paris) field=#o36ed4c6216c6-f1776 display=no]
    

    Will set the End Time to be whatever comes next between the provided possiblities.

    Step 1 : Optin Page : Every Quarter
    
    [Timer type=every_quarter field=#o36ed4c6216c6-f1776 display=no]
    

    Will calculate End Time, in this case the next quarter of the hour, set all Ontraport Countdowns found on the page to this Time, and Fill the Field with ID #o36ed4c6216c6-f1776 with End Time.

    It will also hide all countdown elements that have hit 0.

    From there we'll assume that :

    • you are asking for an email on Step 1
    • the Redirect URL of your Form is set to https://step2.com?email=[Email]&timer=[Timer Field]
    Step 1 : Optin Page : 10 Minutes in the future
    
    [Timer type=10min field=#o36ed4c6216c6-f1776]
    

    Will calculate End Time, in this case 10 minutes in the future, set all Ontraport Countdowns found on the page to this Time, and Fill the Field with ID #o36ed4c6216c6-f1776 with End Time.

    From there we'll assume that :

    • you are asking for an email on Step 1
    • the Redirect URL of your Form is set to https://step2.com?email=[Email]&timer=[Timer Field]
    Step 2 : Confirmation Page
    
    [Timer param=timer submit=#o8c6cc87feff8]
    [FillField #o8c6cc87feff8-email with email]
    

    Will set all Ontraport Countdowns found on the page to TimeStamp found in the timer Parameter from the URL, and will Submit the Form with ID #o8c6cc87feff8 once the Countdowns hit zero.

    We prefill the Email Field because we want to make sure the contact is still identified on page 3 (which would generally be a Webinar Page or a "Too Late" Page).

    Live Demos

    [Today]

    [Today %format%(optional) var=%$a_variable_name%]

    Attribute Type Description
    %format% String In addtion you can add specific format code.

    (Optional, if nothing date_format=long)

    (See Below)
    date_format= Parameter date field format : long, abb, ss, es, ed, dayname, unix, udayname. You can find them Here
    long Will display Long date.
    abb Will display Short date.
    ss Will display Standard Slash date.
    sd Will display Standard Dash date.
    es Will display European Slash date.
    ed Will display European Dash date.
    dayname Will display Day of the week date.
    unix Will display Unix Time date.
    %$a_variable_name% String A name for the Variable the value will be stored in.

    Optional
    Attribute Type Example
    String
    Month M 1 2 ... 11 12
    Mo 1st 2nd ... 11th 12th
    MM 01 02 ... 11 12
    MMM Jan Feb ... Nov Dec
    MMMM January February ... November December
    Quarter Q 1 2 3 4
    Qo 1st 2nd 3rd 4th
    Day of Month D 1 2 ... 30 31
    Do 1st 2nd ... 30th 31st
    DD 01 02 ... 30 31
    Day of Year DDD 1 2 ... 364 365
    DDDo 1st 2nd ... 364th 365th
    DDDD 001 002 ... 364 365
    Day of Week d 0 1 ... 5 6
    do 0th 1st ... 5th 6th
    dd Su Mo ... Fr Sa
    ddd Sun Mon ... Fri Sat
    dddd Sunday Monday ... Friday Saturday
    Day of Week (Locale) e 0 1 ... 5 6
    Day of Week (ISO) E 1 2 ... 6 7
    Week of Year w 1 2 ... 52 53
    wo 1st 2nd ... 52nd 53rd
    ww 01 02 ... 52 53
    Week of Year (ISO) W 1 2 ... 52 53
    Wo 1st 2nd ... 52nd 53rd
    WW 01 02 ... 52 53
    Year YY 70 71 ... 29 30
    YYYY 1970 1971 ... 2029 2030
    YYYYYY -001970 -001971 ... +001907 +001971

    Note: Expanded Years (Covering the full time value range of approximately 273,790 years forward or backward from 01 January, 1970)
    Y 1970 1971 ... 9999 +10000 +10001

    Note: This complies with the ISO 8601 standard for dates past the year 9999
    Era Year y 1 2 ... 2020 ...
    Era N, NN, NNN BC AD

    Note: Abbr era name
    NNNN Before Christ, Anno Domini

    Note: Full era name
    NNNNN BC AD

    Note: Narrow era name
    Week Year gg 70 71 ... 29 30
    gggg 1970 1971 ... 2029 2030
    Week Year (ISO) GG 70 71 ... 29 30
    GGGG 1970 1971 ... 2029 2030
    AM/PM A AM PM
    a am pm
    Hour H 0 1 ... 22 23
    HH 00 01 ... 22 23
    h 1 2 ... 11 12
    hh 01 02 ... 11 12
    k 1 2 ... 23 24
    kk 01 02 ... 23 24
    Minute m 0 1 ... 58 59
    mm 00 01 ... 58 59
    Second s 0 1 ... 58 59
    ss 00 01 ... 58 59
    Fractional Second S 0 1 ... 8 9
    SS 00 01 ... 98 99
    SSS 000 001 ... 998 999
    SSSS ... SSSSSSSSS 000[0..] 001[0..] ... 998[0..] 999[0..]
    Time Zone z or zz EST CST ... MST PST
    Z -07:00 -06:00 ... +06:00 +07:00
    ZZ -0700 -0600 ... +0600 +0700
    Unix Timestamp X 1360013296
    Unix Millisecond Timestamp x 1360013296123
    Attribute Type Example
    Localized Format String
    Time LT 8:30 PM
    Time with seconds LTS 8:30:25 PM
    Month numeral, day of month, year L 09/04/1986
    l 9/4/1986
    Month name, day of month, year LL September 4, 1986
    ll Sep 4, 1986
    Month name, day of month, year, time LLL September 4, 1986 8:30 PM
    lll Sep 4, 1986 8:30 PM
    Month name, day of month, day of week, year, time LLLL Thursday, September 4, 1986 8:30 PM
    llll Thu, Sep 4, 1986 8:30 PM

    [UpdateQuantity]

    [UpdateQuantity id=%quantity field id% quantity=%quantity%]

    Will update the quantity of a specific product.

    You can get the %quantity field id% using our Chrome Plugin. Simply highlight Fields IDs and click on the quantity you want to update to Copy the id to your clipboard.

    A %quantity%can a numeric or a $var.

    Examples

    [UpdateQuantity id=5bb873ea-a95e-d523-e918-0ff674497897 quantity=10]
    

    Will update the quantity field to 10.

    [Calc $qty=f2185]
    [IfAnchor #update]
    [UpdateQuantity id=5bb873ea-a95e-d523-e918-0ff674497897 quantity=$qty]
    [/IfAnchor]
    

    Will update product quantity with the value of field f2185 when Anchor #update is clicked.

    [Validate]

    [Validate %target_field% %validation_type% "%validation_message%"]


    This shortcode will prevent a Form Submission if the %validation_type% deems the content of the %target_field% non-valid and will display your custom %validation_message% in place of the Ontraport one.


    Attribute Type Description
    %target_field% #%field_id% or %field_name% Because the same Field will have the same name if it is on the page multiple times, you may target a specific Field by targeting its #%field_id%.

    If you use %field_name% and multiple Fields with the same name are found on the page, all fields will go through the Validation process.

    You can save yourself some time by using our Free Chrome Plugin to find your Field's id or name.

    Required.
    %validation_type% Type IBAN will prevent the Submission of the Form with ID %target_field% unless a valid IBAN is entered. Feel free to contact us if you need other options.

    Required.
    Type Xdigits will prevent the Submission of the Form with ID %target_field% unless the number of digits in the field is equal to X.

    Required.
    "%validation_message%" String Your validation message, inside brackets - ".

    Examples

    Access Tutorial

    [Validate #o3f5aa1c64e04-f1234 IBAN “Please enter a valid IBAN”]
    

    Will monitor the Field with ID #o3f5aa1c64e04-f1234 and prevent the Submission of the Form with ID #o3f5aa1c64e04 unless a valid IBAN is entered.

    If the IBAN is deemed non-valid, then "Please enter a valid IBAN" will be displayed at the Field level.

    [Validate #oc20da0737451-office_phone 8digits "Must be 8 digits"]
    

    Will monitor the Field with ID #oc20da0737451-office_phone and will prevent the Submission of the Form unless if the field contains 8 digits.

    If the Field does not contains 8 digits, then "Must be 8 digits" will be displayed at the Field level.

    Live Demos

    @ComingSoon

    Magic Hooks ➰/💡/♾️

    Magic Hooks provides a set of endpoints that allows you to simplify complex processes by performing multiple tasks through a single webhook.

    If you require a Magic Hook that is not currently available, you can request it on the ClickFix Facebook Group and we will add it in!

    URL Shortener

    The URL Shortener allows you to create short, unique, and customized links to send to your clients instead of using PURLs.

    To use this feature, you will need to obtain your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/api/misc/short-url?

    Parameter Required DESCRIPTION
    token= Yes Your %clickfix_token%(click to get it).
    &field= Yes The ID of the Field into which you want to Populate the Shortened URL.
    You may define the field in following formats:
    • field1234, which means a Contact field
    • 10000:field1234, which means it's a field of custom object with ID 10000.
    &id= The ID of the Contact or Object.
    Optional. If not provided, a new object will be created.
    &expiration= This will set the date after which your link will stop working. May be defined in following formats:
    • <value> - the number of days, starting from creation.
    • <prefix>:<value> - in this case prefix means the unit of time. For example, minutes:15 will make your link alive for 15 minutes from creation. Valid prefixes are: 'weeks', 'days', 'hours', 'minutes', 'seconds'.
    • date:<timestamp> or <timestamp> the date that is explicitly set by Unix Timestamp (in seconds).
    • Date condition: you can define a date condition by setting up a base date and an optional interval to add to it or substract from it.
      • Base date can be set up as now or in dd-mm-yyyy format. Please note that this format is compatible with Ontraport European Dash date format.
        Each part of base date (either day, month, or year part) can be replaced with zeroes. Zeroes mean current day/month/year, i.e. 01-01-0000 will be interpreted as January 1st of the current year.
      • Interval (which we add to or substract from base date) can be set up as one or several amount-unit pairs in this fashion: <+/-><offset><unit:day,week,month,year>. This way, 01-01-2019+1year1day will return records for Jan 02, 2020.
      Examples: 01-00-0000+1month - 1st of next month. now+2week - 2 weeks from the moment of creation. 01-08-0000 - 1st Aug of current year.
    By default we keep your links alive for 30 days. The maximum number is 549 days or a year and a half.
    &renewable= (Default 0).

    If renewable=1 the short URL link will be renew if clicked within the expiration date or will expire if not clicked within the expiration.

    If renewable=0 the short URL link will expire at the expiration date.
    &key= Adding a key will encrypt the url in our Database with your own password. You can set it explicit, like key=myownkey, or pass key=generate and we'll generate it for you. This key will be added to shortened url like this: https://rdirct.me/<shortcode>/myownkey , so use it for your advantage.
    Clickfix URL shortener also applies a second password to encrypt your data. If you do not pass the key, we apply our default encryption key, so your customer data is safe in any case.

    The Hook and all the Parameters above go into the "destination URL" box. The URL you want to shorten goes into the "data to send" box.

    Helpers

    Get any Object's Data into fields

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/map-to-custom?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &sourceObject= Object ID The Object ID of the Source Object you wish to get the data for.36 for Partners

    Required..
    &sourceId= ID The ID of the Source Object you wish to get the data for.

    Required..
    &object= Object ID The Object ID of the Destination Object you wish to get the data into.

    Required..
    &id= ID The ID of the Contact or Object you wish to get the data into.

    Required.
    &destination_field=source_field Field IDs The id of the destination_field you wish to populate in your Destination Object from the source_field you wish to get the data for in the Source Object.

    Required.

    Examples

    (https://klikfx.com/a/h/map-to-custom?token=%clickfix_token%&sourceObject=36&sourceId=[Contact ID]&object=0&id=[Contact ID]&f1234=sales
    

    Will look up affiliate data for Contact [Contact ID] and add the total number of sales to the field f1234 in that Contact.

    Random string generator

    The Random string generator Magic Hook will generate a random 24 characters string with letters and numbers all cap and will send its content to a field.

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/random?token=%clickfix_token%

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &object_id= Object ID The Object ID of the object you wish to update with the Random string. Value is 0 for Contacts object.
    &id= ID The ID of the object you wish to update with the Random string.

    Required.
    &field= Field ID The ID of the field where the Random string will be stored.

    Required.

    Document To Field

    The Document To Field Magic Hook will read a doc, docx or pdf document and will send its content to a field.

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/doc2field?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &object_id= Object ID The Object ID of the object you wish to update with the result content. Default value is 0 (Contacts object).
    &id= ID The ID of the object you wish to update with the result content.

    Required.
    &field= Field ID The ID of the field where the result content will be stored.

    Required.
    &file= string The URL of the file whose content you want to send to a field.

    Required.
    &type= Parameters The type : html (default) / text of the content you want to get.

    Required.

    Linkedin Scraper

    The Linkedin Scraper Magic Hook will read a linkedin profile page and will extract its content to a field.

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/linkedin-scrapper?token=%clickfix_token%

    PARAMETER TYPE DESCRIPTION
    token= Key Your ClickFix Token (click to get it).

    Required.
    &object_id= Object ID The Object ID of the Object onto which you want to Populate the Response.
    0 for Contacts (Required).
    &id= ID The ID of the Contact or Object.

    Required.
    &field= Field ID The ID of the Field you want to Populate
    (must be a Long Text Type Field).

    Required.
    &type= Parameters The type : html / text (default) of the content you want to get.
    url= string The URL of the linkedin webpage that you want to convert.

    Required.

    Format Magic Hook

    To use this Magic Hook, get your %clickfix_token%. Please note that your token must have a "Format value" permission enabled. Then POST this WebHook from your Ontraport Campaign:

    https://klikfx.com/a/h/format?token=%clickfix_token%

    Format webhook supports any currency and decimal/thousand separators supported by Ontraport.

    Parameter Type DESCRIPTION
    &%target_field%=%value% Destination The %value% you want pushed into the %target_field%. Multiple fields can be provided. Example: &f1234=$15.99USD&f1235=99.55

    Required.
    &object_id= Object ID The Object ID of the Destination Object you wish to get the data into. If id presents and this parameter is skipped, Contacts object will be updated. Optional.
    &id= ID The ID of the destination object you wish to get the data into.

    Required.
    &type= String Type of formatting. Default value is number. See list of valid types below.

    Valid types

    Type Description Example Value Example Conversion
    number Converts the value into a number with 2 decimals. 10.299.300,44$ USD 10299300.44
    round Rounds the value. 15.55$ 16
    floor Returns the largest integer less than or equal to a given number. 15.55$ 15
    ceil Rounds a number up to the next largest integer. 23.33$ 24

    Email Verification Magic Hook

    To use this Magic Hook, get your %clickfix_token%. Please note that your token must have a "Phone and Email Verification" permission enabled. Then POST this WebHook from your Ontraport Campaign:

    https://klikfx.com/api/misc/check-email?token=%clickfix_token%

    Parameter Type DESCRIPTION
    email= String An email address to validate.

    Required.
    &id= ID The ID of the destination object you wish to get the data into. Optional.
    &object_id= Object ID The Object ID of the Destination Object you wish to get the data into. If id presents and this parameter is skipped, Contacts object will be updated. Optional.
    &destination_field=source_field Field IDs For each response field, you can provide a respective object field to populate data into. See Data Map. Optional, only works together with id.

    Data map

    The payload you provide can contain a map of object fields and response fields. Said map, if passed, will update your destination object with response data.

    Available response fields:

    Field Type Comment
    email String Normalized version of the provided email address.
    user String The user (mailbox) of the provided email address.
    domain String The domain of the provided email address.
    free Boolean true if the email is from a free provider (gmail, hotmail, etc).
    did_you_mean String Returns a suggested email if a possible spelling error was detected.
    result String The result of validation. Possible values: deliverable, risky, unknown, undeliverable. See Data map: result values
    reason String Validation result explanation. Possible values: accepted_email, role, accept_all, disposable, unavailable_smtp, timeout, no_connect, rejected_email, invalid_domain, invalid_email. See Data map: reason values

    For example, if you wish to populate your object with domain, result and reason, simply add the following:

    f1234=domain&f1235=result&f1236=reason

    Data map: result values
    Value Explanation
    deliverable Deliverable means it is confirmed the mailbox exists and the email addresses are safe to send.
    risky A risky result means the email addresses appears to exist, but have quality issues that may result in low engagement or a bounce. Use caution when sending to risky addresses. Accept-All, Disposable, and Role addresses are classified as Risky
    unknown Unknown occurs when it is impossible to get a valid response from the recipient's email server. This usually happens when the destination email server is too slow or temporarily unavailable.
    undeliverable Undeliverable email addresses do not exist, or are syntactically incorrect.
    Data map: reason values
    Value Explanation
    accepted_email TheChecker has confirmed the mailbox exists and the email addresses are safe to send.
    role Role means the mailbox exists, but is a role account (contact, support, sales, admin).
    accept_all Accept all means the domain of the email accept all emails sent to any mailbox. So, we cant't confirm if it really exists or not.
    disposable Disposable means the mailbox exists, but is from a disposable/temporary domain.
    unavailable_smtp Unavailable SMTP is an unknown result, because the mail server returned an unexpected and temporarily response during the verification process.
    timeout Timeout is an unknown result, because the mail server takes too long to answer our requests.
    no_connect No connect is an undeliverable result, because the mail server is unreachable, and is not safe to send.
    rejected_email Rejected email means it is undeliverable, because the provider confirmed the mailbox doesn't exists.
    invalid_domain Invalid domain means it is undeliverable, because the domain doesn't exists or the MX server is misconfigured.
    invalid_email Invalid email means it is undeliverable, because the email has an incorrect syntax.

    Phone Verification Webhook

    To use this Magic Hook, get your %clickfix_token%. Please note that your token must have a "Phone and Email Verification" permission enabled. Then POST this WebHook from your Ontraport Campaign:

    https://klikfx.com/api/misc/check-phone?token=%clickfix_token%

    Parameter Type DESCRIPTION
    phone= String A phone number to validate.

    Required.
    &country_code= String Two-letter country code of a phone number. Passing this value will return invalid response if given phone number doesn't belong to this country. Optional.
    &id= ID The ID of the destination object you wish to get the data into. Optional.
    &object_id= Object ID The Object ID of the Destination Object you wish to get the data into. If id presents and this parameter is skipped, Contacts object will be updated. Optional.
    &destination_field=source_field Field IDs For each response field, you can provide a respective object field to populate data into. See Data Map. Optional, only works together with id.

    Data map

    The payload you provide can contain a map of object fields and response fields. Said map, if passed, will update your destination object with response data.

    Available response fields:

    Name Example
    status valid
    line_type mobile
    carrier Vodafone
    location United Kingdom
    country_name United Kingdom
    country_timezone Europe/London
    country_code GB
    international_format +44 7766 733573
    local_format 07766 733573
    e164_format +447766733573
    can_be_internationally_dialled yes

    For example, if you wish to populate your object with carrier, line type and "Can be internationally dialled" trait, simply add the following:

    f1234=carrier&f1235=line_type&f1236=can_be_internationally_dialled

    Gather Affiliate & Sub-Affiliate Data

    This Magic Hook allows you to retrieve and populate data about affiliates into a specific field of a Contact or Object record in your Ontraport account.

    To use this hook, you will need to first get your %clickfix_token% and then POST this WebHooks from your Ontraport Campaign.

    https://klikfx.com/api/misc/affiliate-report?

    Parameter Type DESCRIPTION Required
    token= Key Your %clickfix_token%(click to get it). Yes
    &totals[%target_field%]=%value% Destination The %value% you want pushed into the %target_field%. For all available values, see below. Yes
    &conditions[%type%]=value Condition There are two possible %type% : id or product. For further explanation, see below. Yes
    &destObject= Destination Object Default : Contacts (0).
    &destObjectId= Destination Object ID ID of the Object or Contact you wish to get the data into. Yes

    It's important to note that the conditions[id]=[Contact ID] is always required.

    This webhook will calculate some data about affiliates and put it into your destination object. For example, you can get a number and sum of sales into a specific fields of your partners contact and use it in your marketing campaigns or reports.
    Additionally, you can specify multiple values to calculate in the totals variable. For example, this code: &totals[f1234]=sales&totals[f1235]=visits will put a total of sales by this affiliate in the field f1234 and a number of visits in the field f1235 of a contact record.

    Available totals
    Affiliate data
    Parameter DESCRIPTION
    lead Partner leads
    visits Partner visits
    optins Partner leads
    sale A number of partner sales
    owed An amount of commission you owe to a partner
    sales Total sales
    commish --
    refund A number of refunds
    refundtotal A total of refunds
    commish_total --
    product_sales A number of sales by product.
    approved_commission_count A number of approved affiliate sales.
    approved_commission_total A total of approved affiliate sales.
    approved_commission_amount Amount of approved affiliate commission.
    pending_commission_count A number of pending affiliate sales.
    pending_commission_total A total of pending affiliate sales.
    pending_commission_amount Amount of pending affiliate commission.
    Sub-affiliate data

    Sub-affiliates are those affiliates who had been referred by your affiliate.

    Parameter DESCRIPTION
    sub_owed An amount of commission you owe to all sub-affiliates
    sub_visits Sub-affiliates visits
    sub_optins Sub-affiliates leads
    sub_sale A number of sales by sub-affiliates
    sub_sales A total of sales by sub-affiliates
    sub_commish --
    product_sub_sales A number of sales by product.
    Conditions

    A condition for affiliate ID is required and is set in this format: &conditions[id]=[Contact ID].

    A condition for product is optional. It is set in this format: &conditions[product]=[Product ID]. If set, this product condition will affect the following variables:

    • product_sales
    • product_sub_sales
    • approved_commission_count
    • approved_commission_total
    • approved_commission_amount
    • pending_commission_count
    • pending_commission_total
    • pending_commission_amount

    Examples

    https://klikfx.com/api/misc/affiliate-report?token=%clickfix_token%&totals[f1234]=lead&conditions[id]=[Contact ID]&destObjectId=[Contact ID]
    

    Will get the number of leads for a specific contact and push that number to field f1234 in that contact.

    Ontraport Page to PDF

    The PDF Converter Magic Hook is a helpful tool for converting your Ontraport pages into neat PDF files and uploading them into your storage. The URL of the file will be storred in a specified field of a Contact or custom object.

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/generate-upload-pdf?token=%clickfix_token%

    This Hook supports both POST and GET methods, though it's highly recommended to use POST payload, to avoid any problems with your URL encoding.

    Parameter Type DESCRIPTION
    url= string The URL of the webpage that you want to convert to a PDF file.

    Required.
    Ontraport Object parameters
    &object_id= Object ID The Object ID of the object you wish to update with file URL. Default value is 0 (Contacts object).
    &id= ID The ID of the object you wish to update with file URL.

    Required.
    &field= Field ID The ID of the field where the URL of the generated PDF file will be stored.

    Required.
    File parameters
    &name= string A file name to give your PDF. It will replace the [FILENAME] parameter in your upload box path. If no name is provided we will use the page Title (in SEO Parameters) as File Name.

    NB: Both custom and generated filenames will be sanitized (i.e. all spaces replaced with underscore, all special characters replaced with dash) to provide compatibility with storage file system.
    &storage= string The token of the Uploadbox instance to hold your files.

    Required.
    &orientation= string PDF Page orientation. Supports values such as P (Portrait) and L (Landscape). Default orientation is P.
    &size= string PDF Page size. Support values from "A3" to "A6". Default value is "A3".

    NB: Please note that conversion may take a while. Despite this period is very short, it's not recommended to create any campaign actions right after you triggered the webhook. Instead, make a trigger on field update.

    Mark a task as complete

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/complete-task?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &object= ID The ID of the object type to mark a task as complete for. Defaults to 0 for a contact object.

    &id= ID The ID of the contact or object.

    Required.
    &tasktemplate= ID The ID of the task template. To find it go edit the Task Template, your ID will be in the URL.

    Required.
    &outcome= STRING The outcome of the task marked as complete. Must match one of your task outcomes.

    Required.

    This magic hook will find a task for a specific contact or object and mark it as complete.

    String -> QR Code

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/qr?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &object= Object ID The Object ID of the Object onto which you want to Populate the QR Code.0 for Contacts (Default.).
    &id= ID The ID of the Contact or Object.

    Required.
    &field= Field ID The ID of the Field you want to Populate (must be a Long Text Type Field).

    Required.
    &data= String The String you wish to turn into a QR Code. Note that if you wish to set a URL as data, you'll need to encode that URL, except for your Merge Fields. Required.
    &storage= string The token of the Uploadbox instance to hold your files.

    If no Storage is provided, we will return the QR code encoded as a string
    &filename= parameter Set a name for your image.

    Optional.

    3rd Party Integrations

    ClickFunnels -> Ontraport : Log Transactions

    To use this Magic Hook, you will first need to get your %clickfix_token%, ensure that you have given it both ClickFunnels permissions, and then add this WebHook :

    https://klikfx.com/a/h/clickfunnels-purchase/%clickfix_token%

    ...in the webhook section of your Funnel in ClickFunnels, which you’ll find under “Settings” when editing a Funnel.

    Purchases will be logged :

    • Using the exact same product name (make sure product names are identical in ClickFunnels and in Ontraport)
    • Without consideration for currency (so if your Ontraport account is in USD but you sell a 50€ product on ClickFunnels, we’ll log a $50 transaction in Ontraport)
    • If an error occur when logging the transaction a note will be send. The Note will be starting with clickfix_error_clickfunnels.

    The Webhook Screen should look like this in ClickFunnels :

    clickfunnels_newpurchase_webhook_exemple.jpg

    Twilio : Send a SMS/MMS

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/twilio-sms?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &account_sid= Key Your TWILIO account sid (Secret ID). It can be found here.

    Required.
    &auth_token= Key Your TWILIO auth token. It can be found here.

    Required.
    &twilio_number= Phone Number Your TWILIO SMS number.

    Required.
    &send_to= Phone Number SMS Number of the person you want to write to.

    Required.
    &message= String Your Message.

    Required.
    &media= String/Array Media link(s). You can attach one or more images to the message. If your addressee has United States or Canada phone number, they will receive an MMS message, otherwise it will be a regular SMS message with short links to your media. To send multiple links, do so: &media[]=Link1&media[]=Link2 (note the brackets).

    Optional.

    Cancel most recent Open Order for a specific Product

    This Webhook will look up contact id for open orders containing product ID. If two are found, cancel the most recently created one.

    To use this Magic Hook, get your %clickfix_token%, add the permission for this Magic Hook and simply POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/cancel_second_order?token=%clickfix_token%

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &id= ID The ID of the contact : [Contact ID].

    Required.
    &product_id= ID The ID of the product that must be contained in the open order you wish to change.

    Required.

    Change Open Order Partner

    This MagicHook changes or removes a partner from open order.

    To use this Magic Hook, get your %clickfix_token%, add the permission for this Magic Hook and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/change-partner?token=[%YOUR_CLICKFIX_TOKEN%]

    Parameter Type DESCRIPTION
    &contact_id= ID The ID of the contact : [Contact ID].

    Required.
    &product_id= ID The ID of the product that must be contained in the open order you wish to change.

    Required.
    &affiliate_id= ID The ID of a partner you wish to set for an open order. By default (if this parameter is omitted) partner (affiliate) ID will be removed from the open order. You can also pass 0 to remove partner explicitly.

    If this parameter contains valid partner (affiliate) ID it will be set as a partner in this open order.

    Add Product To Open Order

    To use this Magic Hook, get your %clickfix_token%, add the permission for this Magic Hook and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/add-product?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &id= ID The ID of the contact : [Contact ID].

    Required.
    &product_id= ID The ID of the product that must be contained in the open order we wish to change.

    Required.
    &new_product_id= ID The ID of the product that will be added in the open order we wish to change.

    Required.
    &amount= Numeric The new "Next Charge Amount" for that Open Order. You can use 99.95 for cents.

    Optional defaults to 0
    &recurrence= String Optional parameter that changes a recurrency of a subscription. Valid values for this parameter are: daily, weekly, monthly, quarterly, yearly, which will change subscription length to day, week, month, quarter (3 month), and year respectively. This change will take effect after next charge date.

    Swap Open Order Product with Another Product and Price

    To use this Magic Hook, get your %clickfix_token%, add the permission for this Magic Hook and simply POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/swap-subscription?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &id= ID The ID of the contact : [Contact ID].

    Required.
    &product_id= ID The ID of the product that must be contained in the open order we wish to change.

    Required.
    &new_product_id= ID The ID of the product that will now be charged in the open order we wish to change.

    Required.
    &amount= Numeric The new "Next Charge Amount" for that Open Order. You can use 99.95 for cents.

    Required.
    &recurrence= String Optional parameter that changes a recurrency of a subscription. Valid values for this parameter are: daily, weekly, monthly, quarterly, yearly, which will change subscription length to day, week, month, quarter (3 month), and year respectively. This change will take effect after next charge date.

    Note that if two open orders are found containing the same product we will only change the last created.

    Change Default Credit Card to Last Card Added

    This magic hook will look for the last card added by a Contact and set it as default credit card.

    To use this Magic Hook, get your %clickfix_token% and then send a POST payload to this address:
    https://klikfx.com/a/h/change-default-card?

    Required parameters

    Parameter Type Required DESCRIPTION
    token Key yes Your %clickfix_token%(click to get it).
    id int yes ID of the contact

    https://klikfx.com/a/h/change-default-card?token=abcdef&id=12345

    Will look up the Contact with ID 12345, will find the last card he inputed and will set it as default credit card.

    Change next charge date on an open order

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/change-charge-date?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &id= ID The ID of the contact : [Contact ID].

    Required.
    &from= today or order Do we change the date based on today's date (Default.) or based on order date found in the Open Order?
    &product= Product ID The ID of the Product you want to look up in the Contact's Open Orders (if no Product ID is provided, we will change the Last Open Order create for that Contact).
    &timezone= TimeZone Your preferred timezone. You can find it in the “TZ” column by clicking here. If no timezone is specified, we will operate in Standard Time. Not setting a timezone might cause issues where some of your orders might get charged a day in advance because it is already that day in GMT (Standard Time) but not in your timezone.
    &type=
    &offset=
    type and offset combination Pick a type and an offset from the table below.

    Required.
    type offset
    nextday Numeric 1 to 7 (Monday to Sunday)
    nextmonth Numeric from 1 to 31 (if no 31 in that month, set to last day of the month)
    days A number of days in the future
    weeks A number of weeks in the future
    months A number of months in the future
    timestamp UNIX_TIMESTAMP (Set next charge date to be the UNIX Timestamp)

    You can return “next charge date” into a field in your account once the charge date has been changed.

    Parameter Type DESCRIPTION
    &return_object_id= Object ID The Object ID of the object you wish to update.

    Default value is 0 (Contacts object).
    &return_id= ID The ID of the Contact or Object you wish to update.
    &return_field= Field ID The ID of the field where the next charge date will be stored.

    The value return will be a UNIX Timestamp, so it is recomended to use a Date & Time field.

    Examples


    https://klikfx.com/a/h/change-charge-date?
    token=clickfix_token&id=[Contact ID]&type=nextmonth&offset=1
    

    Will move an open order next charge date to the first of the next month from today.

    https://klikfx.com/a/h/change-charge-date?
    token=clickfix_token&id=[Contact ID]&type=days&offset=30&from=order
    

    Add 30days to the next charge date in the order, giving de facto 30days free.


    You Can Also Combine them, so :
    https://klikfx.com/a/h/change-charge-date?
    token=clickfix_token&id=[Contact ID]&type=nextmonth&offset=1
    

    followed by

    https://klikfx.com/a/h/change-charge-date?
    token=clickfix_token&id=[Contact ID]&type=nextday&offset=1&from=order
    

    would push the next charge date to the 1st Monday of the next month.

    Log Transaction

    This magic hook serves to log or charge a transaction into your account.

    To use this Magic Hook, get your %clickfix_token% and then send a GET or POST payload to this address:
    https://klikfx.com/a/h/log-transaction

    Required parameters

    Parameter Type Required DESCRIPTION
    token Key yes Your %clickfix_token%(click to get it).
    products Array yes The array of products you wish to include into a transaction. Array Keys represent the identifiers of products (either names or ID's), and values are configurations. If no product with given name is found, we will create that product for you. See Product configuration)
    email email yes unless contact_id is provided An email to identify your contact. If contact with this email does not exist, a new one will be created.
    contact_id int yes unless email is provided An ID of existing contact.

    Transaction Parameters:
    Enhanced transaction data. All parameters are optional except gateway (which is required under certain conditions).

    Parameter Type DESCRIPTION
    type string Can be either a log or charge. In case of charge, Ontraport will actually try to charge money from your customer, otherwise transaction will just get into a purchase log. Default value is log. Note that log will only work for one off transactions, you can't log a payment plan or a subscription you can only charge it.
    time integer Transaction date represented in seconds since the Unix Epoch (i.e. Timestamp). If not set, current time will be taken.
    timezone string Transaction timezone. Default value is "UTC". This parameter only affects trial_end product parameter.
    order_id integer External order ID of transaction. Useful for integration with other APIs.
    invoice integer Invoice template one's willing to use. If not set, -1 will be used, which means to suppress invoice sending. Click here to view your Ontraport Invoices.
    gateway integer A payment gateway ID. Please note that you have to pass a true gateway ID (which starts from one), not the external gateway ID (which usually consists of six digits). This means, unless you have 100k+ gateways created in your OAP, the true gateway ID is going to be one or two digits. Click here to view your gateways. Required if type is charge.
    cc_id integer Customer credit card ID. If not provided, Ontraport will try to charge default customer card.
    tax integer Identifier of transaction tax (see https://app.ontraport.com/#!/taxes/listAll in your Ontraport account). With this parameter provided, products that have taxable=1 will be taxed.
    custom_data array To provide additional parameters to transaction, pass them to the custom_data as following: &custom_data[FIELDNAME]=[FIELDVALUE]. This data will be merged with previously built transaction data, with the priority of custom data.

    Contact Parameters
    You can pass some contact data together with transaction data. All parameters are optional. Note that those parameters will replace the data you already have.

    Parameter Type DESCRIPTION
    firstname string First name of the contact.
    lastname string Last name of the contact.
    country string An ISO Alpha-2 code of country (i.e. US, BR, FR etc).
    city string Contacts city.
    address string Contacts address.
    address2 string Second line of contacts address.
    zip string Zip code.

    Product configuration

    Product configuration comes in standard HTTP query array. The keys of this array are product identifiers (either ID or name), and values may depend of desired purchase type.

    The simpliest configuration you can provide is products[10]=25, which means it's one-time purchase of product with ID=10, for $25. To adjust your sale in a little bit more sophisticated way, you must provide options in following format:

    products[ID or Name][Option Name]=Option Value

    Available options are:

    Option name Type Comment
    type string Purchase type. Can be either subscription (creates an open order), one_time (one-time purchase), or payment_plan (3 easy payments of $9.99).
    quantity int Amount of product you want to sell.
    price numeric/money If not provided, price will be taken from Ontraport product. Also supports money format, i.e. $16,000.00. Please note that, if you provide zero price, it will still be considered a valid price and won't be replaced by default price.
    taxable int Indicates whether or not this product should be taxed. Please note that, for this parameter to take effect, transaction tax parameter should be provided as well.

    The following options are available if type is subscription or payment_plan.

    Option name Type Comment
    subscription_count int The number of subscriptions. Default is 1. For payment plans, the number of payments. Note that the price should be the charged price every transaction, not the total cost of the product over the payment plan's lifetime.
    subscription_unit string Indicates how often a subscription product or payment plan is charged. Options can be: day, week, month, quarter, year. Default is month.
    subscription_fee numeric/money The cost of any additional fee for a subscription product.
    trial_period_count int Indicates the length of the trial period. Must be used in conjunction with trial_period_unit.
    trial_period_unit string A measurement for trial_period count. Options can be: day, week, month, quarter, year.
    trial_end int A date un UNIX timestamp format. Indicates the end of the trial period. This parameter overrides the trial_period_count and trial_period_unit parameters. If provided, it is considered that a product will be on trial until this date.
    trial_price numeric/money The price of the product during the trial period.
    setup_fee numeric/money The cost of of any one-time set-up fee, if applicable.
    setup_fee_when string Indicates when the setup fee should be applied. Values can be: immediately, after_trial, on_date.
    setup_fee_date int If the value for setup_fee_when is on_date, the date of when the setup fee should be applied in seconds elapsed since the Unix Epoch.
    owner integer The ID of the user controlling the product.
    delay_start integer The number of days to delay the start of a subscription.

    None of product options are required; though one has to provide at least one to get the product into a transaction. Product options can be multiple and provided as joined by ampersand (&).

    Example:
    Let's say we want to sell a treadmill for $1200 and a subscription to a great newsletter about physical exercises for $10 per month.
    We want to include two products: one with ID = 2 and one named Treadmill. First product is subscription, which costs $10 per month. Second one is one-time purchase. Thus, we're sending products this way:

    products[2][price]=$10.00&products[2][type]=subscription&products[Treadmill]=1200
    

    https://klikfx.com/a/h/log-transaction?token=[YOUR TOKEN]&email=customer@example.com&products[Stairmaster]=1200&products[9]=10&gateway=4&order_id=333&firstname=Victoria
    

    Send Recurring Invoices (or not)

    To use this Magic Hook, get your %clickfix_token% and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/recurring-invoice?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &id= ID The ID of the contact : [Contact ID].

    Required.
    &product= Product ID The ID of the Product you want to look up in the Contact's Open Orders (if no Product ID is provided, we will change all the open orders for that contact).
    &toggle= yes or no Will change the "Send an invoice for every recurring payment" setting to either yes(Default.) or no.

    Training

    Examples

    https://klikfx.com/a/h/recurring-invoice?token=%clickfix_token%&id=1234&product=1&toggle=yes
    

    Will look up an Open Order containing the Product with ID 1 for the contact with ID 1234, and will set it to send an Invoice every time the Open Order is charged.

    Update Next Charge Amount On An Open Order

    To use this Magic Hook, get your %clickfix_token%, add the permission for this Magic Hook and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/h/update-order?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it).

    Required.
    &id= ID The ID of the contact : [Contact ID].

    Required.
    &product_id= ID The ID of the product that must be contained in the open order we wish to change the amount for.

    Required.
    &amount= Numeric The new "Next Charge Amount" for that Open Order.

    Note that if two open orders are found containing the same product we will only change the last created.

    Update transaction status

    This magic hook serves to update a transaction in your account.

    To use this Magic Hook, get your %clickfix_token% and then send a GET payload to this address:
    https://klikfx.com/a/h/update-transaction-status

    Required parameters

    Parameter Type Required DESCRIPTION
    token Key yes Your %clickfix_token%(click to get it).
    status string yes The desired status of transaction. Can be one of the following: void,write-off,declined,paid,refunded. Be extra careful with refunded status: it will actually withdraw funds from your account to return it back to customer.

    Transaction Query:
    Those parameters are to find your transaction in OAP.
    NB: Only ONE parameter of the following should present in your request.

    Parameter Type DESCRIPTION
    id integer Transaction ID.
    order_id integer External order ID of transaction.
    contact_id integer Contact ID. Last transaction of this contact will be taken.

    Reporting ♾️

    Report

    This Magic Hook provides a possibility to retrieve a short report of objects and optionally put them into a destination object record.

    To use this Magic Hook, get your %clickfix_token% and then send a GET payload to this address:
    https://klikfx.com/a/h/report?token=[Your Magic Hooks Token]

    Parameters

    Name Type Default Description
    object integer 0 Identifier of object you're willing to get a report for. By default, it's Contacts object (ID 0).
    conditions array [] Criteria of report. Must be given in standard query array, key represents a field and value represents condition. Example: conditions[f1234]=38
    totals array [] Report totals. Must be given in standard query array, values must represent total columns. Note that total columns must be defined in Ontraport Object settings. To get a number of objects, include "qty" in your list. Example: totals[]=f1233&totals[]=qty, totals[]=qty. Also supports total[dest]=source format (see Using multiple destination fields).
    destObject integer 0 Destination object ID. Example: destObject=10002.
    destObjectField string Destination object field. Since destination object ID has default value, providing a field parameter will cause creation or updating of object record in Ontraport. Example: destObjectField=f1233. To fill several fields, one must declare destination fields for each total (see Using multiple destination fields)
    destObjectId integer Destination object record ID. If destObjectField is provided, empty value of this parameter will cause new object record to appear. Otherwise, magic hook will try to update object record with given ID. Example: destObjectId=68.
    groupId integer If you are looking for the SUM of fields accross objects then Ontraport requires you to do a few things. First the field must be set to "Show total at the top". Second you must create a Group of Objects using the same user you have set for your ClickFix API Keys in Ontraport. Third you must add the field as a column. Fourth you must go here and do sort:id and sortdir:desc. That'll let you find the ID of your Group, which you can then use in this parameter. If no groupId is provided then we will default to the All group.
    Report Conditions

    You can define several conditions for your report. They come in a standard query array format:

    conditions[firstname]=Anna&conditions[country]=US
    

    Also, there are several special formats for conditions.

    • Condition Preset: report engine supports several presets for conditions. To use a preset, just pass its name like a regular condition value: conditions[fieldname]=PresetName. For example, conditions[date]=LastMonth. Supported presets are:

      • ThisWeek - a date range between Monday 0:00 and today.
      • ThisMonth - a date range between this month 1st 0:00 and today.
      • ThisYear - a date range between Jan 1st 0:00 and today.
      • LastWeek - last week, from Monday 0:00 to Sunday, 23:59.
      • LastMonth - last month, from 1st 0:00 to last day of last month, 23:59.
      • LastYear - last year, from Jan 1st 0:00 to Dec, 31, 23:59.
      • Last30Days - last 30 days.
      • Last7Days - last 7 days.
    • Date condition: you can define a date condition by setting up a base date and an optional interval to add to it or substract from it.

      • Base date can be set up as now or in dd-mm-yyyy format. Please note that this format is compatible with Ontraport European Dash date format.
        Each part of base date (either day, month, or year part) can be replaced with zeroes. Zeroes mean current day/month/year, i.e. 01-01-0000 will be interpreted as January 1st of the current year.
      • Interval (which we add to or substract from base date) can be set up as one or several amount-unit pairs in this fashion: <+/-><offset><unit:day,week,month,year>. This way, now-2week defines a day 2 weeks ago, and 01-01-2019+1year1day is for Jan 02, 2020.

      Single date condition always means 1 day, from 00:00:00 to 23:59:59. To set up a date range wider than 1 day, see Range below.

    • Range: to define a range, you have to set up begin and end of range in this fashion:
      conditions[f1234][begin]=10&conditions[f1234][end]=50. This will return all records where f1234 is between 10 and 50.
      You can also set only one value for the range: conditions[f1234][end]=50. This will return all records where f1234 is below 50.

    • Date Range
      Each border of range can be a date. To set it up, see Date condition.
      If you set up a date range, please note that both first and last days are included in a range.
      For example, conditions[f1234][begin]=01-01-0000&conditions[f1234][end]=31-03-0000 defines a first quarter of current year.

    • List:
      To define a generic list, simply pass all the list values separated by comma. This way, conditions[f1234]=0,50 will return records with f1234=0 or f1234=50.

    • Empty values:
      There are several empty values supported by report engine:

    Name Declaration Comment
    NULL &conditions[f1234]=NULL A NULL value.
    Empty string &conditions[f1234]= An empty string. Please note that empty string does not require any value following the = character. For instance, condition of two fields, one of which should be empty string, will look like this: conditions[f1234]=&conditions[f1235]=1.
    0 &conditions[f1234]=0 An empty value for numerics.

    Please note that it's necessary to pick a correct empty value for a certain field type. Text fields, when not containing any value, can be either NULL or empty string.

    Lists also support NULL and empty values. Thus, the safest way to check if a text field is empty is &conditions[f1234]=,NULL (note the comma). This means that f1234 will be checked against empty string or NULL value.

    All other values which do not fit the formats above, will be considered as ordinary values. I.e., conditions[firstname]=Anna will return records where "firstname" field is Anna.

    Passing empty conditions or not passing them at all will get all objects in count.

    Report Totals

    All total fields except quantity (qty) must also be defined in Ontraport object administration as totals. When you define custom object numeric field in Field Editor, you can see that Ontraport allows you to pick one of the options:

    • Show total at the top
    • Show average at the top
    • Show nothing.

    Picking "Show total at the top" or "Show average at the top" will result in defining field as total. Thus, this magic hook will be available to return the totals of this field.

    Besides that, you can always get a number of objects which meet your criteria. To do that, pass a keyword qty as field name: totals[]=qty&totals[]=f1234.

    Using multiple destination fields

    It could happen that one needs to update several fields with totals by several columns in one request. Instead of repeating the webhook to fill all destination fields, one can use special syntax for declaring desired totals: totals[Destination Field 1 ID]=qty&totals[Destination Field 2 ID]

    Example:
    Let's say destination object has fields like (f1234) "Quantity" and (f1235) "Total sum". We want to fill them respectively with source object amount and total by column f1236. Thus, totals must be set in this fashion:

    totals[f1234]=qty&totals[f1235]=f1236
    

    Using totals without setting destination fields, like totals[]=qty&totals[]=f1234, will lead to {qty:1,f1234:1200} value in destObjectField field.

    Using multiple destination fields together with destObjectField is deprecated.

    Report Destination object

    This magic hook also supports putting report results into mutable Ontraport object (usually it's Contacts and custom objects). Format of resulting field value depends on totals parameter. For example, we have 20 objects that meet the condition, and sum of f1234 field values of these objects is 2500. If there's only one defined total, destination object will contain only its value, i.e. totals[]=f1234 will cause destination object field contain 2500.

    If you pass several totals like totals[]=qty&totals[]=f1234, destination object field will contain standard JSON-encoded object: {"f1234":2500,"qty":20}.

    Request

    GET https://klikfx.com/a/h/report?token=[Your Magic Hooks Token]&object=10004&conditions[firstname]=Anna&totals[]=qty

    Response
    {"qty":20}
    

    Tag Count

    This Magic Hook calculates a number of objects having a specific tag.

    To use this Magic Hook, get your %clickfix_token% and then send a GET payload to this address:
    https://klikfx.com/a/h/tag-count?token=[Your Magic Hooks Token]

    Parameters

    Name Type Default Description
    object integer 0 Identifier of object you're willing to get a report for. By default, it's Contacts object (ID 0).
    tag_id integer Identifier of tag.
    tag_name integer Name of tag. NB: Either tag_id or tag_name is required. If both are provided, tag_id will be prioritized.
    destObject integer 0 Destination object ID. Example: destObject=10002. By default it's Contacts (0).
    destObjectField string Destination object field. Since destination object ID has default value, providing a field parameter will cause creation or updating of object record in Ontraport. Example: destObjectField=f1233.
    destObjectId integer Destination object record ID. If destObjectField is provided, empty value of this parameter will cause new object record to appear. Otherwise, magic hook will try to update object record with given ID. Example: destObjectId=68.

    GET https://klikfx.com/a/h/tag-count?token=[Your Magic Hooks Token]&object=10004&tag_name=MyTag&destObjectField=fxxx&destObjectId=1

    Integrations ➰/💡/♾️

    Stripe

    MUST READ

    
    This feature will allow you to take any payment method offered by Stripe, for both single and recurring payments (when available) in place of a credit card. It is a four step process for your customers.
    
    1. First, we need to know what to charge your customers for. So you can either

      1. You send your customers to a regular Ontraport payment form, except on this page you will be using the Dummy Gateway, and the credit card information will be pre-filled with the test card and hidden, ensuring that a transaction is created in Ontraport every time this form is submitted.

      2. You generate a transaction in Ontraport using our Log Transaction magichook to generate an invoice

      3. You use an existing invoice in an unrelated contact to build the transaction (in this scenario leave the "Set Transaction Statuts" field to empty in the module). This is by far the easiest method.

    2. Once you have an invoice, you must send your contact to a page where the URL looks like this : pay.mysite.com/page?contact_uid=[Unique ID]&invoice_id=[Last Invoice #] (or if he is cookied, use Merge Field data)

    3. On this page, you will have the shortcode [Stripe token=%Your Token% contact=[Unique ID] invoice=[invoice_id]] which will load data from the invoice and the contact to generate a payment element

    4. From there on, the initial transaction will be set to the status chosen within your module, and the client will be able to pay in one of the chosen method

    5. Once that is done, we will :

      1. Update the status field to either success or failure
      2. store a Source Token (if available for the chosen method) in the chosen field within your Ontraport Account, and you will be able to charge that customer using that Stripe Source Token
      3. update the transaction to success if it was generated within the paying contact
      4. Otherwise we will log the transaction inside that contact

    Step 1 : Generate a Stripe Secret Key

    1. Log into your Stripe account and click this link : https://dashboard.stripe.com/account/apikeys/create

    2. Set the permissions as follow :
      Sources : Read & Write
      SetupIntents: Read & Write
      PaymentIntents: Read & Write
      PaymentMethods: Read & Write

    3. Click "Create Key"

    4. Now that your key is created you can click on "reveal live key token" to get your Stripe Secret Key

    Step 2 : Start a new Stripe Module

    Make sure you have a created a Stripe Module here to get your Token : https://app.clickfix.io/stripe/.

    Note that in your Stripe Module, you should only select the payment methods you have available here : https://dashboard.stripe.com/settings/payment_methods

    Step 3 : Add the Stripe Webhooks

    In order to let Stripe know if your transactions go through you must :

    1. Log into Stripe and go to this link : https://dashboard.stripe.com/account/webhooks

    2. Click “Add endpoint”

    3. Copy this url in the “Endpoint URL” field :

    https://klikfx.com/a/sf/stripe?token=%your token%
    

    (your token can be found at the bottom of your module within the ClickFix app)

    1. Select “Select events to listen to” and check all the following:

      • payment_intent.succeeded
      • payment_intent.payment_failed
      • setup_intent.setup_failed
      • setup_intent.succeeded
    2. Click “Add endpoint”.

    Step 4 : Payment Module

    Within your ClickFix module you will find a shortcode with a token like this :

    [Stripe token=%your_token% contact=[Unique ID] invoice=[Last Invoice #]]
    

    Add this somewhere on your page and when a contact visits the page they will see a Stripe Payment Form. Note that if you have set the "Set Status" field within your module to say "Void", then loading the shortcode will void the transaction.

    Stripe has its styling options:

    • button-css="css.." - Styling for the button
    • button-css:hover= - Button style on hover
    • button-css:active= - Button style on active state
    • error-css= - Styling for error text
    • error-css:hover= - Error text style on hover

    Those support full CSS.

    Step 5 : Create a Stripe Automation

    Each time you want to charge a customer via a saved payment method, you have to call this webhook:

    https://klikfx.com/a/stripe/%your token%/charge?unique_id=[Unique ID]&invoice_id=[Last Invoice #]&intent_id=[Payment Source Field]
    

    This webhook will do then simply charge the source using the data found in the invoice (which will be voided meanwhile) and we will then update the Transaction Status Field with either "success" or "failure".

    Prefilling Dummy Gateway Credit Card Fields

    [FillField payment_number with 4111111111111111]
    [FillField payment_expire_month with 12]
    [FillField payment_expire_year with 2042]
    [FillField payment_code with 123]

    Ontraport -> ProfitWell ➰/💡/♾️

    To learn more about how to use ProfitWell, which provides free subscription metrics to help identify opportunities, reduce churn, optimize pricing, and grow your subscription business, visit their website at https://www.profitwell.com/

    Our integration will synchronize your past open orders and payment plans, up to the current date, to give you an accurate churn rate and Monthly Recurring Revenue (MRR).

    For more information on setting up this feature, check out this tutorial : https://youtu.be/UfKCQsrN6w8

    Where to find my key

    Capture d’écran 2021-02-25 131148.png

    Zoom -> Ontraport ➰/💡/♾️

    Our Zoom integration is a set of Webhooks that will let you create new meetings or cancel them.

    Adding and Removing the integration

    To add the integration, go to https://app.clickfix.io/zoom/ , pick an Ontraport key, give it a name and submit. When that is done you can then click on “Perfect! Now you have to authorize ClickFix in your Zoom. Click here” , approve the connection and you are done. You can now use your zoom token to generate and cancel meetings.

    Note that :

    1. Our integration requires only one Zoom scope : "View and manage your meetings /meeting:write"
    2. Removing the integration from ClickFix will break the connection, all your zoom data related to this integration will be erased, and you will need to reconnect to use the integration again

    To remove the integration, go to https://app.clickfix.io/zoom/ and delete your module. You can also erase it here from your zoom dashboard : https://marketplace.zoom.us/user/dashboard/installed-apps , click on ClickFix Zoom Integration, Manage app, Disable this app

    Create a new meeting

    The New meeting Magic Hook is a helpful tool for creating new meetings within Zoom.

    To use this Magic Hook, Create a module here to grab your token and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/zoom/new_meeting?token=%clickfix_token%

    Parameter Type DESCRIPTION
    guest= string The email of the guest of the new meeting.

    Required.
    guest_firstname= string The firstname of the guest of the new meeting.

    Required.
    guest_lastname= string The lastname of the guest of the new meeting.
    email_notification= Boolean 1 (true) / 0 (false), Let zoom send the guest a notification or not.
    (default=0)
    &host= string The email of the host of the new meeting.

    Required.
    &date= Ontraport Merge Field The starting date for your new meeting. Need to be in UNIX Timestamp.

    You need to have the zoom account and the ontraport account in the same timezone.

    Required.
    &duration= Numeric The meeting's scheduled duration, in minutes.

    Required.
    &default_timezone= TimeZone Your default timezone to fall back to. This must be your Ontraport account timezone. You can find it in the “TZ” column by clicking here.

    Required.
    &timezone= Ontraport Merge Field The client timezone in Ontraport. Use the [Timezone] merge field.
    &agenda= string The meeting's agenda.
    Max 2000 chars.
    &topic= string The meeting's topic.
    Max 200 chars.
    &approval_type= integer Enable meeting registration approval.
    0 - Automatically approve registration.
    1 - Manually approve registration.
    2 - No registration required.
    (default=2).

    You can return the URL of the meeting and the meeting ID to ontraport by adding these parameters :

    Parameter Type DESCRIPTION
    &return_object_id= Object ID The Object ID of the object you wish to update with the meeting URL or ID.
    Default value is 0 (Contacts object).
    &return_id= ID The ID of the Contact or Object you wish to update with the meeting URL or ID.
    &return_field_join_url = Field ID The ID of the field where the URL of the new meeting will be stored.
    &return_field_meeting_id= Field ID The ID of the field where the ID of the new meeting will be stored.

    This ID is required if you want to use the Cancel a meeting webhook.

    Cancel a meeting

    The Cancel meeting Magic Hook will allow you yo cancel a meeting in zoom.

    To use this Magic Hook, Create a module here to grab your token and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/zoom/cancel_meeting?token=%clickfix_token%

    Parameter Type DESCRIPTION
    meeting_id= ID The ID of the meeting you want to cancel.

    This need to be returned with the webhook Create a new meeting.

    ChatGPT -> Ontraport ➰/💡/♾️

    This document outlines the steps required to integrate ChatGPT with OpenAI API to enable users to send queries and receive responses in a specific objectid/id combo.

    New magic hook route :

    https://klikfx.com/a/h/chatgpt?

    PARAMETER TYPE DESCRIPTION
    token= Key Your ClickFix Token (click to get it).

    Required.
    &key= Key Your OpenAI API Key, available here.

    Required.
    &object_id= Object ID The Object ID of the Object onto which you want to Populate the Response.
    0 for Contacts (Default).
    &id= ID The ID of the Contact or Object.

    Required.
    &field= Field ID The ID of the Field you want to Populate
    (must be a Long Text Type Field).

    Required.
    &prompt= String Your Prompt.

    Required.
    &model= string The OpenAI Model to use. 
    (Defaults to text-davinci-003 ).
    &best_of= numeric Will generate multiple completions and return the best one. Will consume tokens very quickly.
    (Defaults to 1.).
    &max_tokens= numeric The maximum number of tokens to generate in the completion.

    The token count of your prompt plus max_tokens cannot exceed the model's context length.

    Most models have a context length of 2048 tokens (except for the newest models, which support 4096).
    (Defaults to 16.).
    &temperature= numeric What sampling temperature to use, between 0 and 2.

    Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

    We generally recommend altering this or top_p but not both.
    (Defaults to 1.).
    &top_p= numeric An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass.

    So 0.1 means only the tokens comprising the top 10% probability mass are considered.

    We generally recommend altering this or temperature but not both.
    (Defaults to 1.).

    NB: If there is an error with the ChatGPT response it will fill your &field= with chatgpt_returned_error, so you can use this on automation!

    Completion Models we support listed by strength. Those models only require a simple prompt as query:

    Model Name Description Family
    text-davinci-003 Can do any language task with better quality, longer output, and consistent instruction-following than the curie, babbage, or ada models. Also supports inserting completions within text. GPT-3.5
    text-davinci-002 Similar capabilities to text-davinci-003 but trained with supervised fine-tuning instead of reinforcement learning GPT-3.5
    text-curie-001 Very capable, faster and lower cost than Davinci. GPT-3
    text-babbage-001 Capable of straightforward tasks, very fast, and lower cost. GPT-3
    text-ada-001 Capable of very simple tasks, usually the fastest model in the GPT-3 series, and lowest cost. GPT-3

    Chat Models we support listed by strength. Those models require you to build a prompt using this format :

    [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Who won the world series in 2020?"},
    {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
    {"role": "user", "content": "Where was it played?"}
    ]

    Model Name Description Family
    gpt-3.5-turbo Most capable GPT-3.5 model and optimized for chat at 1/10th the cost of text-davinci-003. Will be updated with our latest model iteration. GPT-3.5
    gpt-3.5-turbo-0613 Snapshot of gpt-3.5-turbo from June 13th 2023 with function calling data. Unlike gpt-3.5-turbo, this model will not receive updates, and will be deprecated 3 months after a new version is released. GPT-3.5
    gpt-3.5-turbo-16k Same capabilities as the standard gpt-3.5-turbo model but with 4 times the context. GPT-3.5
    gpt-3.5-turbo-16k-0613 Snapshot of gpt-3.5-turbo-16k from June 13th 2023. Unlike gpt-3.5-turbo-16k, this model will not receive updates, and will be deprecated 3 months after a new version is released. GPT-3.5
    gpt-4 More capable than any GPT-3.5 model, able to do more complex tasks, and optimized for chat. Will be updated with our latest model iteration. GPT-4
    gpt-4-0613 Snapshot of gpt-4 from March 14th 2023. Unlike gpt-4, this model will not receive updates, and will be deprecated 3 months after a new version is released. GPT-4
    gpt-4-32k Same capabilities as the base gpt-4 mode but with 4x the context length. Will be updated with our latest model iteration. GPT-4
    gpt-4-32k-0613 Snapshot of gpt-4-32 from March 14th 2023. Unlike gpt-4-32k, this model will not receive updates, and will be deprecated 3 months after a new version is released. GPT-4

    Shopify -> Ontraport ➰/💡/♾️

    This integration will :

    1. Send every transaction from your Shopify Store into your Ontraport account
    2. Create a product if not found by name
    3. Create a tax if not found by name
    4. Send all customer data into Ontraport (cellphones go into sms_number and other types of phone will go into Office Phone)
    5. Tag the contact Shopify_ClickFix

    To start the synchronization :

    Step 1 : Add your Ontraport API keys here if not done yet : link

    Step 2 : Grab your Shopify Token

    2.a Hit Settings (bottom left) => Apps and sales channels => Develop app => Allow => Allow

    2.b Create an app => Enter any name => Configure admin api scope => Search for “read_orders” and check it => Hit save

    2.c API Credential => Install app => Instal => Reveal Token Once => Copy your token


    Then go to http://app.clickfix.io/shopify

    and Past it into a new clickfix module

    Select your ontraport key,

    And you can select a text field in the Optin Data field to send optin data to. (optional)
    Clickfix will send :

    • true if the buyer agrees with marketing email,
    • and false if he doesn’t.

    That’s it! You are now synchronized

    Examples

    Vidéo Exemple

    CrowdRise -> Ontraport ♾️

    This integration will allow you to seamlessly synchronize your CrowdRise data with your Ontraport account, giving you access to all of Ontraport's powerful features and functionality.

    Setting up the integration can be complex and will require the assistance of a ClickFix agent. Fortunately, this service is provided free of charge.

    To learn more and get started, please Contact us.

    Manage Inventory ➰/💡/♾️

    Here is how it works :
    Video Explanation

    #1 : Create a new contact owner field in Ontraport's field editor here.
    #2 Create a module in ClickFix and select the newly created field as the target field.
    #3 Grab the [Merge] shortcode provided in the inventory module.

    And voila, you now can :

    • update the contact owner field when someone purchases a product
    • use the ifvar shortcode to show/hide your order form based on inventory left

    ClickFix Apps ➰/💡/♾️

    ClickFix Apps allow you to display on a page (Ontraport Page or any page where you can insert JavaScript really) data from any Ontraport Object, along with data from a set of Children Objects.

    Understanding this feature

    The advanced feature we offer is known as our "App Builder" and it requires some understanding of Custom Objects in Ontraport.

    If you're not familiar with this concept, we recommend checking out our app building guide at https://eg.clickfix.io/appbuilder.

    To give you an example of how to use this feature, let's say you want to allow a contact to view their tickets for different events.

    Here's a summary of the steps you'll need to take:

    • Step 0 : Make sure you're on a PRO ClickFix account, your domain name is registered with us and we have your API keys.


    • Step 1 : Create a custom field in Ontraport to store a secret ClickFix Token, this field will be used as the ClickFix Unique ID (a text field is fine, unique or not is up to you, just don't make it required). In our example, this field would be in the Contact Object.


    • Step 2 : Create a new Token Module in ClickFix https://app.clickfix.io/clickfixapps/, selecting Contacts and your newly created field


    • Step 3 : Generate a ClickFix Unique ID for this individual contact through the webhook found below under "Generating a Token".


    • Step 4 : Create a One-to-Many Relationship in Ontraport to tie the contact to their tickets, and create a loop in ClickFix around that relationship. To do this, go to the View/Edit of your newly created Token Module, and go to "Manage Relation Lists" ("Filtered Lists" are used to display data that is NOT tied through a relationship, such as a list of events or a client list)


    • Step 5 : And that's it! Now, by using the newly created ClickFix Unique ID, you can display contact data and their different tickets anywhere you want. Repeat this process for each object / relationship.

    The Ontraport part is really quite simple with one required webhook to Generate a ClickFixUID, and most of your time will be spent working on your Ontraport Pages.

    The best way to learn how to use this feature is to check out our demos at https://demo.clickfix.io/, find one that matches what you're trying to build and examine the source code to see how it was done and you can simply copy paste that.

    And as always, in case of doubt, contact Support!



    • Note : In this specific case, if you wanted to display specific data about a ticket on a different page you would either add this data to the URL from the previous page, or add a ClickFix UID to your tickets so you can get to the data this way

    ClickFix Apps Webhooks

    Generate ClickFix UID

    To use this Magic Hook, get your %clickfix_token%,Then view/edit the object and at the bottom of the page you can find your token and then POST this WebHook from your Ontraport Campaign :

    https://klikfx.com/a/u/generate?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it) Then view/edit the object and at the bottom of the page you can find your token.

    Required.
    &id= ID The ID of the contact or object.

    Required.
    &renew= ID This determines how the Magic Hook will react if the contact / object already has a ClickFix UID. renew=0 will prevent replacing the UID while renew=1 will update it. You can force a new UID using renew=99 but do check first within a campaign condition if the UID field is empty or not before using 99.

    This magic hook will create a new ClickFix UID for the contact/object targeted.

    ClickFix Apps Shortcodes

    [Merge]

    [Merge %clickfix_unique_id% %fieldid% var=%$a_variable_name% %format%]

    Attribute Type Description
    %clickfix_unique_id% TOKEN The ClickFix Unique ID of the Object you want to display data for Value to look for to store. Can come from three different places (see below).

    Required.
    URL PARAMETER Will lookup your url paramater in the URL and grab it as ClickFix Unique ID. Note that the url parameter needs to start with uid (uidcontact=[ClickFixUID] for example).
    VARIABLE Merge shortcodes are dynamic, and you can provide the ClickFix Unique ID using a Variable $var.
    STRING You can merge the ClickFix Unique ID directly into the page via an Ontraport Merge Field on a Membership Site for example.
    %$a_variable_name% String A name for the Variable the value will be stored in.
    %format% String In addtion you can add specific format code.

    (See Below)
    date_format= Parameter date field format : long, abb, ss, es, ed, dayname, unix, udayname. You can find them Here
    long Will display Long date.
    abb Will display Short date.
    ss Will display Standard Slash date.
    sd Will display Standard Dash date.
    es Will display European Slash date.
    ed Will display European Dash date.
    dayname Will display Day of the week date.
    unix Will display Unix Time date.
    checkbox_format_checked For Checkbox field format.
    checkbox_format_unchecked For Checkbox field format.

    By default, we will hide the Merge shortcodes until we have the data to display it. You can add loader=dots to your shortcode to display horizontal dots instead.

    [MergeLoop]

    [MergeLoop %clickfix_unique_id% %Loop_Name%]
    %Loop Something%
    [/MergeLoop]

    Attribute Type Description
    %clickfix_unique_id% Token See [Merge] documentation above.

    Required.
    %Loop_Name% String The name you chose for your loop in ClickFix.

    Required.
    %Loop Something% Shortcodes The MergeLoop Shortcode will let you pick what data to display. But you need to insert WHERE to display the data, via either LoopBlock, LoopElement, LoopColumn or LoopGrid. See below for more information.

    Required.

    [MergeLoop #%dynamic_block_id% *dynamic]
    %Loop Something%
    [/MergeLoop]
    This Merge will use an Ontraport Dynamic Block to get the data for a Clickfix loop.

    You will need merge field in the dynamic block (ex : [Block//Firstname]) to be able to use it and use the same format on the new LoopBlock/Column/Element.

    Attribute Type Description
    %dynamic_block_id% Value The ID of the Ontraport Dynamic Block you want to get the data for the clickfix Loop.

    Required.
    %Loop Something% Shortcodes The MergeLoop Shortcode will let you pick what data to display. But you need to insert WHERE to display the data, via either LoopBlock, LoopElement, LoopColumn or LoopGrid. See below for more information.

    Required.

    [LoopGrid]

    [MergeLoop]
    [LoopGrid %id_of_column% in #%block_id% grid=column_number name=%Loop_Name% loader=type,color1,color2]
    [/MergeLoop]

    Attribute Type Description
    %id_of_column% Value The ID of the column you want to Loop.

    Required.
    %block_id% Value Because Columns can have the same id if they are in different Blocks, you must target a specific Column by adding this to your Shortcode.

    Required.
    column_number Numeric The number of columns in your Grid. All columns must be the same size for this to work properly.

    Required.
    %Loop_Name% Value A Name for your loop, to be used in SortLoop and FilterLoop.

    Required.
    type String We have 7 different loader styles: box, line, circle, circle-2, wave, circle-switch, bouncy-box

    Required if you use the loader.
    color1 HEX The color you want for your loader. Use #000000 for Black for example.

    Required if you use the loader.
    color2 HEX The color you want for your loader's background. Use #000000 for Black for example.

    Required if you use the loader.

    [LoopBlock]

    [MergeLoop]
    [LoopBlock #%block_id% name=%Loop_Name% loader=type,color1,color2]
    [/MergeLoop]

    Attribute Type Description
    %block_id% Value The ID of the block you want to Loop.

    Required.
    %Loop_Name% Value A Name for your loop, to be used in SortLoop and FilterLoop.

    Required.
    type String We have 7 different loader styles: box, line, circle, circle-2, wave, circle-switch, bouncy-box

    Required if you use the loader.
    color1 HEX The color you want for your loader. Use #000000 for Black for example.

    Required if you use the loader.
    color2 HEX The color you want for your loader's background. Use #000000 for Black for example.

    Required if you use the loader.

    [LoopColumn]

    [MergeLoop]
    [LoopColumn %id_of_column% in #%block_id% name=%Loop_Name% loader=type,color1,color2]
    [/MergeLoop]

    Attribute Type Description
    %id_of_column% Value The ID of the column you want to Loop.

    Required.
    %block_id% Value Because Columns can have the same id if they are in different Blocks, you must target a specific Column by adding this to your Shortcode.

    Required.
    %Loop_Name% Value A Name for your loop, to be used in SortLoop and FilterLoop.

    Required.
    type String We have 7 different loader styles: box, line, circle, circle-2, wave, circle-switch, bouncy-box

    Required if you use the loader.
    color1 HEX The color you want for your loader. Use #000000 for Black for example.

    Required if you use the loader.
    color2 HEX The color you want for your loader's background. Use #000000 for Black for example.

    Required if you use the loader.

    [LoopElement]

    [MergeLoop]
    [LoopElement %id_of_element%in #%block_id% name=%Loop_Name% loader=type,color1,color2]
    [/MergeLoop]

    Attribute Type Description
    %id_of_element% ID The id of the Element you want to Loop.

    Required.
    %block_id% Value Because Elements can have the same id if they are in different Blocks, you must target a specific Element by adding this to your Shortcode.

    Required.
    %Loop_Name% Value A Name for your loop, to be used in SortLoop and FilterLoop.

    Required.
    type String We have 7 different loader styles: box, line, circle, circle-2, wave, circle-switch, bouncy-box

    Required if you use the loader.
    color1 HEX The color you want for your loader. Use #000000 for Black for example.

    Required if you use the loader.
    color2 HEX The color you want for your loader's background. Use #000000 for Black for example.

    Required if you use the loader.

    [SortLoop]

    This happens after a MergeLoop is loaded, or could be set as a parameter on mergeloop load, basically the shortcode could be triggered by :

    • an anchor click
    • when a merge loop loads

    Also, your sort parameters can be dynamic based off Variables set in Anchors (to learn more read the [IfAnchor] documentation).

    [SortLoop loop=%Loop_Name% sort=$direction:$parameter,$direction2:$parameter2]

    Attribute Type Description
    %Loop_Name% Value The Name of the Loop you want to sort.

    Required.
    $direction Value up or down. The direction in which you want to sort your loop.

    Required.
    $parameter Value The field you want to use to sort your loop .

    Required.
    ignorecase= Parameter ignorecase=yes or no.

    Yes, default, will sort ignoring cases.

    No, will take case into account.

    Optional

    You can add multiple direction:parameter by separating them with a comma ','.

    Examples

    That’s how I’ll use this :

    [MergeLoop uidcontact ChildrenLoop]
    [LoopBlock #xxx]
    [/MergeLoop]

    [IfAnchor #sort.$direction.$parameter]
    [SortLoop loop=ChildrenLoop block=#xxx sort=$direction:$parameter,up:firstname]
    [/IfAnchor]

    With 'sort' in this case sorting if we click
    #sort.up.fxxx

    Would first sort by fxxx, ascending. And second by firstname ascending again.

    So buttons on page like :
    #sort.up.fxxx ascend fxxx
    #sort.down.fyyy decend fyyy

    [IfAnchor #sort.by.date.$direction]
    [SortLoop loop=UpcomingSalesCalls sort=f1738:$direction]
    [/IfAnchor]

    Will sort the loop UpcomingSalesCalls by the date=f1738 and $direction= up or down

    So buttons on page like :
    #sort.by.date.up
    #sort.by.date.down

    [FilterLoop]

    This happens after a MergeLoop is loaded, or could be set as a parameter on mergeloop load, basically the shortcode could be triggered by :

    • an anchor click
    • when a merge loop loads

    Also, your filter parameters can be dynamic based off Variables set in Anchors (to learn more read the [IfAnchor] documentation).

    It will show only the objetcs that match the filtering criterias. Note that if you display a lot of objects on the page you should use Pagination to speed things up for your users.

    [FilterLoop loop=%Loop_Name% type=$type field=$parameter,fxxx value=$value reset=yes/no/$param]

    Attribute Type Description
    %Loop_Name% Value The Name of the Loop you want to filter.

    Required.
    $type Value $type :is (default); not; contains; more; moreOrEqual; less; lessOrEqual. If you would like to make the search case insensitive, the add i in front of your type. So iis; inot; icontains
    field= Value The field(s) you want to check to filter your loop .

    Required.
    value= String string or 'a string' or "a string" .

    Required.
    reset= Value The reset parameter. reset=yes (default) <= Will clear all filtering and THEN do its thing; reset=no <= Will leave the current filtering as is (this would be used like in an ecommerce shop for example to filter out products).

    Note that you could do this to RESET a filter

    [FilterLoop loop=%Loop_Name% reset=yes]

    Sometimes you may want to search accross multiple fields, which you can do three ways :

    field=%field_1%,%field_2% value=%value%]

    Will look if any of the fields contains the value.

    field=%field_1%,%field_2% value=%value_1%,%value_2%]

    Will look if field 1 matches value 1 OR if field 2 matches value 2.

    field=%field_1%,%field_2% value=%value_1%,%value_2% multifield-operator=and]

    Will look if field 1 matches value 1 AND if field 2 matches value 2.

    Examples

    So in the case of ecommerce it's like this :

    we have a checkbox for red, black color and another for sizes.

    I click a size (filter:sizefield contains :M: for example)

    [FilterLoop loop=ecormerceloop type=contains field=sizefield dir=filter value=:M: reset=yes]

    So I only see M products (others are filtered out).
    Now I click "black" and it filters out everything that's not black. When I click black again, different

    [FilterLoop loop=ecormerceloop type=contains field=color value=black reset=yes]

    With this we can also basically out of the box do :

    • add any field

    • do

    [Calc $search=fieldid]

    • and then

    [IfAnchor #search.field]
    [FilterLoop loop=%Loop_Name% field=firstname value=$search reset=yes]
    [/IfAnchor]

    Building a search box for the firstname

    [IfEmptyLoop]

    [IfEmptyLoop %loop_name%][/IfEmptyLoop]

    Will execute the Shortcodes it contains if a loop loads up without any object.

    Use this to display an error message for example, or to hide the blocks that contain the empty loop.

    Caching Your Data

    All of the above involves one bottleneck : we need to get the data from Ontraport every time.

    The main downside is a relative slowness : Since we need to get your request, get the data from Ontraport and then send it back to you, it will take a few seconds for your data to render on the page, especially if you need to display a lot of objects (more than 50 starts to slow things down a bit, and if you get into the 200-500 range you definitely need caching).

    Also, in many cases the Data will not change that much over say a day, but it might be accessed 200 times during that one day, so it doesn't make sense to ask Ontraport for that data every time.

    In order to solve this, we have introduced Caching.

    The caching feature is a great way to improve the performance of your application by reducing the number of requests to Ontraport. It works by storing a copy of the data in a secure file, which can be accessed quickly and easily.

    To use this feature :

    • You'll first need to check the "Cached" box in the App Builder or Loop that you want to cache. This will enable caching for that specific element.

    • Next, you'll need to set up a webhook within a campaign that will trigger when the data that you want to display on the page is updated. This webhook will update the cached data for that specific contact and loop.

    For example :
    If you want to display a contact's tickets and show the Ticket Status and Event Date from the Event Object, you would set up a campaign that triggers when the "Ticket Status" is updated.
    The webhook would then update the Ticket Loop for that specific contact using their ClickFix UID and the name of the loop.

    From that point forward, when the page is visited, the data will be retrieved from the cache instead of Ontraport, which will significantly increase the speed at which the page loads.

    It's important to note that you don't need to change anything on the page itself and if you set Cached as "On" in your App Builder or Loop, you don't need to do anything but visit the page once to generate the first cache. Subsequent re-caching will be handled by your campaign.

    Individual Object Caching

    This is used to Cache data that will be used in a [Merge %ClickFixUID% %field_id%] Shortcode, so it pertains to an Invididual Object.

    Add this link as destination URL :

    https://klikfx.com/api/purls/update-cache?

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it) Then view/edit the object and at the bottom of the page you can find your token.

    Required.
    &id= ID The ID of the contact or object.

    Required.

    Relational Loops Caching

    This is used to Cache data that will be used in a [MergeLoop %ClickFixUID% %loop_name%] that was created as a Relational Loop, meaning a Loop where the Parent Object is connected to its Children Objects.

    Add this link as destination URL :

    https://klikfx.com/api/purls/update-cache?

    Parameters:

    Parameter Type DESCRIPTION
    token= Key Your %clickfix_token%(click to get it) Then view/edit the object and at the bottom of the page you can find your token.

    Required.
    &id= ID The ID of the parent contact or object.

    Required.
    &name= string The name of your Loop, as set in user interface.
    Required.
    &child_id= integer The ID of the particular object you wish to update. If not provided, a whole list of relation objects will be updated. Providing it will make the Cache generation much, much faster.

    Filtered Loops Caching

    This is used to Cache data that will be used in a [MergeLoop %ClickFixUID% %loop_name%] that was created as a Filtered Loop, meaning a Loop where Children Objects are not connected to anything or anybody in particular, but are instead just a list of objects meeting a certain condition.

    Add this link (with the proper Merge Field for your ClickFixUID) as destination URL :

    https://klikfx.com/api/purls/update-cache?

    Parameters:

    Parameter Type DESCRIPTION
    &token= Key Your %clickfix_token%(click to get it) Then view/edit the object and at the bottom of the page you can find your token.

    Required.
    &name= string The name of your Loop, as set in user interface.
    Required.
    &child_id= integer The ID of the particular object you wish to update. If not provided, a the whole filtered list will be updated. Providing it will make the Cache generation much, much faster.

    Other Features ➰/💡/♾️

    Consultant Toolkit ♾️

    Our Consultant Toolkit is a special section on app.clickfix.io website to help you easily perform some unusual Ontraport manipulations.

    Create Fields from a csv file

    In our Consultant Toolkit, under Create Fields from a csv file you will find a form.

    Step 1 : Pick the Ontraport Account / Key you want to use

    Step 2 : Pick the object for which you want to add the fields

    Step 3 : Upload your file

    Helper: Import fields form

    The "Import CSV File" box allows you to upload a CSV file with your fields configuration.

    Each line of this file describes a single field.

    Note that a column name is required for that CSV file.

    Your importable file may contain following columns:

    Column Type / Values Comment
    alias string A name of a field. Required.
    type check, country, fulldate, list, longtext, numeric, price, phone, state, drop, text, email, sms, address A type of a field. Default is text.
    required 0,1 Whether a field is required field. Default is 0 (not required).
    unique 0,1 Whether a field is unique field. Default is 0 (not unique).
    section_name string A name of section this field belongs to. If section does not exist, a new one will be created. Default value is Imported Fields.
    column 0,1,2 An index of column this field belongs to, starting from 0 (i.e. 0 is first column, 2 is third column).
    options string Options are only valid for drop and list field types. For those fields, options are semicolon-separated list of string values. Example: Red;Blue;Green or Dog;Cat;Parakeet;Fish

    After you submit the form, you will be offered to download a report file in CSV format. Said report contains 3 columns:

    Column Description
    name Name of the field (i.e. Alias)
    field_id Identifier of newly created field (only if creation was successful).
    comment Error description (only if creation wasn't successful).

    Please note that import process does not stop after first error. Your whole list will be processed.

    Import Any Object

    In our Consultant Toolkit, under Import Any Object you will find a form.

    Step 1 : Pick the Ontraport Account / Key you want to use

    Step 2 : Pick the object for which you want to add the fields

    Step 3 : Upload Your File



    Our “Import Any Object” feature can be used to import Emails.
    Please model this csv file : CSV Template

    Export Fields to a csv file

    In our Consultant Toolkit, under Export Fields to a csv file you will find a form.

    Step 1 : Pick the Ontraport Account / Key you want to use

    Step 2 : Pick the object for which you want to export the fields

    Helper: Export fields form

    After submitting the form, you'll be offered to download an export CSV file. It will contain your object field data, each row represents one field. A file is organized into following columns:

    Column Type / Values Comment
    section_name string A name of section this field belongs to.
    column 0,1,2 An index of column this field belongs to, starting from 0 (i.e. 0 is first column, 2 is third column).
    alias string A name of a field.
    type check, country, fulldate, list, longtext, numeric, price, phone, state, drop, text, email, sms, address or related_data A type of a field. Please note that related_data represents custom merge fields and is not an importable type of field.
    required 0,1 Whether a field is required field.
    unique 0,1 Whether a field is unique field.
    options string Options are only valid for drop and list field types. For those fields, options are semicolon-separated list of string values.

    Create Messages

    In our Consultant Toolkit, under Create Messages you will find a form.

    Step 1 : Pick the Ontraport Account / Key you want to use

    Step 2 : Choose if the message you want to create is transactional or not

    Step 3 : Choose the message type

    Step 4 : Enter the Subject Template and import the Message Body Template and CSV file




    This feature can be used if you want to create many emails based off ONE template that includes variables. To create different messages at once, please use the “Import Any Object” tool.

    Use the [%variable_name%] format in your subject line and template, then use a csv file with columns named after those variables to merge the values in the created emails.

    For example if I had a 12 days program with very little variation between the different emails, my setup would look like this :

    Subject Template :
    ClickFix Special Training : Day [%day%]

    Message Template

    CSV File Template

    SMS Interface ♾️

    Step 1

    Add this campaign into your Ontraport account : Add the SMS Campaign.

    You do not need to import assets with your campaign, but this feature requires that you first :

    1. Create a long text custom field in your Contacts to store the SMS
    2. A SMS in the campaign containing only that custom field

    Step 2

    In the campaign you just added, you will find a webhook that you need to edit. Before you can do this, you will need to get your token.
    To do this, go to this link: https://app.clickfix.io/leadenginemessenger/

    Create or select an existing SMS module to get your token and then replace the campaign webhook with this:

    https://klikfx.com/sms/%your sms token%/inbound

    The “Add the Post data to send:” box should look like this:

    contact_id=[Contact ID]&text=[Last Inbound SMS]&firstname=[First Name]&lastname=[Last Name]

    Step 3

    You should now be able to navigate to your chat interface through this url :

    https://klikfx.com/sms/%your sms token%

    ClickChat

    Instructions can be found on the module page :https://app.clickfix.io/clickchat/

    To activate whatsapp you will need to request access here

    Plugins 🆓/➰/💡/♾️

    Chrome Plugin 🆓/➰/💡/♾️

    Our Chrome Plugin will let you :

    • Display and Highlight information about your Ontraport Pages for use in our Shortcodes :
      • Field Names
      • Field IDs
      • Element IDs
      • Column IDs
      • Block IDs
      • Bumps IDs
    • Use Shortcuts within Ontraport (note that you can pick your own key combinations) :
      • Save (Default : CTRL+S)
      • Get cursor to search box (Default : CTRL+SHIFT+F)
      • Back (Default : CTRL+BACKSPACE)
      • Open a copy of current tab (Default : CTRL+SHIFT+U)

    You can use this plugin on as many websites as you want as long as you have a Basic ClickFix account.

    Step 1 : Install the Plugin

    You can install the Plugin directly from the Chrome Webstore here.

    Step 2 : Get your token

    You'll need a Token to identify yourself as a ClickFix user, which you can get here.