Skip to content

Building Forms & Agreements

This article covers how to build, preview, publish, and send a Form or Agreement. If you are new to the feature, start with Introduction to Forms & Agreements for the difference between the two and the overall workflow.

Forms and Agreements let you send a customer a secure, personalized web link. The customer opens it in any browser (phone, tablet, or computer), fills in the information or signs the document, and taps Submit. Everything they enter is captured. Anything you mapped to the customer record is saved back automatically, and a neat PDF copy is filed under the customer’s Attachments — no chasing paper.

You build a template once, then send it to as many customers as you like.

Start here: which building block do I use?

Section titled “Start here: which building block do I use?”

A template is just a stack of items. There are only three kinds, and picking the right one is most of the job. Read this table before you build anything.

I want to…UseNotes
Show a heading, instructions, or contract wordingAdd TextThe customer reads it. They can’t type into it.
Ask one question and save the answerAdd FieldOne question, one answer, one place it gets saved.
Collect a second owner, spouse, property manager, or contractorAdd ContactsNever build people out of individual fields. See below.

This is where you design what the form or agreement looks like. Take it slowly; you only have to do it once.

  1. Open the Lists screen.
  2. Click the Forms/Agreements tab.
  3. Click New Form or New Agreement.

2. Fill in the template settings (the top section)

Section titled “2. Fill in the template settings (the top section)”

At the top of the editor you’ll set the basics:

  • Template name — the big title the customer sees at the top of their page. Make it something a homeowner would understand (“New Customer Information”), and check there’s no stray space at the front.
  • Description — the customer reads this too. It prints as the grey line directly under the title. Write it as a friendly one-line explanation, or leave it blank. It is not a private note to yourself.
  • Published — turn this on when the template is finished. Only published templates can be sent.
  • Active — leave this on. Turning it off (or using Archive on the template’s row) retires a template you no longer use without deleting it. Archived templates reappear in the list when you tick Show archived.
  • Requires signature — turn this on when the customer must sign. It’s normally on for an Agreement and off for a Form.
  • Requires provider countersignature (Agreements only) — turn this on when your company must sign the agreement too, after the customer. The customer’s copy is emailed only once you have countersigned. See Countersigning an agreement.
  • Expires (days) — how many days the link stays valid before it expires (14 by default).
  • Preview — see exactly what a customer would see, using a real customer’s data, without sending anything or publishing the template first. See Previewing your template below.
  • Tokens — a reference list, not a setting. See Text blocks and tokens below. Most templates never need it.

3. What the customer sees at the top of the page

Section titled “3. What the customer sees at the top of the page”

Four different things stack up at the top of the customer’s page, and each is edited somewhere different:

What they seeWhere it comes from
Your logo, company name, phone and emailCompany Settings — the same on every form you send
The big titleThe template’s Template name
The grey line under the titleThe template’s Description
Any wording of your ownA Text block you add as the first item

So if you want custom wording at the top of a particular form — a welcome paragraph, instructions, a deadline — add a Text item and drag it to the top.

Below the settings is the list of items that make up the document. Three buttons add them:

  • Add Text — a block the customer reads but does not fill in: headings, instructions, or the wording of your agreement. You can make text bold, add headings, and create lists.
  • Add Field — one box the customer fills in (and that can save back to the customer record).
  • Add Contacts — the section that shows the customer the people already on their record so they can update them and add new ones.

Drag the handle on the right of any item to reorder it. Click a row (or the pencil icon) to edit it, or the trash icon to delete it.

Use Text items as section headings to break a long form into chunks — “Security Information”, “HVAC”, “Mail Handling”. It makes the customer’s page and the finished PDF far easier to read.

For most intake forms, keep it simple:

  1. Add Text items for short section headings.
  2. Add Field items for property details, codes, preferences and notes.
  3. Add one Contacts block for owners, spouses, managers and service providers.
  4. Mark anything private as Sensitive.
  5. Click Preview as you go to check the layout — you don’t need to publish first. Once it’s ready, publish it and do one real send to yourself before sending it to customers.

When you add a Field, you’ll fill in a few things:

  • Label — the question the customer sees (e.g. “Front gate code”). This is also the only wording that appears in your notification email, so make every label unique. Two fields both called “Other comments” are impossible to tell apart later.

  • Help text — an optional hint under the label. Use it for examples.

  • Required — the customer can’t submit until they fill it in.

  • Field type — how the answer is typed in:

    TypeUse for
    textA short answer on one line
    textareaA longer, multi-line answer
    selectA dropdown — you supply the choices
    dateA date picker
    emailAn email address (the customer’s browser checks it looks valid)
    phoneA phone number

    If a question can only be answered yes or no, use select and give it Yes and No as the choices. You’ll get consistent answers instead of “yes”, “Yes please” and “only in winter”.

  • Writes back to — the important one. See the next step.

  • Merge key (optional) — leave blank. Advanced only; see Text blocks and tokens.

  • Sensitive (redact everywhere) — for private things like gate codes and alarm passwords. See Sensitive fields.

  • Choices, one per line — only appears when Field type is select. Type each option on its own line. A select field with no choices is broken; see below.

6. “Writes back to” — always a two-step choice

Section titled “6. “Writes back to” — always a two-step choice”

Writes back to tells the system where the customer’s answer gets saved. It is always two dropdowns, and the second one starts empty. Picking the first and forgetting the second is the most common way to break a template.

Step one — pick the destination:

ChoiceSaves the answer to
CustomerA field on the customer/property record
NoteOne of your customer notes
ContactA detail on one specific person you choose at send time
NoneNowhere — the answer only appears on the PDF

Step two — a second dropdown appears. You must pick from it.

  • Choose Customer → a Customer field dropdown appears (Customer Name, Property Address, Mailing Address, Key ID, Gate Code, Lockbox, Alarm Provider, Alarm Company Phone, Alarm Password, Alarm Disarm, Alarm Arm, Alarm Notes, Visit Frequency).
  • Choose Note → a Category dropdown appears, then a Description dropdown. Pick both.
  • Choose Contact → a Contact field dropdown appears (First Name, Last Name, Full Name, Email, Phone, Alt Phone).

A few examples:

QuestionGood write-back choice
”Front gate code”Customer → Gate Code
”Anything special we should know about the pool?”Note → the matching note category and description
”Do you agree to these terms?”None if you only need it on the PDF
”Update Jane’s phone number”Contact → Phone, then pick Jane when you send

You probably don’t need tokens. If you’re building an intake form — a list of questions for the homeowner to answer — you can skip this whole section. Tokens have nothing to do with collecting information.

What a token actually is: a short piece of code you type inside a Text block that gets swapped for real information when the customer opens their page. It’s a mail-merge. It only fills in things you already know — it never collects anything.

Here’s the whole idea in one example. You type this into a Text block:

This agreement is between {{company.companyname}} and {{customer.customername}},
for the property at {{customer.address}}, dated {{currentdate}}.

Bob Smith opens his link and reads:

This agreement is between Eye On LBI and Bob Smith, for the property at 12 Ocean Ave, Beach Haven NJ, dated 11-Aug-2026.

You wrote it once. Every customer sees their own details. That’s all tokens do.

The list of tokens is behind the Tokens button at the top right of the template editor. Click any one to copy it, then paste it into your text.

TokenFills in
{{currentdate}}Today’s date
{{company.companyname}}Your company name
{{company.coemail}}Your company email
{{customer.customername}}The legal first and last name of every property contact — each contact on the property’s Contacts list with Property Contact ticked — oldest first, joined with “and” in your company’s language (“Kim Smith and Joey Smith”). Falls back to the property name if the property has no property contact
{{customer.propertyname}}The property’s name, as entered on the property record
{{customer.address}}The property address
{{customer.mailingaddress}}The mailing address
{{customer.keyid}}The key ID
{{customer.visitrate}}The property’s Visit Rate (property › Billing tab › Rates & Terms)
{{subscription.subscriptionamt}}The amount of the property’s subscription
{{schedule.summary}}The property’s visit schedule, in words
{{note.<prompt>}}The property’s answer to one of your Notes Prompts. Use the prompt’s name in lower case, with spaces replaced by _ — “Annual Fee” is {{note.annual_fee}}

Three things to know:

  • Tokens only work inside Text items. Typing one into a field’s Label or Help text does nothing.
  • A token you get wrong just disappears. There’s no error message — it comes out blank. So {{customer.customersname}} (note the stray “s”) silently prints nothing. Always copy from the Tokens list rather than typing from memory, and always preview by sending one to yourself.
  • Codes and passwords can never be merged. Gate code, lockbox and alarm values always come out as XXX in your wording, no matter how you set the question up. This is deliberate and cannot be turned off.
  • {{customer.customername}} is the people, {{customer.propertyname}} is the property. If your agreement wording reads “between COMPANY and CUSTOMER,” use {{customer.customername}} — it prints every property contact by their legal first and last name, so a couple who both sign both appear. It does not use the contact’s Display Name. Add every signer as a contact and tick Property Contact; untick it for anyone who shouldn’t appear (a house manager, say). Use {{customer.propertyname}} only if you want the property’s own name to print instead of people’s names.
  • Templates you already had. Templates created before 30 September 2026 had {{customer.customername}} switched to {{customer.propertyname}} (unless you asked us to leave yours), so your agreements read exactly as before. To use the property contacts’ names instead, replace the token in your Text item.

One agreement can show each customer their own price. You don’t edit the agreement for each customer — you put the price on the property, and a token prints it.

A. Put the price on the property. Pick one:

  • Visit Rate — property › Billing tab › Rates & Terms › Visit Rate.
  • Subscription — the property’s monthly subscription amount.
  • Any other fee (an annual fee, a pool fee, a rental fee) — make a Notes Prompt called, say, Annual Fee, and fill in the amount on each property.

B. Type the token in your agreement wording. Type your currency symbol in front of it — the token prints the number only:

Your fee for each home watch visit is ${{customer.visitrate}}.
Your annual fee is ${{note.annual_fee}}.

C. Preview it with two different properties and check each shows its own price.

The customer can’t change a price shown this way — it’s part of the wording, not a box they type in. That’s why you use a token, not a Field, for a price.

8. Sensitive fields (gate codes, alarm passwords)

Section titled “8. Sensitive fields (gate codes, alarm passwords)”

Turn on Sensitive (redact everywhere) for anything private. Sensitive fields behave differently, on purpose:

  • On the customer-facing form page they show up blank, with a note that a value is already on file. This keeps secrets off a public web page.
  • If the customer leaves it blank, you keep the value you already had.
  • If they type a new value, it replaces the old one.
  • The saved PDF shows the answer as •••••• (private) instead of the real value.
  • Your notification email doesn’t show it either — it just says the field was “changed” or “unchanged”.

Sensitive does not remove the value from HWIT or force you to keep it in an external system. The live value remains on the customer/property record for authorized staff. To use it during a home watch, open the property in HWIT and select the Security tab.

Sensitive is OFF unless you turn it on. Choosing one of the gate, lockbox or alarm Customer fields switches it on for you automatically. Everything else you must set yourself, including:

  • Wi-Fi network passwords
  • Safe combinations
  • Garage keypad codes saved as a Note rather than a Customer field
  • Anything else you wouldn’t want printed in an email

A field saved as a Note is never made sensitive automatically, even if the question is obviously about a password. Check the switch.

You can turn on both Required and Sensitive — that’s the right setting for something like an alarm code you must have. The switch is relabelled “Required (only when nothing is on file)” to explain how it behaves: if you have nothing on file yet, the customer can’t submit without entering it. Once a value is on file, leaving it blank is accepted and keeps what you already had, so a customer is never made to re-type a code you already hold.

This is how you collect people. Click Add Contacts and you’re done — there is nothing to configure except an optional Intro text box.

On their page, the customer sees a card for each contact already associated with that customer/property. Property contacts are listed first, but service providers and other regular contacts can appear too. On each card they can update the first and last name, email, phone and alternate phone, and set the Relationship / role. For homeowner/property-contact cards, they can also tick whether that person Receives reports, Receives invoices, or gets Portal access.

They can also tap Add another contact to add someone new — a spouse, a second owner, a housekeeper, a preferred plumber. New contacts default to “Homeowner”; if the customer changes that description, they’re saved as a regular (non-property) contact.

Contacts block vs. a Contact field — these are different tools and the difference matters:

Contacts blockContact field (Writes back to → Contact)
Set-up neededNoneYou must pick which specific person it updates, every time you send it
Can the customer add a new person?YesNo
How many people?As many as they wantExactly one, chosen by you in advance
Good forSecond owners, spouses, contractors, anyoneRare — correcting one known contact’s phone number

For nearly everything, use the Contacts block.

When everything looks right, turn on Published at the top. Only published templates can be sent.

If the switch flips straight back off, a message appears at the bottom of the screen telling you what’s wrong. The system refuses to publish a template that would break for the customer, and it checks for:

  • No items at all — add at least one.
  • A field set to Customer or Contact with no column picked in the second dropdown.
  • A field set to Note with no Description picked.
  • A select field with no choices typed in.
  • An Agreement that doesn’t require a signature and electronic consent.

Read the message, fix the named field, and try again.

You don’t have to send anything, or even publish the template, to see how it looks. There are two places to do it:

From the template editor (fastest, and works on an unpublished draft):

  1. Click Preview at the top of the editor, next to Tokens.
  2. Search for and pick a customer whose real information you want to preview with.
  3. If the template has any Contact fields, assign a contact for each one — same as the Send dialog. (Contacts blocks need nothing.)
  4. Click Open preview. A new tab opens showing exactly what that customer would see — your wording, their real non-sensitive information filled in, and the signing step for an Agreement.

From the Send dialog: the same Preview button appears there too, using whichever customer and template you’ve already picked — a quick final check right before you actually send.

The preview page is clearly marked and is view-only. Nothing you do on it is saved anywhere, and the link stops working after 30 minutes on its own.

Run through this once. It catches nearly every problem people hit.

  • Template name has no stray space at the front, and reads well to a homeowner.
  • Description reads well to a homeowner (they see it), or is blank.
  • Every field label is unique — no two “Other comments”.
  • Every field’s second dropdown is filled in.
  • No two fields point at the same Customer field, Note, or Contact field.
  • Every select field actually has choices typed in.
  • Every password, code and combination has Sensitive turned on.
  • Only one Contacts block.
  • No individual fields collecting a second person’s name or email — use the Contacts block.
  • Yes/no questions are select, not free text.
  • Published is on.
  • You used Preview to check the layout with a real customer’s data.
  • You sent a real test to yourself and filled it in end to end.

That last one is worth the five minutes every single time.

  1. Open the customer’s screen.
  2. Go to the Forms & Agreements tab.
  3. Click Send Form / Agreement.
  4. Pick the template, confirm the customer’s email address, and click Send.

If your template contains any Contact fields, an Assign contacts section appears here and you must choose which person each one updates before it will send. (Contacts blocks need nothing.)

The customer gets an email with a button to open their personalized link. That same tab keeps a history of everything you’ve sent, with its status:

StatusMeaning
SentEmailed, not opened yet
OpenedThe customer has opened the link
ProcessingThey’ve hit Submit and it’s being saved
Awaiting countersignatureThe customer has signed; your company still needs to countersign
SubmittedDone
ExpiredThe link ran out of days before they finished

Each row also has a Resend fresh link button. Use it if the link expired or the customer lost the email — it issues a new link and stops the old one working.

Once the customer taps Submit:

  • Their mapped answers and contact updates are saved to the customer record.
  • A PDF copy is filed under the customer’s Attachments, in a Forms folder (for forms) or an Agreements folder (for signed agreements).
  • You receive an email letting you know it’s done, listing what changed.
  • For an Agreement, the customer is emailed a PDF copy of the signed agreement. If the template requires a provider countersignature, that email waits until you have countersigned (see the next section), and your notification email tells you a countersignature is needed.

If anything couldn’t be saved onto the customer record — for example a field that points at a note you deleted after sending — that email shows an orange warning box listing exactly which answers to enter by hand. The answers are never lost; they’re always in the PDF and the form history.

Countersigning an agreement (your signature)

Section titled “Countersigning an agreement (your signature)”

Some agreements need to be signed by both parties. Turn on Requires provider countersignature in the agreement’s template settings, and every agreement sent from that template works like this:

  1. The customer signs first, exactly as before. Their page tells them your company will countersign and email them the fully signed copy.
  2. You’re notified. The “Agreement signed” email says your countersignature is needed, and the agreement shows Awaiting countersignature on the customer’s Forms & Agreements tab. It also counts as outstanding on the Home dashboard.
  3. Countersign. On that row, click Countersign. Check your name, tick both statements (electronic signing consent, and that you sign on behalf of your company), draw your signature, and click Countersign.
  4. Done. A Provider Countersignature page is added to the end of the signed PDF, the PDF in the customer’s Attachments is updated, the status changes to Submitted, and the customer is emailed the fully signed agreement as a PDF attachment.

Good to know:

  • Who can countersign: Admin and Full Access users, the same people who can send forms and agreements.
  • The customer’s pages are never changed. Your countersignature is added as an extra final page. That page records who countersigned, their email address, the date and time, the device used, and a fingerprint (SHA-256) of the document exactly as the customer signed it.
  • You can countersign after the link has expired. Expiry only limits the customer’s link.
  • Only in the web app. Countersigning isn’t available in the FlutterFlow desktop app, which shows these agreements as Submitted.
  • If the email to the customer can’t be sent, the agreement is still countersigned, and you’ll see a message saying so. Open the PDF and send it to the customer yourself.

Do I have to build a new form for every customer? No. You build a template once and send it to as many customers as you want.

Can I upload my own contract (PDF or Word)? No. Open your contract, copy the wording, and paste it into Text items in a new Agreement. Then replace the parts that change — names, address, prices — with tokens.

Can I change the price or the wording for one customer before I send it? There’s no editing step when you send. Instead:

  • Different prices: put each property’s price on the property and use a token. See Different prices for each property.
  • Different clauses or wording: make a copy of the template (next question), change the copy, publish it, and send that one. For example, keep “Standard Agreement” and “Agreement with Pool Care”.

Each agreement is saved exactly as it was when you sent it. Changing the template later never changes agreements you’ve already sent.

Can I copy an existing template instead of starting over? Yes. Open the template and click Duplicate at the top of the editor. You get a full copy named ”…(Copy)”, unpublished, and it opens straight away so you can edit it. This is the safest way to try changes to a template you’re already sending out.

Can I see what the customer will see? Yes — click Preview at the top of the template editor (or in the Send dialog), pick a customer, and it opens exactly what that customer would see in a new tab. It works even before the template is published, nothing you do on it is saved, and it’s the fastest way to check your work as you build. See Previewing your template above. For a full end-to-end test — including the PDF and notification email — send it to yourself once before it goes out to real customers.

Can the customer complete it on their phone? Yes. The link works in any web browser, and the signature pad works with a finger.

What does the customer do differently for an Agreement? They read the agreement, type their name and email, accept the electronic signing consent, confirm they agree, draw their signature, and tap Submit. The standard signing wording is already filled in when you create an Agreement.

How do I add a second homeowner, or a spouse? Add a Contacts block. Do not build fields like “Second owner name” and “Second owner email” — the Contacts block already does this properly, lets the customer add as many people as they like, and saves each one as a real contact on the record. Individual fields cannot create a new person.

Where do I put an email address? In the Contacts block. There is no email option under Customer because emails belong to people, not properties.

I already added second-owner fields. What should I do? Delete them and add a Contacts block. If any of them are set to write to Customer Name, delete those first — every one of them overwrites the customer’s name when the form is submitted.

What’s the difference between the Contacts block and a Contact field? The block shows the contacts already on the customer/property record and lets the customer edit them and add new ones, with no set-up. A Contact field updates one single person that you choose in the Send dialog, every time you send, and can’t add anybody. Use the block.

Can I have two Contacts blocks — one for family, one for contractors? No. Only the first one appears; the second is silently ignored. Put both sets of instructions in the first block’s Intro text.

The customer added their plumber — will that clutter my property contacts? No. New contacts default to “Homeowner”; if the customer changes the description to something else (Plumber, HVAC, Landscaper), they’re filed as a regular contact rather than a property contact. They may still appear in the Contacts block next time because the block shows all contacts for that customer.

Do I need tokens? Almost certainly not. If you’re collecting information from the homeowner, skip them entirely. They’re for putting details you already have into wording the customer reads — mostly used in agreements.

Where do tokens go? Inside a Text item only. Typing one into a field’s Label or Help text does nothing.

I typed a token and nothing appeared. A token that isn’t spelled exactly right comes out blank — there’s no error message. Copy it from the Tokens button instead of typing it, and check for a missing {{ }} or a stray letter.

Can I merge a gate code or alarm password into my text? No. Those always print as XXX, on purpose, and it can’t be turned off.

What’s a Merge key for? Repeating a field’s answer elsewhere in your wording. It’s an advanced option that almost no template needs. Leave it blank.

Can I edit the header? Depends which part. Your logo, company name, phone and email come from Company Settings and are the same on every form. The big title is the Template name. The grey line under it is the Description. For any other wording, add a Text item and drag it to the top.

Is the Description private? No. The customer reads it, right under the title. Don’t use it for notes to yourself.

Can I add my own headings and sections? Yes — use Text items. Long forms are much easier to fill in when they’re broken into sections.

My dropdown is empty except for ”— select —”. The field has no choices. Edit it and type your options into Choices, one per line. If the field is also Required, an empty dropdown makes the form impossible to submit — the customer can never finish it.

Why won’t the Published switch stay on? Something in the template would break for the customer. A message at the bottom of the screen names the problem — usually a field missing its second dropdown, or a dropdown with no choices. Fix it and try again.

Why did the customer’s name get replaced with something odd? Because more than one field was pointing at Customer Name. When two fields write to the same place, the last one wins. Check that each destination is used by only one field.

Can I make an alarm or gate code mandatory? Yes — turn on both Required and Sensitive. A customer who has nothing on file must enter it; a customer whose code you already hold can leave it blank and still submit, and you keep the code you had.

Should I mark a Wi-Fi password Sensitive? Yes. Anything you wouldn’t want printed in an email needs the Sensitive switch turned on by hand. Only the gate, lockbox and alarm Customer fields switch it on for you — a password saved as a Note never does.

The customer form says a sensitive value is protected. How do I use it during a home watch?

Open the property in HWIT and select the Security tab. The value is still available there to authorized staff. It is protected from the customer-facing form, PDF, and notification email; it is not meant to be retrieved from outside HWIT.

Is a sensitive value removed from the property record because it is redacted?

No. Redaction applies to public/customer-facing outputs and notifications. The live value remains in HWIT’s customer/property record for authorized staff.

Can I turn a Form into an Agreement? No. That’s fixed when you create the template. Create a new Agreement instead.

I already have some of this information. Will the customer see it? Yes — non-sensitive fields are pre-filled so the customer only has to correct what’s changed. Any field you marked Sensitive is shown blank for security, with a note that a value is already on file.

What if the customer never opens the link? The link expires after the number of days you set (14 by default). Use Resend fresh link on the history row to send a new one.

I don’t see Send or Resend. Those buttons are only shown to users who are allowed to send forms and agreements. Ask an admin to send it for you or update your user role.

Can a link be used more than once? For a Form, yes — the customer can go back and submit again any time before it expires, and the latest submission replaces the previous one. For an Agreement, no — once it’s signed, it’s final. To get a new signature, send it again.

If I change a template, does it change forms I’ve already sent? No. A form the customer is filling out uses the version that existed when you sent it. Your changes apply to future sends only.

Where do signed agreements go? Into the customer’s Attachments, under the Agreements folder, as a PDF with a signature certificate page recording the date and time signed, the email it was sent to, and the signature itself. If you countersigned, the PDF ends with a Provider Countersignature page.

Does the customer get a copy of the signed agreement? Yes. Every agreement ends with an email to the customer with the signed PDF attached. It goes to the email address they signed with and to the address(es) the agreement was sent to. Without a countersignature it’s sent as soon as they sign. With one, it’s sent as soon as you countersign.

Can we, the provider, sign the agreement too? Yes. Turn on Requires provider countersignature in the template, then use Countersign on the customer’s Forms & Agreements tab after the customer has signed. See Countersigning an agreement.

I turned on countersignature, but an agreement I already sent doesn’t ask for it. An agreement uses the template as it was when you sent it. Use Resend to send it again with the current settings. The customer will need to sign again.

The email said some answers couldn’t be saved. Did I lose them? No. They’re in the PDF and in the form history. The warning means the answer couldn’t be written onto the live customer record — usually because the note it pointed at was deleted after the form went out. Enter those by hand, then fix the template.