Skip to content
Knackly logo
  • Industries
    • Estate Planning
    • Family Law
    • Litigation
    • Loan Creation
    • Other Industries
  • Integrations
  • About Us
  • Pricing
  • Resources
    • Forum
    • Blog
    • Webinars
    • Podcasts
    • Videos
    • Guides
    • Knowledge Base
  • Sign In
  • Schedule Demo
Sign In
Schedule Demo
Search

Overview

New Support Ticket

GETTING STARTED

  • Start Automating in Knackly
    • Course 1 – Introduction to Knackly
    • Course 2 – Introduction to Knackly Docx Templates
    • Course 3 – Introduction to Variables
    • Course 4 – Practice Learning
    • Course 5 – Introduction to Lists and Text Templates
    • Course 6 – Introduction to Tables, Models, and Layouts
    • Object Models and Dynamic Lists

BASICS

  • Variable Formats
    • Date Formatting Examples
    • Text Formatting Examples
    • Number Formatting Examples
    • IF Statement Examples
    • Lists of Items Examples
    • Using Peek
  • Working with Variables
    • Adding Text Variables – Video
    • Options for Text Variables
    • Options for Number Variables
    • Options for Date Variables
    • Options for True False Variables
    • Options for Selection Variables
    • Creating Selection Variables (Multiple Choice) – Video
  • App Intake Options
    • Formatting Your Intakes with Video, Color, and Images
    • Using Layouts in Knackly – Video
    • Setting up the ability to accept file attachments during an intake
    • Working with Conditions in Layouts

KNACKLY DESIGNERS

  • Browser Designer
    • Table Options
    • How to edit and create help text – Video
    • How to edit and create labels – Video
    • Editing Summary Templates – Video
    • Naming your documents – Video
    • Adding Documents to Apps – Video
    • Reusing Tables in Selection Variables
  • Word Designer
    • Adding Variables to your Word templates – Video
    • Creating a New Template in the Word Designer – Video
    • Using the Options in the Word Designer – Video
    • Installing the Word Designer Add-in
    • My Knackly Word Designer Doesn’t Log In
    • Inserting Docx templates within a Docx template
    • Trouble Shooting Word Add-in Designer
    • Indenting Variables in Microsoft Word
  • PDF Designer
    • Using the PDF Designer

TRANSFORM DATA

  • Filters and Functions
    • Advanced Operators and Expressions Guide
    • Relevancy Guide
    • Formula Reference
    • Date Calculations
    • Filters
    • HotDocs to Knackly Functions
    • List Functions
    • Date Formats
    • Text Functions
    • Using Knackly Queries
    • Using the date.today() Feature
    • Using _app for hiding and showing labels, help text and text blocks in layouts
    • Date Calculation Examples
    • Finance Functions
    • Order of Operations Guide
    • Math Functions
    • Knackly Formula for Totaling Costs in Tables
    • Creating Multiple Documents From a List
  • Using Your Data
    • Importing CSV Data into Knackly
  • Date Forumlas
    • Knackly’s Date Calculation: Adding Years

ADMINISTRATION

  • Administering Knackly
    • Creating a Test Catalog in Knackly
  • Release Notes
    • Knackly Release 2020-11-13
  • API
    • Getting Started with the Knackly API
    • Connect Zapier to Knackly

PRACTICE AREA

  • Estate Planning
    • Example of creating Co Executor, Trustee, and Guardian Language.
    • Template: Asset and Liability List for Estate Planning
    • Create Single Successor executor, guardian, and trustee profiles in Knackly
  • Client Intake
    • Creating an email to send to clients
    • Setting up External Client Intakes

HotDocs to Knackly Functions

HotDocs FunctionNative JavaScript equivalentKnackly Equivalent
TEXT + TEXTtext + text
FIRST( TEXT, NUM )text.substring(0, num)text.first(num)(extended String prototype)
INTEGER( TEXT )Number.parseInt(text)text.toInt()(extended String prototype)
LAST( TEXT, NUM )text.slice(-num)text.last(num)(extended String prototype)
LENGTH( TEXT )text.lengthtext.length
MID( TEXT, NUM, NUM )text.substring(num, num)text.substring(num, num)
POSITION( TEXT, TEXT ) (case insensitive)text.indexOf(text) (case sensitive)text.indexOf(text) (case sensitive)
REPLACE( TEXT, TEXT, TEXT, NUM ) (case insensitive)text.replace(text, text) (case sensitive)text.replaceAll(text, text)(extended String prototype)
SPACE( TEXT, TEXT )text ? text + ” ” : “” (ternary operator)text ? text + ” ” : “” (ternary operator)
STRIP( TEXT, TEXT, TRUE_FALSE, TRUE_FALSE )text.strip(text, true_false, true_false)(extended String prototype)
TRIM( TEXT )text.trim()text.trim()
NUM + NUMnum + numnum + num
NUM – NUMnum – numnum – num
NUM * NUMnum * numnum * num
NUM / NUMnum / numnum / num
ABSOLUTE VALUE( NUM )Math.abs(num)math.abs(num)
CEILING( NUM )Math.ceil(num)math.ceil(num)
EXPONENTIAL( NUM )Math.exp(num)math.exp(num)
FLOOR( NUM )Math.floor(num)math.floor(num)
LOGARITHM( NUM )Math.log10(num)math.log10(num)
MAX( NUM, NUM )Math.max(num, num, …)math.max(num, num, …)
MIN( NUM, NUM )Math.min(num, num, …)math.min(num, num, …)
NATURAL LOGARITHM( NUM )Math.log(num)math.log(num)
POWER( NUM, NUM )Math.pow(num, num)math.pow(num, num)
REMAINDER( NUM, NUM )num % numnum % num
ROUND( NUM, NUM )Math.round(num)math.round(num)
SQUARE ROOT( NUM )Math.sqrt(num)math.sqrt(num)
TRUNCATE( NUM, NUM )Math.trunc(num)math.trunc(num)
ZERO( NUM_VAR )x ? x : 0 (conditional/ternary operator)x ? x : 0 (conditional/ternary operator)
FUTURE VALUE (RATE, TERM, PAYMENT, PRESENT VALUE, TYPE)finance.FV()
PAYMENT (RATE, TERM, PRESENT VALUE, FUTURE VALUE, TYPE)finance.PMT()
PRESENT VALUE (RATE, TERM, PAYMENT, FUTURE VALUE, TYPE)finance.PV()
RATE (TERM, PAYMENT, PRESENT VALUE, FUTURE VALUE, TYPE)finance.RATE()
TERM (RATE, PAYMENT, PRESENT VALUE, FUTURE VALUE, TYPE)finance.NPER()
TODAYDate.now()date.today()
DATE + NUM DAYSdate.addDays(date, num)
DATE + NUM MONTHSdate.addMonths(date, num)
DATE + NUM YEARSdate.addYears(date, num)
DATE – NUM DAYSdate.subDays(date, num)
DATE – NUM MONTHSdate.subMonths(date, num)
DATE – NUM YEARSdate.subYears(date, num)
AGE( DATE )date.age(date)
DATE OF( DAY, MONTH, YEAR )new Date(year, month-1, day)date.new(year, month, day)
DAY OF( DATE )date.getDate()date.dayOf(date)
DAY OF WEEK( DATE )date.getDay()date.dayOfWeek(date)
DAYS FROM( START, FINISH )date.daysBetween(date, date)
MONTH OF( DATE )date.getMonth()date.monthOf(date)
MONTHS FROM( DATE, DATE )date.monthsBetween(date, date)
YEAR OF( DATE )date.getYear()date.yearOf(date)
YEARS FROM( DATE, DATE )date.yearsBetween(date, date)
NOT TRUE_FALSE!true_false!true_false
TRUE_FALSE AND TRUE_FALSEtrue_false && true_falsetrue_false && true_false
TRUE_FALSE OR TRUE_FALSEtrue_false || true_falsetrue_false || true_false
TRUE_FALSE = TRUE_FALSEtrue_false == true_falsetrue_false == true_false
TRUE_FALSE != TRUE_FALSEtrue_false != true_falsetrue_false != true_false
TEXT = TEXT (case insensitive)text == text (case sensitive)text == text (case sensitive)
TEXT != TEXT  (case insensitive)text != text (case sensitive)text != text (case sensitive)
TEXT CONTAINS TEXT (case insensitive)text.includes(text) (case sensitive)text.includes(text) (case sensitive)
TEXT ENDS WITH TEXT (case insensitive)text.endsWith(text) (case sensitive)text.endsWith(text) (case sensitive)
TEXT STARTS WITH TEXT (case insensitive)text.startsWith(text) (case sensitive)text.startsWith(text) (case sensitive)
TEXT < TEXT (case insensitive)text < text (case sensitive)text < text (case sensitive)
TEXT <= TEXT (case insensitive)text <= text (case sensitive)text <= text (case sensitive)
TEXT > TEXT (case insensitive)text > text (case sensitive)text > text (case sensitive)
TEXT >= TEXT (case insensitive)text >= text (case sensitive)text >= text (case sensitive)
MULT_CHOICE = TEXT (case insensitive)array.includes(text) (case sensitive)array.includes(text) (case sensitive)
MULT_CHOICE != TEXT (case insensitive)!array.includes(text) (case sensitive)!array.includes(text) (case sensitive)
NUM = NUMnum == numnum == num
NUM != NUMnum != numnum != num
NUM < NUMnum < numnum < num
NUM <= NUMnum <= numnum <= num
NUM > NUMnum > numnum > num
NUM >= NUMnum >= numnum >= num
DATE = DATEdate.isEqualTo( date )(extended Date prototype)
DATE != DATEdate.isNotEqualTo( date )(extended Date prototype)
DATE < DATEdate.isBefore( date )(extended Date prototype)
DATE <= DATEdate.isNotAfter( date )(extended Date prototype)
DATE > DATEdate.isAfter( date )(extended Date prototype)
DATE >= DATEdate.isNotBefore( date )(extended Date prototype)
ANSWERED( VAR )x (check the var’s ‘truthiness’)x (check the var’s ‘truthiness’)
ANSWERED( DIALOG )
FORMAT( VALUE, “EXAMPLE” )see “filters” document
UNANSWEREDnullnull
VALUE( VAR, EXPRESSION )x ? x : expressionx ? x : expression
COUNT( DIALOG )array.lengtharray.length
COUNT( MULT_CHOICE_VAR )array.lengtharray.length
COUNTER_index, _index0note also _parent, which HotDocs did not have
SUM( COMPUTATION_VAR )
SUM( NUM_VAR )
SELECTION( MULT_CHOICE_VAR, NUM )arrayarray
OTHER( MULT_CHOICE_VAR )n/a
UNION( MULT_CHOICE, MULT_CHOICE )array.concat(array)array.concat(array)
Knackly logo

Address

2300 North Yellowstone Hwy, Suite 201
Idaho Falls, Idaho 83401

Phone

(801) 766-3183

Industries

Estate Planning

Family Law

Litigation

Loan Creation

Other Industries

Company

About Us

Integrations

Reviews

Pricing

Schedule Demo

Contact Us

Resources

Blog

Webinars

Podcasts

Videos

Guides

Knowledge Base

Comparison

Knackly vs. HotDocs

 

© Copyright 2023 Knackly. All rights reserved.

  • Privacy Policy
  • Terms of Service
  • Cookie Policy