General
- What is Creodocs?
- Report Issues & Feedback
Account
- Change Account Information
- API Keys
- Deleting Your Account
Billing
- Credits
- Billing Groups
Templates
- What Are Templates?
- Creating a Template
- Template Specifications
- Adding a Template
- Template Versions
- Ownership and Sharing
- Deleting a Template
Document Data
- What Is Document Data?
- Manual Entry
- Database
- API
Policies
- Privacy Policy
- Terms and Conditions
What is Creodocs?
Creodocs is a web-based platform that allows you and your business to create documents from predefined templates. Templates define the structure and layout of the document and specify fields where information can be entered. Unlike most document creation tools, Creodocs does not allow modification of the document outside of these predefined fields, and even restricts the type and length of information that can be entered for each field. This leads to documents that are highly consistent and guaranteed to contain the right type of information at each place where information can be entered. Templates are provided by Creodocs for all users, but you may add your own private templates.
Creodocs enables business use in several ways. Billing groups allow everyone in your organisation to charge usage to a single account responsible for payments and tracking individual use and spending. Custom document templates allow your organisation to personalise documents with your brand and access to private templates can be controlled so only particular people in your organisation can make use of them.
Both business users and individuals can specify document information in one of three ways, each covering a different document creation use case. Information can be manually entered on the website, which is useful for individuals to interactively log in and populate documents. It can also be submitted by uploading a database where each row corresponds to a document. This allows the bulk creation of documents when a large number of the same document are needed as a batch. Finally, information can be submitted by issuing a request to the Creodocs API. This allows applications to create documents automatically without human intervention.
Report Issues & Submit Feedback
Creodocs is a new product created by a single developer. As such, there may be issues and questionable design decisions that a large team may more readily catch. Your help is greatly appreciated if something on Creodocs doesn't work, contains vulnerabilities or the user experience could be improved.
Simply enter the issue you encountered or your feedback in the form below. Be as descriptive as possible and include any error messages you saw.
Alternatively, submit your feedback to feedback@creodocs.com.
Change Account Information
Changing Email Address
Your email address acts as the username for your Creodocs account. It's used for communicating important account information and confirming account-changing actions, so you should ensure it's always up to date. You can change the email address associated with your account on the Account Settings page. As a safety precaution, once you change your email address, you will be immediately logged out and will need to confirm your new email address before you can log in again.
Once your email is changed, other users will only see your new email address in billing groups and shared templates. Your previous address will no longer be visible.
If you accidentally change your email address to one not under your control, please contact support immediately so it can be changed back.
Changing Password
You can change your account password from the Account Settings page.
API Keys
What Are API Keys?
An Application Programming Interface (API) is used to automatically interact with Creodocs without having to navigate through the website. APIs are primarily used by software developers to integrate a desired functionality from one service, such as creating receipt documents, into a different service or product, such as an online store.
Presently, Creodocs only allows the creation of single documents via its API. If you would like to make use of this functionality, you will need to create an API key. Your API key acts as a token to identify you and authorise your requests. When you request for a document to be created through the API, you must include your key to prove that you have access to the template.
Creating a Key
You can create an API key from the Create API Key Account Settings page. You will need to specify a name for your key, which could identify how the key will be used or who will use it. Every key must also have an expiry time, specified as a number of weeks. This is a security precaution as keys allow unlimited access to your private templates and credits if they are made public. Regularly rotating keys limits the potential for their abuse and an expiry time is a good way to force this to happen regularly. If you understand the risks and would prefer no expiry, you can enter a maximum term of 520 weeks, equivalent to 10 years.
Once you create a key, it will be displayed to you in plain text just once and you should immediately copy it to a secure location. Creodocs does not store keys in plain text so there is no way to retrieve a key that you have misplaced; you will need to generate a new one.
Viewing and Deleting Current Keys
The Active Keys Account Settings page shows you a table of your current active API keys, identified by their names. Along with the time each key was created and when it will expire, you can delete keys and this will immediately invalidate all API requests that attempt to use them. If you suspect any of your keys have been compromised by a third party, it is highly recommended to delete them and create new ones immediately.
Expired Keys
You can find a list of expired keys on the Expired Keys Account Settings page. This can be used to identify when a key was created or expired, or past products/people that had access to the API through your account.
Deleting Your Account
There is currently no automated way to delete your account on Creodocs. If you simply stop using Creodocs, any documents you have produced will be automatically deleted in 1 month from creation and minimal personal information will be retained about you, as per the general privacy-by-default architecture of Creodocs. If you have a legal or policy requirement for your account to be completely erased from Creodocs, please contact support and this can be done manually.
Credits
What Are Credits?
Simply, credits are the currency for creating documents on Creodocs. Credits are purchased for money and spent on creating documents. All credits have a finite lifetime and will expire if they are not used in time. This icon is used as shorthand for credits: .
Purchasing Credits & Expiry
The Pricing page allows you to purchase credits. All credits expire after 2 years to allow ample time to make use of purchases. Discounts apply for large purchases of credits—currently, each block of credits purchased results in a further 0% discount applied on the base price ($/credit) for further credits purchased. The average cost per credit is indicated below the purchase price on the Pricing page.
You can purchase multiple sets of credits and credits that expire soonest are always used first. This allows you to manage your spend based on available budget and expected usage.
Why Credits? Why Not Dollars or Subscriptions?
Credits may seem like a dark pattern of obfuscating cost and adding unnecessary complication. This is certainly not the intention and this section aims to explain why credits are a good system for you and for Creodocs.
The price to create individual documents on Creodocs is on the order of cents and there is no reliable method for charging such small amounts directly, therefore, either an account crediting system or a subscription model is required.
Crediting accounts with dollars directly would make for unintuitive remaining balances and prices, where a document cost of $0.06 and remaining balance of $4.78 requires the use of a calculator to determine how many documents you can create. Whole numbers, as with credits, simplify this to 1 credit makes 1 document. Another important consideration is that dollar balances disallow discounting for bulk buying, at least, not without disassociating amount credited from the price paid, at which point you have an unintuitive credit system where $200 paid in gives you $300 in credit.
Alternatively, a subscription model allows recurring payments for fixed or unlimited numbers of documents to be produced over specific time scales. However, subscriptions are ultimately bad for the consumer and don't adequately support users with low workloads. The expiring credit system already provides the benefits of a subscription by allowing you to maintain a constant pool of credits that are purchased on a schedule of 2 years any time before the previous set expires. This comes without lock-in for fixed terms as with many subscriptions and if you are unhappy with the product, you can walk away at any time by letting your credits expire without having to continue paying or going through the hassle of cancelling your subscription.
Billing Groups
What Are Billing Groups?
A billing group is a set of one or more users who share the same pool of credits, i.e. all documents created by any user in the group are charged to the group. The purpose of billing groups is to enable users to share credits with other users to reduce costs and consolidate billing.
When you create an account, a billing group is automatically created for you. When you purchase credits, they are added to your billing group and when you create documents, they are subtracted.
Sharing Credits
Each billing group has a single owner but can have any number of members. Owners can invite new members, remove existing members or transfer ownership from the Billing page. If you are the owner of a billing group with at least one other member, you are responsible for purchasing credits since only the owner can make purchases on behalf of the group.
Commercial users may wish to set up a single billing group for the company under a separate account and add all users of Creodocs to this group for consolidated billing and tracking usage. The owner of the billing group can see the full purchase history of the group in the Transactions section of the Billing page, including the breakdown for how each credit was spent by members of the group and on which templates.
The Current Members section of the Billing page lists the current membership status of each member in your currently active billing group where you are the owner. Each member can have one of the following statuses:
- active - This is the member's active billing group and any documents they create will use the group's credits.
- dormant - The member is part of the group but has a different group as their active billing group. Any documents they create will not use this group's credits.
- invited - The member has been invited to the group but has not yet accepted the invitation. They are still active in a different billing group and cannot use this group's credits.
Multiple Billing Groups
When you are invited to a billing group, you will receive an email notification asking you to log in and accept—or decline—the invitation. Once you accept, you are immediately added to the group and it becomes your active group. Any documents you create from then on will be charged to the new group.
You can be a member of multiple groups but only one can be active at a time. Switching between groups is instant and is done in the Change Active Group section of the Billing page. The ability to switch between groups allows you to make use of credits from multiple sources, such as from different departments, companies or from friends. The default group that is created when you create your account allows you to switch between credits purchased for personal use and those purchased by someone else.
You cannot leave a billing group when you are the owner and there are one or more other members. This restriction is in place to force those who are responsible for a billing group with other members to see balance information regularly and purchase credits for them as needed. It is recommended for business users to designate one account as the billing group owner who will be responsible for managing group membership, purchasing and tracking usage.
What Are Templates?
Templates are the document layouts in your Workshop that you can use to create documents. Each template encompasses the visual design and typography of a document, but also contains a specification for how you are allowed to interact with the template to specify document data. A template can be made for virtually any required document use case, and quality templates strive to be beautiful but also functional by intelligently allowing only essential information to be entered by users. Due to this, templates are at the very core of what Creodocs does.
Behind the scenes, Creodocs uses LaTeX to specify the document design of each template and to produce the resulting PDF after substituting document data from user input.
What Is LaTeX?
LaTeX is a document preparation system originally released in 1983 by Leslie Lamport. It is built on top of the TeX typesetting system, released in 1978 by Donald Knuth. LaTeX is widely used in academia and especially for mathematics, but is not commonly used outside these fields due to the relatively steep learning curve for those unfamiliar with text-based markup languages (such as HTML).
In LaTeX, a document design is defined using commands in plain text, instead of using a point-and-click graphical user interface such as Microsoft Word. This plain text code is then compiled (typeset) to produce the document in PDF format. While this approach is too cumbersome for most people to learn, it has immense benefits for the resulting documents and for those who are technically inclined enough to learn it.
Why Does Creodocs Use LaTeX?
Typography The act of typesetting with LaTeX optimally arranges text on the page using best-practices typographic rules and algorithms. This influences such things as the spacing between words, hyphenation, how fonts are utilised and justification. Practically, resulting documents are more beautiful and feel nicer to read.
Powerful LaTeX has the ability to implement virtually any design through the use of a wide diversity of extensions (called packages). Combined with the ability to typeset mathematics, symbols and custom fonts with presets for any language, there are few document elements that can't be produced.
Programmatic LaTeX is programmatic in nature, which means variables, loops, if statements and switches can be readily utilised. This is particularly useful for Creodocs where small user inputs can be made to have big impacts on the document produced. For example, a single boolean (true/false) switch in the LaTeX code can have conditional impacts in many places in the document, such as whether tax should be calculated in an invoice, and whether the corresponding rows and columns for tax totals should be shown in the invoice table. Since LaTeX documents are plain text, templates are amenable to version control to easily track changes over time.
Free and Open Source LaTeX itself, and almost all LaTeX packages used to add functionality to documents, are free and open source, licensed under the LPPL (LaTeX Project Public License). This means there is no subscription to pay or forced upgrades over time to justify additional payments. Further, there is a large body of code examples, questions with answers and community spirit to LaTeX, opposed to the one-sided nature of a commercial product.
Longevity Documents produced with LaTeX are usually compilable years, or even decades, after they are written. Yearly releases of LaTeX rarely break backwards compatibility and packages tend to receive infrequent updates that don't often interfere with other packages.
Creating a Creodocs Template
This page contains a guide for how to create a new document template to appear in your Workshop, hereafter referred to as a Creodocs template, or just template. Creating a template for Creodocs requires three distinct steps:
- Writing the LaTeX code that creates the document layout
- Defining user inputs and groups in the LaTeX code
- Specifying how inputs should be populated by users on Creodocs
This guide will walk through the entire process of creating a basic template. The goal is to introduce you to the process and leave you equipped to create complex templates, such as the default documents available to all users of Creodocs.
Step 1. Creating a LaTeX Document
Creodocs uses LaTeX to define the structure and layout of all documents. It is the compilation (or typesetting) of LaTeX code that gives rise to the PDF documents produced by Creodocs. This makes the underlying LaTeX code the most important part of a Creodocs template. This guide assumes you are familiar with LaTeX and comfortable with using it to create documents. If not, there are a multitude of free guides available on how to use LaTeX, or you can use the Creodocs Template Creation Service to commission a LaTeX template to your specifications.
For the purpose of this guide, let's pretend we are a real estate company with multiple property managers who need to send official letters to tenants notifying them that an inspection of their rental property is due. We first need to create a LaTeX document that lays out the letter and includes company information and the letter body.
Create a file called main.tex in a new folder and add the smallest possible amount of LaTeX code required to generate a document:
\documentclass{letter}
\begin{document}
hello, world
\end{document}
When we compile this with pdflatex we produce the following as a PDF document:
All Creodocs templates must contain a file called main.tex. This is the file that will be compiled, but other .tex files can be present, such as when using \input{}
to include LaTeX code in the main template file.
Let's now create the entire letter with everything we need to communicate to tenants. At this point, it's best to write the LaTeX code as if we are just sending one instance of this document by entering fake information throughout. This will help us in the next step when we need to determine which parts of the document will be populated by users on Creodocs. Our final letter might look something like this:
\documentclass{letter}
\usepackage{palatino}
\signature{Terrence Black \\ \textit{Property Manager} \\ Impact Real Estate}
\address{John Smith \\ Apartment 1315 \\ 126 Albert Street \\ Auckland 1010}
\date{}
\begin{document}
\begin{letter}{Impact Real Estate \\ 72 Queen Street \\ Auckland 1010}
\opening{{\Large\textbf{Notice of Inspection}} \\\\ Dear John Smith,}
This letter is to notify you that I will be conducting a routine inspection of your apartment on \textbf{March 15th, between 2pm-5pm}. The previous inspection was carried out on September 18th and as per your tenancy contract, biannual inspections must be carried out to continue your tenancy.
I will be checking for the following:
\begin{enumerate}
\item{Damage to the property}
\item{Functionality of smoke detectors}
\item{Carpet cleanliness}
\item{Any other maintenance issues}
\end{enumerate}
If you are unavailable on the date listed, please leave a key with the concierge in my name and I will carry out the inspection alone. Please note that I may need to take photographs of any damage found for documentation purposes.
Should you have any questions or concerns, please contact me directly by email at terrence@impactrealestate.nz.
\closing{Yours sincerely,}
\end{letter}
\end{document}
This is what this letter should look like when we compile the code with pdflatex:
Step 2. Defining User Inputs in the LaTeX Document
We made a LaTeX document for the letter we want to send tenants notifying them of upcoming inspections. We have populated it with all the information we expect to send and filled it with dummy data for a fake tenant and property manager. Our next task is to go through the LaTeX code and add special syntax where Creodocs can insert data supplied by users of this template. Each piece of information we want template users to be able to supply is called a variable.
Variables are added inline to our LaTeX code and have the syntax of [[[VARNAME]]]
. The text within the square brackets is the variable identifier (ID) and can only contain upper case letters and numbers with a length of 1 to 30 characters. These IDs should be succinct and descriptive of the purpose of each variable. These variable identifiers are not seen by template users.
Let's go through our letter and replace all occurrences of information we want users of the template to enter with Creodocs variable IDs. This will require carefully thinking about all potential users of the template and what their needs might be, now and in the future. The resulting code is seen below with changes in bold:
\documentclass{letter}
\usepackage{palatino}
\signature{[[[SENDERNAME]]] \\ \textit{[[[SENDERJOBTITLE]]]} \\ Impact Real Estate}
\address{[[[TENANTNAME]]] \\ [[[TENANTADDR1]]] \\ [[[TENANTADDR2]]] \\ [[[TENANTADDR3]]]}
\date{}
\begin{document}
\begin{letter}{Impact Real Estate \\ 72 Queen Street \\ Auckland 1010}
\opening{{\Large\textbf{Notice of Inspection}} \\\\ Dear [[[TENANTNAME]]],}
This letter is to notify you that I will be conducting a routine inspection of your apartment on \textbf{[[[INSPECTIONTIME]]]}. The previous inspection was carried out on [[[PREVINSPECTIONTIME]]] and as per your tenancy contract, biannual inspections must be carried out to continue your tenancy.
I will be checking for the following:
\begin{enumerate}
\item{Damage to the property}
\item{Functionality of smoke detectors}
\item{Carpet cleanliness}
\item{Any other maintenance issues}
\end{enumerate}
[[[EXTRANOTES]]] Please note that I may need to take photographs of any damage found for documentation purposes.
Should you have any questions or concerns, please contact me directly [[[SENDERCONTACTINFO]]].
\closing{Yours sincerely,}
\end{letter}
\end{document}
If we try to compile the new code with pdflatex, we find that it no longer compiles without errors due to the square brackets. If you need to see what it looks like, find and replace [[[
and ]]]
with nothing through the template code and it will compile again. This will show you where the Creodocs variable IDs have been added:
You'll notice some information from our first draft has been kept while other information has been made into variables. This is because some information in the template will never change, while other information needs to change each time one of these letters is created. For example, the company address of Impact Real Estate won't change very often so this is safe to hard code, while the tenant's address will change every time. Often times there will be grey areas where information will usually not change, but it could, so it might be useful to make it into a variable. An example of this is the EXTRANOTES
variable, where we initially mentioned leaving a key with the concierge if the tenant is not available, but what if the tenant's apartment building doesn't have a concierge? Likewise, while the sender of the letter will usually be a property manager, some property managers may have assistants and the company could have a mixture of managers with Senior Property Manager job titles, so it's best to allow the sender's job title to change.
The same Creodocs variable ID can be used within the LaTeX code multiple times. This is powerful when we need to output the same piece of information in multiple places in the resulting document. An example of this is theTENANTNAME
variable which is used at the top of the letter with the tenant's address and for addressing the letter to the tenant withDear TENANTNAME,
.
Looking through our letter again, we can see that the tenant's address is split across 3 variables. What if we need to enter a suburb on a 4th line or we want to write the apartment number inline with the street number so the address only takes up 2 lines? For this, we can use variable multi-groups.
Variable multi-groups allow you to specify that some LaTeX code containing one or more variable IDs can be inserted into the document multiple times. Multi-groups are enclosed in 3 pipe characters (|||
) and must contain one or more variable IDs specified as usual within square brackets, e.g.|||[[[TENANTADDR]]]|||
. Groups can span multiple lines of LaTeX code and contain any other LaTeX code. If more than one set of data is submitted by a user for a multi-group, all code within the multi-group specification is duplicated one after another prior to document creation.
Let's make it so the users of our template on Creodocs can specify any number of lines for the tenant's address by replacing the 3 tenant address variables with 1 and putting it into a multi-group (change in bold):
\documentclass{letter}
\usepackage{palatino}
\signature{[[[SENDERNAME]]] \\ \textit{[[[SENDERJOBTITLE]]]} \\ Impact Real Estate}
\address{[[[TENANTNAME]]] |||\\ [[[TENANTADDR]]]|||}
\date{}
\begin{document}
\begin{letter}{Impact Real Estate \\ 72 Queen Street \\ Auckland 1010}
\opening{{\Large\textbf{Notice of Inspection}} \\\\ Dear [[[TENANTNAME]]],}
This letter is to notify you that I will be conducting a routine inspection of your apartment on \textbf{[[[INSPECTIONTIME]]]}. The previous inspection was carried out on [[[PREVINSPECTIONTIME]]] and as per your tenancy contract, biannual inspections must be carried out to continue your tenancy.
I will be checking for the following:
\begin{enumerate}
\item{Damage to the property}
\item{Functionality of smoke detectors}
\item{Carpet cleanliness}
\item{Any other maintenance issues}
\end{enumerate}
[[[EXTRANOTES]]] Please note that I may need to take photographs of any damage found for documentation purposes.
Should you have any questions or concerns, please contact me directly [[[SENDERCONTACTINFO]]].
\closing{Yours sincerely,}
\end{letter}
\end{document}
Notice how the multi-group contains \\
before the variable ID. This is because Creodocs duplicates all code inside the group delimiters and in this case we want each line of the address to be output on a new line, so we need to include the code that will do this inside the group. Creating groups can be tricky as it requires thinking about what will happen to the code you enclose in the group once it is duplicated. For example, in this case we could have naively specified the group as \address{[[[TENANTNAME]]] \\ |||[[[TENANTADDR]]] \\|||}
and this would compile fine, but there would always be an extra newline at the end of the tenant's address block which is not what we intended with the design.
Step 3. Defining Template User Interaction on Creodocs
We have now created our LaTeX document and decided which parts of it we will expose on Creodocs for users to populate. All that remains is to describe our document to Creodocs by specifying template, variable and group information in a format that it will understand. This will allow it to display the template and variables to users in a clean and helpful way, and restrict the types and amounts of information that can be submitted for each variable. This definition is done in a creodocs.json file that should be in the same directory as the LaTeX code.
All Creodocs templates must contain a creodocs.json file. This file specifies template information, acts as the key for variables in the LaTeX code and groups variables for display to users on Creodocs. The data within the file is in JSON format.
It's a good idea to familiarise yourself with the JSON format if you haven't come across it before. Broadly, it's a hierarchical format of keys and values that supports named and unnamed lists (or arrays) of information. The creodocs.json file is composed of 3 top-level sections. The first contains information about the whole template, the second defines each variable and the third specifies how variables should be grouped for display on Creodocs. Let's take a look at a basic creodocs.json file with 2 variables and groups:
{
"template": {
"name": "Template Name",
"description": "Template Description",
"engine": "pdflatex",
"version": "1.0.0",
"contact": "email@company.com"
},
"variables": {
"VARNAME": {
"name": "Variable Name",
"description": "What does this variable do in the document?",
"type": "string",
"max_length": 50,
"demo_value": "VARNAME",
"default_value": "Testing",
"required": true
},
"NUMBER": {
"name": "Number Variable",
"description": "What does this variable do in the document?",
"type": "integer",
"max_length": 4,
"demo_value": "NUMBER",
"default_value": "100",
"required": false
}
},
"groups": {
"Group Name": {
"variables": [ "VARNAME" ],
"multi": true,
"required": true
},
"Another Group":
"variables": [ "NUMBER" ],
"multi": false,
"required": true
}
}
}
Within each of the top-level sections, there are one or more levels of keys and values that define the information required to add the template to Creodocs. The first template
section contains overall information about the template such as its name and description which will appear in the Workshop, but also what TeX engine should be used to compile it, the current version of the template and who users should contact for changes and support. The variables
section contains a list of variables where the keys are the variable IDs used in the LaTeX code. Within each variable ID is information for how users will interact with the variable and includes how it should be displayed (name
and description
), what kind of data it can take (type
), how much data can it take (max_length
), do users have to specify it (required
) and is there a default value that should be used in different situations (demo_value
and default_value
). Finally, the groups
section combines variables into logical groups so they can be displayed together and specifies whether the variables in each group can be added by users once or many times. For a full description of the structure of this file and all the options available, please refer to the Complete Template Specifications section.
We can now follow the format of the example creodocs.json file and refer to the advanced documentation to create a creodocs.json file for our letter template:
{
"template": {
"name": "Notice of Inspection Letter",
"description": "For notifying tenants of an upcoming property inspection",
"engine": "pdflatex",
"version": "1.0.0",
"contact": "arthur@impactrealestate.nz"
},
"variables": {
"SENDERNAME": {
"name": "Sender Name",
"description": "The name of the property manager or the person sending the letter on their behalf.",
"type": "string",
"max_length": 100,
"demo_value": "SENDERNAME",
"default_value": "",
"required": true
},
"SENDERJOBTITLE": {
"name": "Sender Job Title",
"description": "The job title of the person sending the letter.",
"type": "string",
"max_length": 50,
"demo_value": "SENDERJOBTITLE",
"default_value": "Property Manager",
"required": true
},
"TENANTNAME": {
"name": "Tenant Name",
"description": "",
"type": "string",
"max_length": 100,
"demo_value": "TENANTNAME",
"default_value": "",
"required": true
},
"TENANTADDR": {
"name": "Tenant Address",
"description": "The mailing address of the tenant.",
"type": "string",
"max_length": 100,
"demo_value": "TENANTADDR",
"default_value": "",
"required": true
},
"INSPECTIONTIME": {
"name": "Inspection Time",
"description": "The day/time when the inspection will take place.",
"type": "string",
"max_length": 100,
"demo_value": "INSPECTIONTIME",
"default_value": "",
"required": true
},
"PREVINSPECTIONTIME": {
"name": "Previous Inspection Date",
"description": "The date of the last inspection of the property.",
"type": "string",
"max_length": 50,
"demo_value": "PREVINSPECTIONTIME",
"default_value": "",
"required": true
},
"EXTRANOTES": {
"name": "Extra Notes",
"description": "Any other notes or requirements for the inspection, such as where to leave the key if the tenant isn't home.",
"type": "string",
"max_length": 500,
"demo_value": "EXTRANOTES",
"default_value": "If you are unavailable on the date listed, please leave a key with the concierge in my name and I will carry out the inspection alone.",
"required": false
},
"SENDERCONTACTINFO": {
"name": "Sender Contact Information",
"description": "How the tenant should contact you with questions or concerns. Should start with 'by ...' or 'on ...' as the text in the letter prior to this is 'please contact me directly '.",
"type": "string",
"max_length": 200,
"demo_value": "SENDERCONTACTINFO",
"default_value": "",
"required": true
}
},
"groups": {
"Sender Information": {
"variables": [ "SENDERNAME", "SENDERJOBTITLE", "SENDERCONTACTINFO" ],
"multi": false,
"required": true
},
"Tenant Name": {
"variables": [ "TENANTNAME" ],
"multi": false,
"required": true
},
"Tenant Address": {
"variables": [ "TENANTADDR" ],
"multi": true,
"required": true
},
"Inspection Information": {
"variables": [ "INSPECTIONTIME", "PREVINSPECTIONTIME", "EXTRANOTES" ],
"multi": false,
"required": true
}
}
}
Let's step through the three sections of the completed creodocs.json file as there are multiple nuances to note.
The template
section contains the template name and description as they will be shown on the Workshop page. We have written our LaTeX code to be compiled with pdflatex so this is the specified engine, but if we needed to use a custom font then xelatex would be a better choice. The version of the template can be specified in any format, but it is advised to stick to the semantic X.Y.Z
versioning system where X
is iterated for major changes, Y
for minor changes and Z
for bug fixes, e.g. 1.5.12. Finally, we list a fictional Arthur at Impact Real Estate and the contact person if there are any issues with the template.
In the variables
section, all of the variable IDs in the LaTeX code must be defined. The order of the variable IDs doesn't matter, that is, it doesn't need to correspond to the order they appear in the LaTeX code. For each variable, we first have a name
attribute for the friendly name to be displayed to users on Creodocs. The description
provides further explanation of the variable's function to users. The type of content variables can accept from users is specified in the type
attribute. In our example, all variables have a value of string
, which means they can hold any text content. Alternative options include integer
(whole numbers), float
(numbers with decimals or whole numbers) and boolean
(true or false). The max_length
attribute specifies the maximum number of individual letters, numbers or symbols a user can enter for the variable. This is a difficult specification to get right, since you need to set it large enough to refrain from restricting users unnecessarily, but small enough that the location of the variable in the document can accommodate the maximum number of characters. The demo_value
is used for making sure the template works and these values are used in the preview image for the template. A few of the variables have a default_value
, which is automatically populated in the manual entry form. Users still have the option to modify these, but the idea is that the default value represents the most common value the variable will contain. Finally, whether variables are required
is also an important attribute. Optional variables can be left blank by users and the document will be produced without them, but variables marked as required must have content entered. In our case, most of our variables are required because they represent pieces of information that are needed in the letter for it to make sense.
In the groups
section, group names each contain a number of key-value pairs with variable IDs specified as a list under a variables
attribute. Each variable ID must be present in only one group. The group names will be displayed to users, so they should be clear and concise. The order in which they appear will be their order on Creodocs. The idea is to group variables in a logical fashion so like is with like. For example, in our letter, we have 3 variables related to the person sending the letter: sender name, sender job title and sender contact information. These are logically grouped into the Sender Information
group to be displayed together. The multi
attribute specifies whether the variables in the group can be added multiple times by template users. If multi
is true, all variables in the group must be in the same variable multi-group in the LaTeX code (i.e. enclosed in |||
). In our letter, only the TENANTADDR
variable ID can be entered multiple times for each line of the tenant's address, so it must be in its own group in the groups
specification. Finally, the required
attribute allows overriding the required
attribute of individual variables in the group. If required
is false for the group, all variables can have no content submitted for them by the template user, even if they are required individually. However, if any variable does have content submitted for it, then the normal per-variable required
values will apply.
Closing Remarks
We have finished making our template! All that remains is to package the two files we have created into a zip file so they can be uploaded to Creodocs together. For convenience, you can download this file here:
All Creodocs templates must be uploaded as zip files containing at minimum a main.tex file and a creodocs.json file. Other files can be included if needed, such as additional .tex files, images or fonts.
Hopefully you are now equipped to create your own templates. When doing so, it is recommended that you refer to the Complete Template Specifications section for additional information and options, as this guide intentionally glossed over details in favour of simplicity.
The next step is to add our template to Creodocs which is covered in the Adding a Template section.
Complete Template Specifications
This page contains a complete reference of all requirements and options for creating Creodocs templates. The creation of a template requires you to first implement your document in LaTeX, then to define your document in a creodocs.json file in a way that allows Creodocs to display it and accept user inputs. As such, this page is divided into the following sections:
LaTeX Code Specifications
Creodocs uses TeX Live for typesetting templates and the two typesetting engines available are pdflatex and xelatex. There are no restrictions on what you can do in your LaTeX code; in general, if it compiles using TeX Live, it will compile on Creodocs. This means you are free to use packages that are part of TeX Live without including them as files with your template, unless you need a specific version of a package or it is not included with TeX Live. Other inclusions such as images, fonts and additional .tex files are allowed and can be housed in separate directories or alongside the template code.
The template you upload to Creodocs must be packaged as a zip file and must contain a main.tex file at the top (root) level. This is the file that will be compiled by Creodocs but you can include additional LaTeX files from within it using the standard LaTeX \input{}
command.
Each location in the LaTeX code where Creodocs users can supply information is called a variable. Variables are added inline to the LaTeX code and have the syntax of [[[VARNAME]]]
. The text within the square brackets is the variable identifier (ID) and can only contain upper case letters and numbers with a length of 1 to 30 characters. This is an example of using a variable inside a LaTeX document: Hello world, my name is \textbf{[[[NAME]]]}!
. Variables can be used any number of times in the LaTeX code.
By default, variables accept one value from users, but it is sometimes useful to allow one or more variables to accept multiple sets of content, this is called a multi-group. For example, in an invoice document, each invoiced item works well as a multi-group of several variables, one for the date, description, count and rate. Multi-groups are enclosed in 3 pipe characters (|||
) in the LaTeX code and must contain one or more variable IDs specified as usual within square brackets, e.g. |||[[[VARNAME]]]|||
. Groups can span multiple lines of LaTeX code and contain any other LaTeX code, but they cannot contain other groups. If more than one set of data is submitted by a user for a multi-group, all code and text within the multi-group specification is duplicated for each set prior to typesetting.
creodocs.json Specifications
A creodocs.json file must be included with every template at the top (root) level of the packaged template, alongside the LaTeX code. It is formatted using JSON syntax and describes the template to Creodocs in a standard format. This enables Creodocs to display the template and variables to users in a clean and helpful way, and restrict the types and amounts of information that can be submitted for each variable.
The creodocs.json file must contain template
, variables
and groups
top level sections. You will find each of these described under their corresponding titles below. Please take careful note of the attributes required within each section and the allowed values. The order of attributes within each top level section does not matter in your creodocs.json file. Attributes that are listed as not required in the specifications must be present, but their values can be left blank as empty strings (e.g. "name:" ""
).
template
Specification
This top level section contains information that applies to the entire template.
Attribute | Description | Required | Allowed Values |
---|---|---|---|
name |
The name of the template as it will be displayed to users | Yes | 1-50 letters, numbers, spaces or any of _-:,./'" |
engine |
The TeX engine to be used for typesetting the template | Yes | pdflatex or xelatex |
version |
The version of the template, used for keeping track of updates to templates; the recommended syntax is semantic versioning (X.Y.Z; e.g. 1.4.12) | Yes | 1-10 letters, numbers, spaces or any of _-:.,/() |
description |
A description of the template displayed in the Workshop to provide additional information about the template's purpose to users | No | 0-250 letters, numbers, spaces or any of _-:,./'" |
contact |
Contact details of the person responsible for the template, typically an email address | No | 0-50 letters, numbers, spaces or any of @_-:.,/() |
Example:
"template": {
"name": "Company Design Invoice",
"description": "Use for invoicing clients for design work",
"engine": "pdflatex",
"version": "1.0.0",
"contact": "rob@company.com"
}
variables
Specification
This top level section defines each variable ID used in the LaTeX code for display to users of the template and restricts the type and amount of content each variable can take.
Variable IDs
Under the variables
top level section should be a list of all variable IDs used in the LaTeX code. Their order does not need to correspond to the order in which they are used in the code. Variable IDs must be 1-30 characters in length and contain only uppercase letters and numbers.
For Each Variable ID
Attribute | Description | Required | Allowed Values |
---|---|---|---|
name |
The name of the variable as it will be displayed to users | Yes | 1-40 letters, numbers, spaces or any of _-:.,/' |
type |
The type of content the variable can accept from users | Yes | string , integer , float or boolean |
required |
Whether users must enter content for the variable or if it can be empty | Yes | true or false |
max_length |
Maximum number of characters that can be submitted for the variable | Yes | Whole number between 1-5000 A value of >300 will show multi-line input fields in the manual data submission form |
demo_value |
A value to be used for testing the template works and in the image preview of the template | Yes (if variable required ) |
Must adhere to type and max_length of the variable Can be an array of values if variable is in a multi-group (all other variables in the group must have the same number of array elements) |
default_value |
Pre-filled value for the variable, useful when there is an obvious default value | No | Must adhere to type and max_length of the variable |
description |
Additional information about the variable or usage instructions, displayed in a tooltip to users | No | 0-50 letters, numbers, spaces or any of _-:.,?/()'"; |
Example
"variables": {
"INVITEE": {
"name": "Invitee Name",
"description": "",
"type": "string",
"demo_value": "John Smith",
"default_value": "",
"max_length": 100,
"required": true
},
"GUESTS": {
"name": "Additional Guests",
"description": "The number of additional guests the invitee can bring.",
"type": "integer",
"demo_value": "1",
"default_value": "1",
"max_length": 2,
"required": false
}
}
groups
Specification
This top level section groups variable IDs in logical categories for display to users. A variable ID cannot be in multiple groups and all variable IDs must be grouped.
Group Names
Under the groups
top level section should be a list of all group names to display to users of the template. Their order corresponds to the order in which they will be displayed. Group names must be 1-50 characters in length and contain only letters, numbers, spaces and any of _-:,./'()
.
For Each Group Name
Attribute | Description | Required | Allowed Values |
---|---|---|---|
variables |
A list of variable IDs that belong in the group | Yes | One or more variable IDs in a list, each variable ID must be identical to one of the variable IDs present in the variables top level specification; variables will appear in the order they are listed |
multi |
Whether users can submit multiple sets of data for the group's variables | Yes | true or false |
required |
false if all variables can be submitted empty, even if they are required individually |
Yes | true or false |
Example
"groups": {
"Invitees": {
"variables": [ "INVITEENAME", "INVITEEPARTNERNAME" ],
"multi": false,
"required": true
},
"Invitee Address":
"variables": [ "ADDRESSLINE" ],
"multi": true,
"required": true
}
}
Example Template Downloads
Adding a Template to Creodocs
This page takes you through the process of adding a template or updating an existing template with a new version. Templates must be submitted in the format detailed on the Template Specifications page. Upon submitting your new template, the following steps must occur before it is available for creating documents:
- Validation of template and specifications
- Report on critical issues with template specifications
- Report on optional improvements to template specifications
- Test document creation
Submitting a Template
You can submit a new template from your Workshop or add a new version for an existing template from its Template Settings page. In both locations, you are presented with a simple form to upload a single file containing everything needed to use the template on Creodocs.
Templates must be packaged as a single zip file with a filename no longer than 100 characters, consisting of alphanumeric characters, dashes, underscores or periods. The maximum file size of templates is 20MB to minimise document creation time. The zip file can contain sub-directories for template assets such as images or fonts, but the following two files must be present at the root level: a main.tex template code file and a creodocs.json template and variable specification file.
Step 1. Validation of Template and Specifications
The creodocs.json file contains information about both the template itself and the variables present within it. This information is critical for classifying the template and interacting with its LaTeX code, so this file is the first to be validated for quality. Being a JSON file, it must contain valid JSON syntax and it is recommended to copy the contents of the file into an online JSON validation tool prior to submitting the template. Something as small as a missing quotation mark or bracket is enough to break a JSON file, so mistakes can occur frequently. Template and variable information is extracted from the creodocs.json file to be validated against the template code.
Template code that is parsed for variables and variable groups includes all TeX .tex
, class .cls
and style .sty
files in the template (including recursively in sub-directories). Variables and groups can be specified anywhere in these files. Variables always occur on a single line but groups can span any number of lines. The same variable or group can occur in multiple places in one file and within multiple files. The only restriction is that all variables in a multi-group must always be present in a group together, but their order within the group can change when the multi-group is used more than once.
At least one variable must be present in at least one TeX file. All variables in the variable specification must be used at least once in the template files and no variables can be used in the template files that aren't defined in the specification.
Step 2. Critical Errors Report
Critical errors are issues that prevent a template from being usable in its submitted state. This could include: missing/invalid required information about the template, incorrect variable usage in the code, or something else of similar importance. Any critical errors found during the validation of a new template will cause the template addition to fail. This means the uploaded template will be deleted and you will be presented with a report of the issues identified so you can correct them and resubmit.
Step 3. Optional Improvements Report
During the validation of the specifications and template code, the submitted template is also scanned for improvements that could be implemented that would make it more user-friendly. If no critical errors are found, a report of these improvements is displayed after the template is saved.
You will be presented with the option to act on the suggested improvements and update the template by submitting a new version to overwrite the original one, or you can can disregard the suggestions and continue to the next step.
Step 4. Creating a Test Document
The final step of adding a template is to produce a test document to validate the template code. The demo_value
variable values from the specifications will be used as the document data to produce a test document using the typesetting engine
from the specifications. The resulting PDF document and typesetting log will be presented to you for inspection.
If any critical errors are issued by the typesetting engine which preclude the creation of a document PDF, you will only receive the typesetting log to diagnose the problem and you will be unable to approve the test document.
You should carefully look over the test document and logs to validate that there are no issues. It may be helpful to use demo variable values that show off the functionality and layout of the template rather than using the variable names. This is especially true as the preview image for the template is automatically created using the first page of the test document once you accept the test document.
Template Versions
Templates can be updated to modify their layout, variables and content. Each update becomes a new version of the template and versions can be managed by users with sufficient access to the template. All version changes are made from the Template Settings page, accessed by clicking for the template of interest in your Workshop. This page describes the creation and management of template versions.
Template Version Types
Templates can have any number of versions and each version has a status of either active, inactive or draft. A template can only have one active version and one draft version at a time. The active version is the current version that users use to create documents. The draft version is a new version of the template that is in the process of being validated for quality but is not yet available for document creation. Inactive versions are past versions of the template that are not currently usable but can be activated at any time by a template owner or administrator.
Creating a New Template Version
To create a new template version, select the Add New Version menu option on the Template Settings page. You will be prompted to upload a zip file containing the new version. This zip file should be composed of the same files as a new template since it entirely replaces the current version. The new version will be validated in the same way as a new template, so refer to the Adding a Template page for a detailed description of the process.
Don't forget to make sure your new version has a different template version number specified in the creodocs.json file to any other existing version of the template.
Once your new version passes initial validation for critical problems with template or variable specifications, it becomes stored as the draft version of the template. The draft must undergo the usual validation for variable specifications and code quality before it can be accepted as ready for use. Each template can only have one draft version at a time, shared across all users who have access to add or modify template versions. This means anyone with sufficient access to the template can continue validating the current draft or they can remove it and create their own.
Template users cannot create documents using the draft version until it has been successfully validated for quality. Once all validation is complete, the draft is immediately promoted to the active version of the template and is available for use.
All locked variable content that the template's users have saved will continue to work for the new version, but only for matching variable IDs. For example, if the current version of the template has a variable with the IDVARNAME
and the new version has the same variable ID, then locked content will be restored for this variable in both versions. For multi-groups, all variable IDs must be identical in both versions for the group's locked variable content to be restored. For example, if the current version has a multi-group with variablesNAME, AGE, HEIGHT
but the new version has added the variableWEIGHT
to these, locked variable content will not be restored.
You can rename a template when adding a new version. This is generally to be used with caution, since if you later go back to a previous version, the old name will appear for users.
Viewing, Downloading and Deleting Versions
All versions of a template can be found in the Template Versions section of the Template Settings page. A table lists the versions with important information to differentiate them, including their version number, status, template name, typesetting engine and the time they were added. Each version can be downloaded from the table by clicking the appropriate icon (), in case you misplaced the files yourself. Inactive and draft versions can be deleted by clicking the appropriate icon (), but note that any data submissions template users have for the deleted version will immediately disappear. It is a good idea to delete previous versions when a template receives a major update, or if the name is changed, to minimise the risk of reverting to a previous version and confusing users.
Promoting Inactive Versions
The Promote Inactive Version section of the Template Settings page lets you select an inactive version of the template and make it the current active version. Doing so immediately makes the current active version inactive and the promoted inactive version will appear to users as the version of the template available to use. This can be useful if you need to revert to an older version of the template when a problem is found with a new one. Use this feature with caution as the previous template information will also be displayed (name, description, contact, etc).
Template Ownership and Sharing
Creodocs provides a number of global templates that can be used by anyone with an account. These are owned and managed by Creodocs, but any user can submit their own template(s) which are private by default. Private templates can be owned by and shared with other users, such as within a company. This page covers the ways in which a user can have access to a private template, known as access levels, then describes how template sharing is managed.
Access Levels
Any number of users can have access to a private template. When a template is first added, the user who added it becomes the first owner and can then invite other users to have access. There are three access levels a user can have to a private template: owner, administrator or user. These access levels allow fine-grained control over how much power a given user has over the template. In a commercial team-based environment, this allows differentiating between people who simply need to use the template to create documents and those who are also able to make changes to it.
The table below lists all possible template actions, split by access level. Use this as a reference for deciding the access level to grant additional users of your template.
User | Administrator | Owner | |
---|---|---|---|
Create documents | |||
View the access level of everyone with access | |||
Update template with new versions | |||
Switch to a previous template version | |||
Delete inactive template version | |||
Grant and remove user access | |||
Grant and remove administrator access | |||
Grant and remove owner access | |||
Delete template |
Template Sharing
Template sharing can be accessed for any private template in your Workshop by clicking the sharing icon ( ) under the template. This takes you to a page listing all users who have access to the template, split by their access level. If you have sufficient access, you can remove access to the template for a specific user by clicking 'Remove access' in their row. You can always remove your own access unless you are the sole owner, but removing another user's access requires a higher access level than them. Owners can remove anyone's access (including other owners), administrators can remove users and users can only remove their own access. Removing access is immediate and will delete any documents the user has recently created using the template.
To share the template with a new user, select the Share Template menu option on the Template Settings page. You will be able to enter an email address corresponding to the Creodocs user you wish to invite and select the access level you want to grant them.
If you are upgrading or downgrading a user who already has access to the template, remove their access first before sharing the template with them at the new access level.
Deleting a Template
You can permanently delete any template where you have an access level of owner. To do so, navigate to the Template Settings page by clicking on the settings icon () in your Workshop for the template you wish to delete. Then, find the Delete Template menu item to delete the template.
Upon deleting the template, the current version and all previous versions of the template will be immediately deleted from Creodocs and there is no way to restore a template that has been deleted. Any users who had access to the template will lose it immediately, and will also lose access to any recently created documents that are still available for them to download.
After a template has been deleted, anything that refers to it by name will say Template deleted, such as in the transaction usages breakdowns on the Billing Group Transactions page. This is in the interests of privacy so as to only retain information that is current.
What Is Document Data?
Most business documents that are produced repeatedly contain large sections of text and visual elements that are identical from document to document. This content is static and typically doesn't change very often, such as company contact information, or is informative and applied to all recipients, such as the terms and conditions in an invoice. The information that does change from document to document is dynamic and typically includes customer information, such as the addressee and item lines in an invoice. To produce each document, dynamic information needs to be placed in specific locations amongst the static content, which is exactly what Creodocs does to produce your documents. Document data is the dynamic information which you need to enter to produce a unique document from an existing template.
Variables
A single piece of dynamic information is called a variable. In the simplest case, a document can contain one variable that's used in one place, such as a letter notifying customers of an event that merely needs to use the customer's name in the "Dear [name]," greeting. A variable can be used in one or more places in the document but its content is always the same. This means it only needs to be specified once and can be styled as needed wherever it appears in the document.
Most documents will have need for more than one variable, and some of these variables may not need to have values. For example, a letter may contain not only the customer's name but also their address and phone number. The name and address are required for correctly addressing the letter, but the phone number is merely added under the address if it's available and without it the document is still complete. Variables are marked as required if they must have information entered for them, or not required (i.e. optional) if they can be empty. It is the template's job to correctly adjust the document when an optional variable is submitted without content.
In some situations, we may wish to specify the type of a variable to allow only specific kinds of information to be submitted for it. For example, if we have an invoice document where the number of hours and hourly rate are used to calculate the gross and total amounts due, these variables can only contain numbers or the calculations can't happen. In this case we specify the types of these variables as number
and a document will not be produced if submitted values contain anything but numbers.
Variables need not strictly store information that is output directly into the document. For example, a value of a variable can be used as an internal switch in the LaTeX code to alter the entire layout of a document without being written to the document.
Variable Groups
Documents typically contain many variables and natural groups arise based on the similarity of information stored in two or more variables. For example, a receipt is likely to have several variables for customer information and several others for the goods purchased, which form two natural groups. Variables that are grouped together can be used independently in different places in a document but are presented together for users entering their information. All variables must belong to a group but a group can contain a single variable if there are no other variables that are similar.
Multi-groups
So far we have seen that variables accept a single input value from the user and this value is substituted for the variable in one or more places in the document. However, sometimes it makes sense for a variable (or group of variables) to accept and output multiple sets of values. Consider the case of multiple items in an invoice. Each item has the same information: date, description and cost, but if each variable is only allowed one value, there need to be separate variables for each item, e.g. date1, description1, cost1, date2, description2, cost2, etc. This is cumbersome, repetitive to specify and supports only a fixed number of invoice items.
Multi-groups are a solution to this problem and strongly tie one or more variables together with surrounding static content and/or code. This means the entirety of the multi-group specification in the code is duplicated for each set of content supplied. Using our invoice items example, this means date, description and cost are specified as 3 variables in a multi-group and this allows users to enter multiple sets of content for them. Each set is then output to the document one after another, and any code that is required to create the line is also duplicated to ensure each item is on a separate line and styled correctly.
Submitting Document Data Manually
The easiest way to create documents on Creodocs is by manually entering document data into the website. To do this, click on the template you want to use in your Workshop and you will be presented with a manual entry form containing all the document's variables and fields for entering your content.
Manual Entry Form
The manual entry form contains sections for each variable group in the template selected. Inside each group section, all variables belonging to the group are displayed as rows, with the variable name on the left and the document data input on the right. If the variable name is bold, it must have data entered for it for the document to be produced; if the variable name is bold italic, the variable must have data entered for it only if any other variable in the group has data entered (i.e. all variables in the group can be empty). It is not always obvious what each variable corresponds to in the document, so if there is a small question mark () to the right of the variable name, mouse over it to see a description of what the variable does and how the value you enter may be automatically transformed.
If the group is a multi-group, the variables will appear with a box around them indicating that multiple sets of variables can be created in the group. Three tabs are present for each set of variables that let you manipulate the set. The green tab below is for creating a new blank set below the current set, the red tab to the right is for deleting the current set and the grey tab on the left is for moving the current set up or down in relation to other sets.
Variables can only accept content up to a maximum defined length of characters. Maximum lengths are necessary to constrain the impact that each variable can have on the document. For example, a main title at a font size of 80pt looks good if it contains a handful of words, but if a whole sentence is entered for the main title variable, it would quickly take up the entire page and have an adverse effect on the document. Each variable in the manual entry form shows the current number of characters entered and the maximum allowed under the input field as "X/Y characters remaining".
Variables can accept different types of data depending on what they are used for in the document. Broadly, variables can accept text, whole numbers, numbers with decimals or true/false values (see the Template Specifications section for more information). If a variable is defined as accepting only whole numbers, you will only be allowed to enter whole numbers in the input field for the variable, and the same goes for the other types listed. You can determine what type of data is allowed by looking at the remaining characters text underneath the input field, which will read "digits remaining" for number inputs or "characters remaining" when the input accepts any text. True/false inputs will appear as 2 radio buttons for true and false.
Once you submit your variable data for document creation, it will be checked for accuracy and if there are any errors you will be returned to the manual entry form where what you entered will be restored so you don't lose your progress.
Locked Variable Content
Beside each variable's data input field you will find a lock icon (), which can be toggled on (locked) or off (unlocked). This is a feature exclusive to the manual entry form and allows you to save variable data entered into the form for later re-use. To use this feature, simply enter data for any variable and once you are done, click the lock button to lock the variable content. When you submit the form to create a document, all variables you have locked will have their content saved and next time you return to the manual entry form for the document the values will be restored. This is a very useful feature for creating documents that change over time, such as invoices or curriculum vitaes, where you can save your personal information once and never have to re-enter it again.
Locking variables in a multi-group will lock them per set, in other words, all variables in the locked set are locked together. The order of locked sets in each multi-group is also saved.
Default Values
You may notice that some variables have pre-filled values even though they are unlocked, these are known as default values. Default values are specified in the template when there is a single variable value that is used the majority of the time, but it is allowed to be customised if required by the user. For example, an invoice template may have large lettering at the top saying Invoice, but some companies or jurisdictions require invoices to explictily say Tax Invoice for legal reasons. In this case, the template may expose this variable to the user to allow it to be changed, but specify Invoice as the default value since this will be used the majority of the time. If you would like to override a default value, simply replace it with your own and lock the value so it is saved. Likewise, if you want the value to always be blank, rather than use the default, just remove the default value and lock the empty variable.
Submitting Document Data via Database
Submitting document data via database lets you create multiple documents at once using the same template. This is useful if you need a large batch of documents created as a regular operation, such as producing monthly invoices for customers, or you need to produce a one off communication, such as notifying clients of an upcoming event in a letter.
To submit document data using a database, click on the template you want to use in your Workshop, then select the Upload a Database tab at the top. You will be presented with a form to upload your database for document creation.
Each document produced from a database of document data is charged to the billing group of the account making the request and costs the same number of credits as creating the document manually.
Database Structure Specification
The database you upload must be in a specific format for Creodocs to read it. Primarily, the database must be a *.tsv tab-delimited file where each column is an individual variable and each row contains the document data for a separate document. This structure means that each cell in the database contains the document data for a specific variable within a specific document, with tab characters separating variable content.
The first row (line) of the database must contain variable ID names for all variables in the template selected. Variable IDs are the internal identifiers for each variable and are not the friendly variable names seen in the manual entry form. For multi-groups where multiple sets of the same variables can be submitted per document, you can specify each set by entering the group's variable IDs next to each other multiple times. For example, VAR1 VAR2 VAR3 VAR1 VAR2 VAR3
can make up 6 columns of the database where these three variables are in a multi-group.
The table below is laid out in the format of an example database to illustrate the requirements written above. It uses the variables from the example letter template created in the Creating a Template section.
SENDERNAME | SENDERJOBTITLE | TENANTNAME | TENANTADDR | TENANTADDR | TENANTADDR | INSPECTIONTIME | PREVINSPECTIONTIME | EXTRANOTES | SENDERCONTACTINFO |
---|---|---|---|---|---|---|---|---|---|
Cindy Kim | Senior Property Manager | Martin Jones | 388 Pleasant Lane | City, State | July 21 at 1pm | January 18 | 021 123 4567 | ||
Cindy Kim | Senior Property Manager | Rebecca Smith | Apartment 221 | 5 West Street | City, State | July 22 at 10am | January 11 | 021 123 4567 | |
Cindy Kim | Senior Property Manager | Hinata Adachi | Apartment 638 | 5 West Street | City, State | July 22 at 10:30am | December 8 | 021 123 4567 |
Optional variables can be left blank in the database but must be present as columns. You can see this in the table above for the optional EXTRANOTES variable where all three document rows have no data for this variable.
Multi-group variable sets that are required can be left blank, but only if at least one set has been entered for the row. This is because other rows in the database have content, so additional columns are required to accomodate it. An example of this is the multi-group containing the required TENANTADDR variable in the table above, which is present as 3 sets (columns) because the second and third rows have 3 sets for this variable each. However, the first row only has 2 sets of data for this variable and the third set is blank. The general rule is that all empty sets for multi-groups will be ignored in databases, but otherwise normal rules apply.
Variable data in your database must adhere to the corresponding variable types and lengths. This means data entered for a variable that only accepts boolean data can only have values of 'true' or 'false', a variable that only accepts integer data can only have values of whole numbers and so on. Maximum lengths of variables must also be respected.
Downloading an Automatically Generated Empty Database
To make the process of creating a database easier, you can download an automatically generated database file for every template. To do this, click on the template you want to use in your Workshop, then select the Upload a Database tab at the top. You will find a link to download a database template on the resulting page which will provide you a TSV file ready for populating with document content.
The first row of the database template file contains all the variable IDs in the document template in the required format. The second row contains an indication of whether each variable is required (must have content entered for it), to aid you in entering your document content on subsequent rows. This second row should be removed before submitting your database.
Multi-grouped variables are output 3 times side by side in the example database template. This is to indicate how to submit multiple sets only, you can increase or decrease the number of sets for each group as required.
Downloading Documents Produced Using a Database
Documents produced using a database are downloaded the same way as those produced using the manual entry form. The key difference is that the download itself will be a zip file containing all the documents produced instead of a single PDF file.
Submitting Document Data via API
The Creodocs API allows you to submit document data for a template and returns a URL to the document PDF when it is successful. This means you don't need to interact with the Creodocs website to create documents. This method is primarily useful for software developers who need to automatically create documents as part of another product or service.
All API requests are charged to the billing group of the account making the request and cost the same number of credits as creating the document manually.
API Specifications
The API uses the JSON format to structure requests and responses. To verify your identity when making an API request, you will need to generate an API key as described on the API Keys Support page. Creating a document requires you to send your Creodocs user ID (yours is ), the template ID of the document you'd like to create, your API key and the document data for each variable. API requests must be made via POST to https://www.creodocs.com/api/create under a data
key.
The table below details each of the required components of an API request and provides details on their expected values.
Attribute | Description | Allowed Values |
---|---|---|
user_id |
Your Creodocs user ID number | Must be a number |
template_id |
The template ID number you would like to use to create the document | Must be a number |
key |
Your secret API key | The key provided to you by Creodocs |
document_data |
Document data for all variables in the template | An object of keys and values where keys are template variable IDs and values are arrays of document data. Unless the variable is in a multi-group, the array must contain one element. All variables in each multi-group must contain the same number of elements. |
Example:
{
"user_id": 12,
"template_id": 52,
"key": "b70b53f2c9e09fa836410bed18126c38b497b660cd7fcc72a6",
"document_data": {
"NAME": [
"John Smith"
],
"DATE": [
"20/04/2020"
],
"PARAGRAPHS": [
"First paragraph text.",
"Second paragraph text."
],
"OPTIONALSIGNATURE": [
""
]
}
}
You can find an automatically populated template for making API requests for a given template under the Submit via API section of the Add Document Content page for the template.
Additional Document Data Specification Information
- All template variables must be included in the API request, even if they are not required and no data is being provided for them. In this case, the variable data should just be an empty string (i.e.
""
). - Only multi-grouped variables can have more than one set of content supplied. In this case, all other variables in the same group must have the same number of content sets supplied. For example,
VAR1
andVAR2
are in a group that allows multiple sets of content but onlyVAR1
is required. If you specify four sets of content forVAR1
, you must also specify four sets forVAR2
, even if they are empty strings. - All rules that normally apply to variable content (such as maximum length, type, disallowed characters, whether multiple sets of content are allowed, etc) apply for in API request. If document data submitted for any variable does not match the variable's requirements, your request will fail.
API Return Values
The API will return a JSON string containing three keys.
request_outcome
— will have a value of eithersuccess
orfailure
document_url
— if the request was asuccess
, the value will contain a URL to the created document, otherwise it will be an empty stringrequest_description
— if the request was afailure
, the value will contain the reason why, otherwise it will be an empty string
Example:
{
"request_outcome": "failure",
"request_description": "missing_input",
"document_url": ""
}
Try Submitting to the API
Test API requests can be made using dedicated software for this purpose, but if you would like to make a quick test request you can use the form below. Paste the entire JSON request object and press Submit to send your request.
Privacy Policy
Last updated on February 5, 2021.
This policy applies to creodocs.com, hereby referred to as Creodocs. Creodocs is operated by Creodocs Limited (NZBN 9429046066565), registered in New Zealand and located in Auckland, New Zealand.
Creodocs fundamentally believes in an ethical approach to privacy, where the only information collected is required for providing services, enabling features and complying with regulatory and legal requirements. Creodocs believes that analytics and data mining are distractions from creating a high quality product and refrains from these activities unless absolutely necessary to provide its services. Simply put, Creodocs is only interested in charging for creating documents, not in mining your personal information.
The sections below outline the major categories of information that Creodocs retains. Each details what information is collected, why it is collected, how it is stored and when it is removed, with the aim of being transparent about why the information is necessary.
Purchases and Billing
When you make a purchase of credits on Creodocs, your credit card information is not seen or stored by Creodocs. Payment processing is handled by Stripe and happens entirely on their infrastructure. Please refer to Stripe's Privacy Policy for more information on how your payment information may be stored and managed by Stripe.
A purchase and user membership history is retained for each billing group. For each purchase or grant of credits to a billing group, a usage history is stored summarizing which user used which template how many times at a given price, and when the last usage occurred. This information is stored to: enable a billing history for auditing and legal purposes, allow the billing group owner oversight into usage patterns and attribute responsibility in the case of issues or discrepancies down the line.
Purchase and usage information will be retained for as long as a billing group exists. A billing group owner may request the permanent deletion of the billing group history by contacting privacy@creodocs.com, but note that some record may still need to be retained by Creodocs for financial auditing and tax purposes.
Application Information
Application information refers to information you explicitly provide as you use Creodocs. For example, if you add a private template, Creodocs needs to store the template information, the template code and link your user account to the template as its owner. This category of information is required for Creodocs to provide its services as a web application where your state is saved in a central location. When this information is no longer required by you or Creodocs, it is permanently discarded.
Account Information Your Creodocs account is primarily identified by the email address used to create it. Your email address is used to communicate with you (see the Communication section) and will be visible to other users of Creodocs when you engage in a sharing activity, such as by being part of a billing group with other users or making use of a shared template. A history of email and password changes is retained for each account, for the purposes of support and identification of malicious activity.
Created Documents Documents created by Creodocs contain potentially sensitive information submitted for document variables. Due to this, all documents are retained for only 30 days, at which point they are automatically deleted without backups. You may delete documents you have created prior to their automatic deletion from the Data Submissions page for the template used.
Private Templates If you choose to add a private template to Creodocs, template information and code will be retained indefinitely so are you able to make use of it. You can permanently delete a private template at any time from its Template Settings page.
Document Variable Content Document variable content is retained as long as the created document exists (up to 30 days). If you choose to make use of the locked variables feature when manually submitting document content, Creodocs will retain your document content indefinitely in order to restore it the next time you use the template.
Application information will be retained while you remain a user of Creodocs, unless otherwise stated. If you no longer wish to be a user, or require specific information about you removed, please contact privacy@creodocs.com.
Passive Information (Logging and Cookies)
Passive information refers to information you implicitly provide when you interact with Creodocs. For example, when you log in, Creodocs needs to know who you are and that you are still logged in as you use the site—this requires your browser to automatically send a token Creodocs provided you when you logged in (known as a cookie). This category of information is required for basic usage statistics, diagnosing issues with the product, detecting and minimising malicious activity and to verify legitimate access to your account.
Access and Error Logs Creodocs retains webserver access and error logs containing metadata including: IP addresses (which may be used for rough geolocation), the page requested, referrer URL, information about the software making the request, the time of the request and whether the request was successful. These logs are retained for the purpose of basic analytics, diagnosing problems with the service and identifying malicious activity. Logs are retained indefinitely but only up to 6 months of logs are stored on the active Creodocs webserver(s).
Failed Request Logging If a request, such as attempting to log in, results in a failure, such as due to an incorrect username or password supplied, the event information is logged to a database. This will usually include the IP address of the requester, the time of the request, and may include the content of the request (passwords will not be saved in plain text). This information is used to automatically block malicious requests, such as attempted brute-forcing of a user's password, for identifying issues with the service and for support communication regarding problems encountered. This information will be deleted periodically and will not be stored for longer than 6 months.
Cookies When you log in to Creodocs, a token is saved on your device—known as a cookie—which allows Creodocs to know you are logged in. Every time you interact with the website, the cookie is automatically sent to tell Creodocs who you are and confirm you are still logged in. Creodocs does not store any other cookies on your computer, and the session cookies are removed when you log out or when they expire after several hours.
Communication
Creodocs will use the email address associated with your account to send important information regarding your account. This will typically be for important notices that require your interaction, such as when you are invited to a billing group, or when you explicitly request information, such as having a document you created emailed to you. From time to time, Creodocs may need to send important notices to all users regarding the product, such as breaking changes or major updates to this policy. Emails are sent using Amazon Simple Email Service. Please refer to the Amazon Web Services Privacy Policy for more information on how your email address may be stored and managed.
Support, Feedback or Other Direct Interactions
If you directly contact Creodocs for any purpose, such as to request support or report a problem, your written communication will be retained indefinitely. This will include at least: the communication, your email address and any information you provide (such as diagnostic information or logs). The purpose of this is for Creodocs to maintain a formal record of communication. This record can be useful to give context from previous interactions, enable collation of ongoing issues with the product or serve as a reference point in case of disputes.
You may request for your interactions to be permanently deleted by contacting privacy@creodocs.com.
Backups
Creodocs will retain backups of Application Information and private templates, for the expressed purpose of restoring the Creodocs platform in case of catastrophic failure. Backups will be retained for up to 6 months and may include information that you have explicitly deleted. For example, if you delete a private template on January 2, it will be immediately deleted, but a backup made on January 1 will contain your template and can be retained for up to 6 months. Backups are made as an insurance policy and will not be accessed except in exceptional circumstances.
Sharing of Collected Information
Creodocs employees and contractors may have access to collected information as required to perform their jobs. This is for purposes such as providing support, diagnosing problems and making improvements. Creodocs does not sell or disclose your personal information to any third party. Exceptions to this include: 1) disclosure as required by law to a law enforcement or government agency 2) to the credit card payment processor for accepting payments 3) to the email service provider for sending communications.
Updates to this Policy
This policy will be updated from time to time as Creodocs evolves. The date it was last updated is stated at the top of the policy. It is your responsibility to review the policy periodically to confirm your continued agreement. In the event of substantial changes to the policy, you may receive written communication to the email address associated with your account to alert you of the changes. Minor changes such as rewording or clarification will not trigger such communication.
Communication Regarding This Policy
If you have any questions or concerns regarding this policy, please contact privacy@creodocs.com.
Terms and Conditions
Last updated on February 18, 2021.
AGREEMENT TO TERMS
These Terms and Conditions constitute a legally binding agreement made between you, whether personally or on behalf of an entity ('you') and Creodocs Limited, NZBN 9429046066565, Auckland, New Zealand ('we,' 'us' or 'our'), concerning your access to and use of the creodocs.com website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the 'Site').
You agree that by accessing the Site, you have read, understood, and agree to be bound by all of these Terms and Conditions. If you do not agree with all of these Terms and Conditions, then you are expressly prohibited from using the Site and you must discontinue use immediately.
Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms and Conditions at any time and for any reason.
We will alert you about any changes by updating the 'Last updated' date of these Terms and Conditions, and you waive any right to receive specific notice of each such change.
It is your responsibility to periodically review these Terms and Conditions to stay informed of updates. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms and Conditions by your continued use of the Site after the date such revised Terms and Conditions are posted.
The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country.
Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.
The Site is intended for users who are at least 13 years of age. All users who are minors in the jurisdiction in which they reside (generally under the age of 18) must have the permission of, and be directly supervised by, their parent or guardian to use the Site. If you are a minor, you must have your parent or guardian read and agree to these Terms of Use prior to you using the Site.
INTELLECTUAL PROPERTY RIGHTS
Unless otherwise indicated, the Site is our proprietary property and all source code, databases, global document templates, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the 'Content') and the trademarks, service marks, and logos contained therein (the 'Marks') are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of New Zealand, foreign jurisdictions, and international conventions.
The Content and the Marks are provided on the Site 'AS IS' for your information and personal use only. Except as expressly provided in these Terms and Conditions, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.
Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.
Documents produced through use of the Site in adherence with these Terms may be used by you for any purpose and are not subject to the intellectual property rights described here.
USER REPRESENTATIONS
By using the Site, you represent and warrant that:
- all registration information you submit will be true, accurate, current, and complete;
- you will maintain the accuracy of such information and promptly update such registration information as necessary;
- you have the legal capacity and you agree to comply with these Terms and Conditions;
- you are not under the age of 13;
- not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site;
- you will not access the Site through automated or non-human means (except for the documented Application Programming Interface (API)), whether through a bot, script, or otherwise;
- you will not use the Site for any illegal or unauthorized purpose;
- your use of the Site will not violate any applicable law or regulation.
If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).
USER REGISTRATION
You may be required to register with the Site. You agree to keep your password confidential and will be responsible for all use of your account and password.
PROHIBITED ACTIVITIES
You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.
As a user of the Site, you agree not to:
- systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
- make any unauthorized use of the Site, including collecting email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
- use a buying agent or purchasing agent to make purchases on the Site.
- use the Site to advertise or offer to sell goods and services.
- circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
- engage in unauthorized framing of or linking to the Site.
- trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
- make improper use of our support services or submit false reports of abuse or misconduct.
- engage in any automated use of the system (excluding the documented Application Programming Interface (API)), such as using scripts to interact with the Site, or using any data mining, robots, or similar data gathering and extraction tools.
- interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
- attempt to impersonate another user or person or use the account of another user.
- sell or otherwise transfer your account.
- use any information obtained from the Site in order to harass, abuse, or harm another person.
- use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
- decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site.
- attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
- harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
- delete the copyright or other proprietary rights notice from any Content.
- copy or adapt the Site’s software, including but not limited to PHP, HTML, JavaScript, LaTeX, or other code.
- upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
- upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats ('gifs'), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as 'spyware' or 'passive collection mechanisms' or 'pcms').
- except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site.
- disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
- use the Site in a manner inconsistent with any applicable laws or regulations.
USER GENERATED CONTRIBUTIONS
The Site may invite you to chat, contribute to, or participate in blogs, message boards, online forums, and other functionality, and may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions").
Contributions may be viewable by other users of the Site. As such, any Contributions you transmit may be treated as non-confidential and non-proprietary. When you create or make available any Contributions, you thereby represent and warrant that:
- the creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
- you are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms and Conditions.
- you have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms and Conditions.
- your Contributions are not false, inaccurate, or misleading.
- your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
- your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
- your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
- your Contributions do not advocate the violent overthrow of any government or incite, encourage, or threaten physical harm against another.
- your Contributions do not violate any applicable law, regulation, or rule.
- your Contributions do not violate the privacy or publicity rights of any third party.
- your Contributions do not contain any material that solicits personal information from anyone under the age of 18 or exploits people under the age of 18 in a sexual or violent manner.
- your Contributions do not violate any federal or state law concerning child pornography, or otherwise intended to protect the health or well-being of minors;
- your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms and Conditions, or any applicable law or regulation.
Any use of the Site in violation of the foregoing violates these Terms and Conditions and may result in, among other things, termination or suspension of your rights to use the Site.
SUBMISSIONS
You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you.
You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions.
THIRD-PARTY WEBSITES AND CONTENT
The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content").
Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content.
Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms and Conditions no longer govern.
You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party.
You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites.
SITE MANAGEMENT
We reserve the right, but not the obligation, to:
- monitor the Site for violations of these Terms and Conditions;
- take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms and Conditions, including without limitation, reporting such user to law enforcement authorities;
- in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof;
- in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems;
- otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
PRIVACY POLICY
We care about data privacy and security. Please review our Privacy Policy posted on the Site. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms and Conditions. Please be advised the Site is hosted in Australia and developed in New Zealand.
If you access the Site from the United States, European Union, Asia, or any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in Australia and New Zealand, then through your continued use of the Site, you are transferring your data to Australia, and you expressly consent to have your data transferred to and processed in Australia.
Further, we do not knowingly accept, request, or solicit information from children or knowingly market to children. Therefore, in accordance with the U.S. Children’s Online Privacy Protection Act, if we receive actual knowledge that anyone under the age of 13 has provided personal information to us without the requisite and verifiable parental consent, we will delete that information from the Site as quickly as is reasonably practical.
COPYRIGHT INFRINGEMENTS
We respect the intellectual property rights of others. If you believe that any material available on or through the Site infringes upon any copyright you own or control, please immediately notify us using the contact information provided below (a 'Notification'). A copy of your Notification will be sent to the person who posted or stored the material addressed in the Notification.
TERM AND TERMINATION
These Terms and Conditions shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS AND CONDITIONS, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS AND CONDITIONS OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE YOUR ACCOUNT AND ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.
If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your email address, a fake or borrowed email address, or the email address of any third party, even if you may be acting on behalf of the third party.
In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.
MODIFICATIONS AND INTERRUPTIONS
We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time.
We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site.
We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors.
We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site.
Nothing in these Terms and Conditions will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.
GOVERNING LAW
These Terms and Conditions and your use of the Site are governed by and construed in accordance with the laws of New Zealand applicable to agreements made and to be entirely performed within New Zealand, without regard to its conflict of law principles.
CORRECTIONS
There may be information on the Site that contains typographical errors, inaccuracies, or omissions that may relate to the Site, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.
DISCLAIMER
THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES.
AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
LIMITATIONS OF LIABILITY
IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE 3 MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING.
INDEMNIFICATION
You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) your Contributions; (2) use of the Site; (3) breach of these Terms and Conditions; (4) any breach of your representations and warranties set forth in these Terms and Conditions; (5) your violation of the rights of a third party, including but not limited to intellectual property rights; or (6) any overt harmful act toward any other user of the Site with whom you connected via the Site.
USER DATA
We will maintain certain data that you transmit to the Site for the purpose of managing the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site.
You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.
ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES
Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing.
YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE.
You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.
MISCELLANEOUS
These Terms and Conditions and any policies or operating rules posted by us on the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms and Conditions shall not operate as a waiver of such right or provision.
These Terms and Conditions operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control.
If any provision or part of a provision of these Terms and Conditions is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms and Conditions and does not affect the validity and enforceability of any remaining provisions.
There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms and Conditions or use of the Site. You agree that these Terms and Conditions will not be construed against us by virtue of having drafted them.
You hereby waive any and all defenses you may have based on the electronic form of these Terms and Conditions and the lack of signing by the parties hereto to execute these Terms and Conditions.
CONTACT US
In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at: