> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hiveinspect.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Placeholders: Fill In Client, Inspection and Link Details

> Use placeholders like {{{client_first_name}}} in Hive Inspect emails, texts and agreements. See what each one prints and where each of the 7 links goes.

In the dashboard: **Business Tools → Placeholders**. In editors: the **Insert Placeholder** button.

A **placeholder** is a short code that Hive swaps for real details when it sends a message. You write `{{{client_first_name}}}` once in an email, and every client gets their own name. The same works for the property address, the inspection date, the price, your company details, and links to pay, sign or view the report.

For example, this automation email:

> Hi `{{{client_first_name}}}`, your inspection at `{{{property_address}}}` is booked for `{{{inspection_date}}}` at `{{{inspection_time}}}`. Please sign your agreement here: `{{{customer_agreement_link}}}`

reaches the client as:

> Hi Jordan, your inspection at 1420 Maple Ave, Austin, TX 78745 is booked for October 22, 2026 at 09:00 AM CDT. Please sign your agreement here: View Agreement

Every placeholder has three curly braces on each side, is written in lowercase, and uses underscores instead of spaces.

## The Placeholders page

Go to **Business Tools** and click the **Placeholders** card. The page lists every placeholder you can use, with a short description and a copy button.

![The Placeholders page: 110 dynamic placeholders for emails, agreements and templates. A search box, Search placeholders by name, value or description, and category buttons All 110, Links 7, Client 6, Realtors 15, Other Contacts 30, Property 12, Inspection 24, Company 9, Dates 1 and Custom Fields 6. Below, the Links section, Quick-access URLs for portals, payments and agreements, with seven cards: Customer Reports Portal, Inspection Review Link, Add-ons Upsell Link, Reports, Payment Link, Customer Agreement Link and Invoice Link, each with its placeholder and a copy button](https://mintcdn.com/hiveinspect-43c85ed1/UHWvWheRMlSc4ZxQ/images/how-tos/placeholders-page.png?fit=max\&auto=format\&n=UHWvWheRMlSc4ZxQ\&q=85\&s=3b020722293ec69a9515b7c0a047d88d)

* **The number at the top** is how many placeholders you have: 104 built-in ones plus one for each of your [custom fields](/how-tos/custom-inspection-fields).
* **Category buttons** show one group at a time: **Links**, **Client**, **Realtors** (agents and transaction coordinators), **Other Contacts**, **Property**, **Inspection**, **Company**, **Dates** and **Custom Fields**. **All** shows everything.
* **Search** looks through names, placeholders and descriptions. It shows **Showing 16 of 110 placeholders**, for example. Click the **X** to clear it.
* **The copy button** copies the placeholder. You see **Copied to clipboard**, and the button turns into a check mark for a moment. Paste it where you want the detail to appear.
* **Image** marks the three placeholders that insert a picture: the company logo, the inspector's signature and the inspector's photo.

![The search box with agent typed in. The text Showing 16 of 110 placeholders appears under the category buttons, and the Links section now shows only the Reports card with \{\{\{agent\_reports\_portal\_link}}}, followed by the Realtors section with 10 matches](https://mintcdn.com/hiveinspect-43c85ed1/UHWvWheRMlSc4ZxQ/images/how-tos/placeholders-search.png?fit=max\&auto=format\&n=UHWvWheRMlSc4ZxQ\&q=85\&s=0a38ea3ab48da59843a9c8f3860e4a19)

The page is for looking things up. You don't have to copy from it: the **Insert Placeholder** button in the email, text and agreement editors lists the same placeholders. See [Add a placeholder to a message](#add-a-placeholder-to-a-message).

## The 7 links

The **Links** category holds the placeholders that send people somewhere: to the client portal, a payment page, an agreement or the invoice. Each one builds a link for **that inspection**, so one automation works for every job.

How a link looks depends on where you put it:

* **In an email**, it becomes clickable text, such as **Pay here** or **View Agreement**. You can't change the words, so write your sentence around them, for example "To pay now, click `{{{payment_link}}}`."
* **In a text message**, it becomes the full web address, because texts can't show clickable words.
* **In an agreement**, it becomes clickable text, the same as in an email.

| Placeholder | Shows in an email as | Opens | For |
| - | - | - | - |
| `{{{customer_reports_portal_link}}}` | Customer Reports Portal | The client portal sign-in page | Clients |
| `{{{customer_inspection_link}}}` | Inspection Review Link | The inspection review page: order details, add-ons, accept a quote | Clients |
| `{{{addons_upsell_link}}}` | Add Additional Services | The same inspection review page | Clients |
| `{{{agent_reports_portal_link}}}` | Reports | The reports for this inspection, with no sign-in | Agents and others |
| `{{{payment_link}}}` | Pay here | The payment page with the amount due today | The client who pays |
| `{{{customer_agreement_link}}}` | View Agreement | The agreements for this inspection, ready to sign | Clients |
| `{{{invoice_link}}}` | View Invoice | The current invoice PDF | Anyone |

One more link sits in the **Inspection** category: `{{{report_pdf_links}}}`, a link to each report PDF. See [Report PDF Links](#report-pdf-links-report_pdf_links).

### Which link should I use?

| You want the person to… | Use |
| - | - |
| Accept a quote and pick a date | `{{{customer_inspection_link}}}`. See [Send a quote](/how-tos/send-a-quote). |
| Add more services before the inspection | `{{{addons_upsell_link}}}`. See [Add-on upsell emails](/how-tos/add-on-upsell-emails). |
| Sign the agreement | `{{{customer_agreement_link}}}` |
| Pay | `{{{payment_link}}}` |
| See the invoice or a receipt | `{{{invoice_link}}}` |
| (Client) see the report, sign and pay in one place | `{{{customer_reports_portal_link}}}` |
| (Agent) see the report without signing in | `{{{agent_reports_portal_link}}}` |
| Open the PDF straight away | `{{{report_pdf_links}}}` |

> [!TIP]
>
> A good **Report Published** email to the client has three links: `{{{customer_agreement_link}}}` and `{{{payment_link}}}` in case they haven't signed or paid yet, and `{{{customer_reports_portal_link}}}` for the report. For the agent, use `{{{agent_reports_portal_link}}}`.

### When reports open

Most links lead to the report sooner or later, and the same rule decides when a report opens. A report opens only when all three are true:

1. **The report is published.**
2. **The inspection is paid.** An inspection with nothing to pay (\$0.00 due) counts as paid. If you billed part of the price to someone else with **Add Invoice**, every part must be paid.
3. **Every agreement on the inspection is signed.** An inspection with no agreements passes this step.

To open a report early, or keep it locked, use **Manual Lock Override for Reports** on the inspection. See [Manual lock override](/how-tos/inspection-quick-actions#manual-lock-override-for-reports). Bank transfers count as paid when the client starts them, unless you turned on **Mark payment as paid only when ACH settles** in your [payment settings](/how-tos/payment-settings).

The rule is the same for clients and agents.

### Customer Reports Portal (`{{{customer_reports_portal_link}}}`)

**Shows as:** Customer Reports Portal. **Opens:** reports.hiveinspect.com, the client portal's sign-in page.

This link isn't tied to one inspection. It opens the portal's front page, where the client signs in with their email:

![The client portal sign-in page: View your inspection reports. Enter the email address used to book your inspection. An Email Address box and a blue Continue button. Below: Don't have any reports yet? Contact your inspector to get started.](https://mintcdn.com/hiveinspect-43c85ed1/UHWvWheRMlSc4ZxQ/images/how-tos/placeholders-portal-signin.png?fit=max\&auto=format\&n=UHWvWheRMlSc4ZxQ\&q=85\&s=828f19bc21e37193ad7581d192b64fa0)

1. The client types the email address you have on the inspection and clicks **Continue**. There's no password and no code.
2. They see **Your Inspections**: every inspection booked with that email, grouped by inspection company. It shows the last 30 days first, with **Show older inspections** below.
3. Each inspection has buttons for what's left to do: **Sign Agreements** and **Make Payment** while those are outstanding, then **View Details** and **Report**.

The side menu has **Order Details**, **Agreements**, **Payments**, **Reports**, **Additional Docs** and **FAQs**, so the client can do everything in one place. The browser remembers them for 14 days.

* **Good for:** clients, every time. It's the most complete link, and it stays valid forever.
* **If the email doesn't match:** they see **We couldn't find any inspection reports for…**. They must use the email that's on the inspection. Fix the contact's email if it's wrong.
* **Who sees inspections here:** contacts on the inspection as **Customer**, **Buyer Agent**, **Transaction Coordinator**, **Insurance Agent** or **Sub Contractor**. A contact who is only the listing agent sees no inspections. Send listing agents `{{{agent_reports_portal_link}}}` instead.

More about the portal: [Client portal FAQ](/faq/client-portal).

### Inspection Review Link (`{{{customer_inspection_link}}}`)

**Shows as:** Inspection Review Link. **Opens:** dashboard.hiveinspect.com/inspection/… for this inspection. No sign-in.

This is the client's page for the order itself. It's the link in your quote emails, and the same page **Client Review** opens under [Quick Actions](/how-tos/inspection-quick-actions). What the client sees depends on the inspection's status:

| Status | What the client sees |
| - | - |
| **Review** (quote sent) | **Your Inspection Proposal** with the property, contacts, add-ons and **Pricing Summary**, and a green **Accept and Pick a Date** button. |
| **Draft** | **Inspection Not Available Yet**. If the client already accepted a quote but has no date yet, the page sends them to the booking page to pick a time. |
| **Waiting** | **Awaiting Confirmation**: their requested time is waiting for you to confirm it. |
| **Confirmed** | **Inspection Confirmed** with the date and time, the property address and the inspector, and an **Open Reports Portal** button. |
| **Canceled** | **Inspection Canceled**. Nothing can be changed. |

On the **Review** and **Confirmed** pages the client can:

* **add or remove add-ons** with **Add / Remove**, then **Save changes**. Only add-ons with **Allow Upselling** turned on are listed. The price updates straight away, with no approval from you.
* **edit contact details** with **Edit Details**, and add a customer, buyer agent or listing agent.
* **see the property details**, but not change them.

The page has no agreement signing and no payment. Send `{{{customer_agreement_link}}}` and `{{{payment_link}}}` for those.

To stop clients changing add-ons after booking, turn on **Lock services and add-ons after booking** in [Org Settings](/settings/organization-settings#client-order-changes). Clients then see **To change your order, please contact** your company.

### Add-ons Upsell Link (`{{{addons_upsell_link}}}`)

**Shows as:** Add Additional Services. **Opens:** the same inspection review page as `{{{customer_inspection_link}}}`.

The two links go to the same place. Only the words in the email are different, so use this one when the email is about adding services. The client clicks **Add / Remove**, picks the add-ons and clicks **Save changes**.

* Only add-ons with **Allow Upselling** turned on are offered. You set it on each add-on in [Services & Fees](/how-tos/add-on-services).
* Pair it with `{{{remaining_add_ons_services}}}`, which lists the add-ons the client hasn't added yet.
* With **Lock services and add-ons after booking** on, the link still works, but a confirmed inspection's add-ons can't be changed. Turn the lock off if you send upsell emails.

See [Add-on upsell emails](/how-tos/add-on-upsell-emails).

### Reports (`{{{agent_reports_portal_link}}}`)

**Shows as:** Reports. **Opens:** the Reports page for this inspection on reports.hiveinspect.com. No sign-in.

This is the agent's link. It goes straight to this inspection's reports without asking for an email.

* Each published report has **View on Web** (the interactive report) and **View PDF** (full or summary PDF). Agents can build a repair request from the web report. See [Agent portal](/inspections-and-reports/agent-portal).
* [Additional documents](/faq/client-portal#give-clients-extra-documents) you added show here too.
* **Reports still follow [the rule above](#when-reports-open).** If the client hasn't paid or signed yet, the agent sees **Payment Required** or **Agreement Pending** on the report, and can't pay or sign from this page.
* **Hive records who opened it.** In automations and in Compose Email, each recipient gets their own copy of the link, so [Portal Activity](/how-tos/inspection-quick-actions) shows which agent viewed the report. It never signs anyone in.

> [!WARNING]
>
> Don't use this link for clients. It doesn't show the **Make Payment** and **Sign Agreements** buttons, so a client who still has to pay or sign gets stuck. Send clients `{{{customer_reports_portal_link}}}`.

### Payment Link (`{{{payment_link}}}`)

**Shows as:** Pay here. **Opens:** reports.hiveinspect.com/pay/… for this inspection.

The link works out the amount due **at the moment it's clicked**. If you change the price after the email goes out, the client still pays the right amount.

1. The client sees **Preparing your payment** for a moment.
2. The payment page shows **Amount Due** (or **Balance Due** and the amount already paid) and **View Invoice** if there's an invoice.
3. They pick a way to pay from the methods you turned on: **Pay by Card**, **Bank Transfer**, **Buy Now, Pay Later** (Affirm), **Pay at Closing** or **Pay Another Way**.
4. Card, bank and Affirm payments go through Stripe's secure checkout. Afterwards they see **Payment Successful!**.

The client always pays the whole amount still due. They can't choose a smaller amount, and there's no tip option. If you charge a technology fee on cards, the page shows it. See [Technology fee](/how-tos/technology-fee).

After the payment, Hive marks the inspection paid, rebuilds the invoice as paid, runs your **Payment Received** automations, and opens the reports if the agreements are signed too.

* **Nothing is owed:** the page says **This inspection has already been paid in full**. It also says this on an inspection that costs \$0.00.
* **The rest is billed to someone else** with **Add Invoice**: the client sees **Nothing is due from you right now**. The other person pays with the link in their own invoice email.
* **Stripe isn't connected:** card, bank and Affirm show as not available. Connect Stripe in [payment settings](/how-tos/payment-settings).

### Customer Agreement Link (`{{{customer_agreement_link}}}`)

**Shows as:** View Agreement. **Opens:** the **Agreements** page for this inspection on reports.hiveinspect.com. No sign-in.

The page lists each agreement with **Pending** or **Signed**:

1. The client clicks **Sign Agreement**.
2. A **Review Details** box shows the property, the client names, the services and the total price. They click **Continue to Agreement**.
3. They read the agreement, type their **Full Name**, fill in any initials boxes, and draw their signature with a finger, mouse or trackpad.
4. They click **Sign Agreement**. If you turned off [Require User Signature for Agreements](/settings/organization-settings#agreement-signature-requirement), they don't draw anything and click **Submit Agreement**.

A signed agreement shows **View Agreement**, which opens the signed PDF.

* **One signature covers the inspection.** When any client signs, the agreement is marked signed for everyone. If two buyers must both sign, check the signed PDF, or ask them to sign at the inspection.
* **No agreements on the inspection:** the page says **No Agreements Available**. The link does no harm, and reports aren't held back by agreements.
* If money is due, the page also shows a **Payment Required** banner.

See [Agreements](/business-tools/agreements).

### Invoice Link (`{{{invoice_link}}}`)

**Shows as:** View Invoice. **Opens:** the invoice PDF.

* **It always opens the current invoice.** Each click fetches the latest version, so after the client pays, the same link shows the paid invoice. Old emails never show an out-of-date invoice, and the link doesn't expire.
* **It's blank until the inspection has an invoice.** Hive creates the invoice when the inspection is confirmed, so in a quote or a booking-request email this placeholder prints nothing.
* Anyone with the link can open it, so it's handy for agents and lenders too.

See [Show and regenerate the invoice](/how-tos/fees-and-payments).

### Report PDF Links (`{{{report_pdf_links}}}`)

This link is in the **Inspection** category, not **Links**.

**Shows as:** Report PDF 1, Report PDF 2… one link per report on the inspection. In a text message, each one is on its own line with its web address. It's blank if the inspection has no reports.

Each link checks [the rule above](#when-reports-open) when it's clicked:

| When clicked | What happens |
| - | - |
| The report can open | **Opening your report…**, then the PDF opens. |
| Payment is due | **Payment required**, then the payment page. The PDF opens after they pay and click the link again. |
| An agreement isn't signed | **Agreement required**, then the **Agreements** page, where they can sign. The PDF opens after they sign and click the link again. |
| You locked the report | **Report unavailable**. |
| Not published yet | **Report not ready yet**. |

The link itself never expires.

## Every other placeholder

The value comes from the inspection the message is about. If the detail is empty, the placeholder prints nothing, so you never see blank braces. A few have a fallback, listed below.

### Client

| Placeholder | Prints |
| - | - |
| `{{{client_first_name}}}` | The client's first name. With two clients: "Jordan & Sam". |
| `{{{client_last_name}}}` | Last name(s) |
| `{{{client_full_name}}}` | Full name(s): "Jordan Taylor & Sam Lee" |
| `{{{client_email}}}` | Email(s), separated by commas |
| `{{{client_phone}}}` | Phone number(s), as (512) 555-0142 |
| `{{{customer_initials}}}` | The first client's initials, such as "J T". In an agreement, it becomes a box the client fills in when signing. |

"Client" means the contacts with the **Customer** role on the inspection. It never changes with the person the email is sent to.

### Realtors and Other Contacts

Each contact role on the inspection has five placeholders: first name, last name, full name, phone number and email. The pattern is the role, then the detail:

| Role | Placeholders |
| - | - |
| Buyer's agent | `{{{buyer_agent_first_name}}}`, `{{{buyer_agent_last_name}}}`, `{{{buyer_agent_full_name}}}`, `{{{buyer_agent_phone_number}}}`, `{{{buyer_agent_email}}}` |
| Listing agent (also seller's agent) | `{{{listing_agent_first_name}}}` … `{{{listing_agent_email}}}` |
| Transaction coordinator | `{{{transaction_coordinator_first_name}}}` … `{{{transaction_coordinator_email}}}` |
| Sub contractor | `{{{sub_contractor_first_name}}}` … `{{{sub_contractor_email}}}` |
| Insurance agent | `{{{insurance_agent_first_name}}}` … `{{{insurance_agent_email}}}` |
| Lender | `{{{lender_first_name}}}` … `{{{lender_email}}}` |
| Builder | `{{{builder_first_name}}}` … `{{{builder_email}}}` |
| Attorney | `{{{attorney_first_name}}}` … `{{{attorney_email}}}` |
| Title company | `{{{title_company_first_name}}}` … `{{{title_company_email}}}` |

* Two people with the same role are joined: "Morgan Lee & Casey Diaz".
* The **Others** contact role has no placeholders.
* If a contact has a stand-in email that Hive made because you didn't have their real one, the email placeholder prints nothing.

### Property

| Placeholder | Prints |
| - | - |
| `{{{property_address}}}` | The full address on one line: "1420 Maple Ave, Austin, TX 78745" |
| `{{{property_street}}}` | The street only: "1420 Maple Ave" |
| `{{{property_unit}}}` | The unit, suite or apartment number |
| `{{{property_city}}}` | City |
| `{{{property_state}}}` | Two-letter state: "TX" |
| `{{{property_zip}}}` | ZIP code |
| `{{{property_country}}}` | Two-letter country, "US" if none is set |
| `{{{property_type}}}` | Property type, such as Single Family or Condo |
| `{{{square_footage}}}` | Square footage |
| `{{{year_built}}}` | Year built |
| `{{{bedrooms}}}` | Number of bedrooms |
| `{{{bathrooms}}}` | Number of bathrooms |

### Inspection

| Placeholder | Prints |
| - | - |
| `{{{inspection_date}}}` | "October 22, 2026", in your company's time zone. **To be scheduled** if there's no date. |
| `{{{inspection_time}}}` | "09:00 AM CDT", in your company's time zone |
| `{{{inspection_end_time}}}` | The start time plus the inspection length. Blank if there's no length. |
| `{{{event_name}}}`, `{{{event_date}}}`, `{{{event_time}}}`, `{{{event_description}}}` | The [inspection event](/how-tos/inspection-event-presets)'s details. Only in **Event Scheduled** and **Pre-Event Reminder** automations; blank everywhere else. |
| `{{{inspection_price}}}` | The total: "\$1,234.50". "\$0.00" if there's no price. |
| `{{{inspection_price_breakdown}}}` | One line per item: the main service, each add-on, lines you added, discounts, urgent fee and taxes, then the **Total**. The total matches `{{{inspection_price}}}`. |
| `{{{main_service_price}}}` | The main service's price, with its price modifiers |
| `{{{addon_services_price_breakdown}}}` | Each add-on with its price: "Radon Testing: \$175.00" |
| `{{{service_name}}}` | The main service's name. With several services, only the first. |
| `{{{addon_services}}}` | The add-on names, separated by commas: "Radon Testing, Sewer Scope × 2" |
| `{{{remaining_add_ons_services}}}` | Add-ons the client hasn't added yet. In **Add-ons Upsell** automations, only add-ons with **Allow Upselling** on. |
| `{{{inspector_name}}}` | The inspector's full name |
| `{{{inspector_license}}}` | The license number from the inspector's [Profile Settings](/settings/profile-settings#professional-details) |
| `{{{wdi_inspector_license}}}` | The WDI (termite) license number from Profile Settings |
| `{{{inspector_email}}}` | The inspector's email |
| `{{{inspector_phone}}}` | The inspector's phone |
| `{{{inspector_signature}}}` | **Image.** The signature you added in Profile Settings |
| `{{{inspector_profile_photo}}}` | **Image.** The inspector's profile photo |
| `{{{order_id}}}` | The order number, such as 1042. Blank until there's an invoice. |
| `{{{invoice_number}}}` | The invoice number, such as INV-2026-001042. Blank until there's an invoice. |
| `{{{report_pdf_links}}}` | A link to each report PDF. See [Report PDF Links](#report-pdf-links-report_pdf_links). |

**More than one inspector?** The inspector placeholders show only one of them. For a team job, write the names yourself or check the preview before you send.

### Company

![The Company category: Company Name, Company Address, Company City, Company State, Company Zip, Company Phone Number, Company Email, Company Website and Company Logo (Image) with a purple Image badge, each with its placeholder and copy button. Below, the blue How to use placeholders box](https://mintcdn.com/hiveinspect-43c85ed1/UHWvWheRMlSc4ZxQ/images/how-tos/placeholders-company.png?fit=max\&auto=format\&n=UHWvWheRMlSc4ZxQ\&q=85\&s=26b078e163644fd2842f6510cab31d22)

These come from **Company Information** in [Profile Settings](/settings/profile-settings#company-information).

| Placeholder | Prints |
| - | - |
| `{{{company_name}}}` | Your company name |
| `{{{company_address}}}` | "4500 Mueller Blvd, Round Rock, TX, 78664" |
| `{{{company_city}}}`, `{{{company_state}}}`, `{{{company_zip}}}` | Each part of the address |
| `{{{company_phone_number}}}` | Your company phone, as (512) 555-0142. The older `{{{company_phone}}}` still works the same. |
| `{{{company_email}}}` | Your company email |
| `{{{company_website}}}` | Your website address, as plain text |
| `{{{company_logo}}}` | **Image.** Your company logo. SVG logos don't show in emails, so upload a PNG or JPG. |

### Dates

| Placeholder | Prints |
| - | - |
| `{{{current_date}}}` | The date the message is sent: "October 20, 2026", in your company's time zone |

### Custom Fields

Each [custom field](/how-tos/custom-inspection-fields) you create gets its own placeholder, such as `{{{custom_gate_or_lockbox_code}}}`. It prints that inspection's answer. A checkbox prints `true` or `false`, and an empty answer prints nothing. See [Print answers in emails, agreements and reports](/how-tos/custom-inspection-fields#print-answers-in-emails-agreements-and-reports).

### Image placeholders

`{{{company_logo}}}`, `{{{inspector_signature}}}` and `{{{inspector_profile_photo}}}` insert a picture in emails and agreements. In a text message they print the picture's web address, so leave them out of texts.

### Service prices in agreements

The agreement editor has a **Service Price** button next to **Insert Placeholder**. It adds a placeholder for one service or add-on, such as `{{{price_of_radon_testing}}}`, which prints what the client pays for it, with modifiers, discounts and tax. If that item isn't on the order, it prints \$0.00. These placeholders aren't on the Placeholders page. See [Agreements](/business-tools/agreements).

## Add a placeholder to a message

1. Click in the message where the detail should go.
2. Click **Insert Placeholder**.
3. Search, or scroll to the group, and click the placeholder.

![The Insert Placeholder list open, with Available Placeholders, a Search placeholders box, the Portal Links group listing Customer Reports Portal, Inspection Review Link, Add-ons Upsell Link, Reports, Payment Link, Customer Agreement Link and Invoice Link, and the Client Information group starting with Client First Name](https://mintcdn.com/hiveinspect-43c85ed1/1Jk6H7a_IamXkQno/images/how-tos/automation-basic-placeholders.png?fit=max\&auto=format\&n=1Jk6H7a_IamXkQno\&q=85\&s=43f3472ad94f9caada56b6b48956aaba)

The list has the same placeholders as the Placeholders page, including your custom fields. You can also type or paste a placeholder anywhere in the text.

**Check it before it goes out.** Use **Preview** or the **Test** buttons on an automation, or **Refresh Preview** in Compose Email, to see the message with real details. See [Test before you rely on it](/how-tos/automation-settings#test-before-you-rely-on-it).

## Where placeholders work

| Where | Placeholders | How to add them |
| - | - | - |
| [Automation](/how-tos/automation-settings) emails | Subject and message | **Insert Placeholder** in the message toolbar. In the subject, type or paste them. |
| Automation text messages | Message | **Insert Placeholder** next to the message |
| [Compose Email](/how-tos/compose-email) | Subject and message | **Insert Placeholder**. Pick an inspection, or only company placeholders fill in. |
| [Agreements](/business-tools/agreements) | Agreement text | **Insert Placeholder** and **Service Price** in the agreement editor |
| Inspection templates and reports | Summary, section descriptions, comments and default text | The **Placeholder Lookup** in the template editor lists the common ones. You can type any placeholder. |
| State forms (Florida 4-Point, wind mitigation, WDI and others) | Filled-in text | Type them |

Placeholders don't work in:

* **invoices**, which are built from the inspection for you;
* **review request** messages, which use their own wording;
* the **Scheduler Confirmation Message** in Org Settings, which shows exactly what you typed;
* **calendar event descriptions**, which use their own field list under **Business Tools → Calendar Description**.

In reports and PDFs, `{{{company_website}}}`, `{{{property_unit}}}` and `{{{report_pdf_links}}}` print nothing. Links in report text use the same words as in an email.

## Rules for writing placeholders

* **Three braces on each side:** `{{{client_first_name}}}`. Two braces, such as `{{client_first_name}}`, don't work.
* **Exact spelling, lowercase, no spaces:** `{{{ client_first_name }}}` or `{{{Client_First_Name}}}` won't fill in (in reports, capital letters still work).
* **A misspelled placeholder:** in the body of an automation email, it's removed, so nothing prints. In email subjects, text messages and Compose Email, it's sent as you typed it, braces and all. Copy placeholders from the list to avoid typos.
* **No links in the subject line.** A link placeholder in an email subject shows as code, not a link. Put links in the message.
* **Your editor can split a placeholder.** If you make part of a placeholder bold or a different color, it may stop working. Delete it and insert it again.

## Common questions

> **What is a placeholder?**
>
> A code in triple braces, such as `{{{client_first_name}}}`, that Hive swaps for that inspection's real details when it sends an email, text or agreement. Find them all under **Business Tools → Placeholders**, or with the **Insert Placeholder** button.

> **Which link do I send clients to see their report?**
>
> `{{{customer_reports_portal_link}}}`. The client signs in with their email and can view the report, sign and pay in one place. Send agents `{{{agent_reports_portal_link}}}`, which opens the reports without signing in.

> **What's the difference between Customer Reports Portal and Reports?**
>
> **Customer Reports Portal** (`{{{customer_reports_portal_link}}}`) opens the portal's sign-in page. The client enters their email and sees all their inspections, with buttons to sign and pay. **Reports** (`{{{agent_reports_portal_link}}}`) opens this inspection's reports with no sign-in and no sign or pay buttons. It's meant for agents.

> **What's the difference between Inspection Review Link and Add-ons Upsell Link?**
>
> Nothing but the words. Both open the client's inspection review page. In an email, the first shows as **Inspection Review Link** and the second as **Add Additional Services**.

> **Why is my invoice link blank?**
>
> The inspection has no invoice yet. Hive creates it when the inspection is confirmed, so `{{{invoice_link}}}` prints nothing in quote and booking-request emails. Use it in confirmation, payment and report emails.

> **Does the payment link show the new price if I change it after sending?**
>
> Yes. `{{{payment_link}}}` works out the amount when the client clicks it, so they always pay what's due right now.

> **My client clicked the report link but can't open the report. Why?**
>
> The report isn't published yet, or the client still has to pay or sign. Send `{{{payment_link}}}` and `{{{customer_agreement_link}}}`, or release it with **Manual Lock Override for Reports** on the inspection. See [When reports open](#when-reports-open).

> **Do both buyers have to sign the agreement?**
>
> No. The agreement link lets one person sign for the inspection. Once anyone signs, the agreement is marked signed.

> **Why does my email show \{\{\{client\_first\_name}}} instead of the name?**
>
> The placeholder is misspelled, has spaces inside the braces, uses two braces instead of three, or was split by formatting. Delete it and insert it again with **Insert Placeholder**. If the spelling is right but the detail is empty, such as no buyer's agent on the inspection, the placeholder prints nothing.

> **Can I change the words a link shows, like Pay here?**
>
> No. Each link has fixed words in emails. Write your sentence around them, for example "Click `{{{payment_link}}}` to pay online."

> **Do placeholders work in text messages?**
>
> Yes. Links become full web addresses, and image placeholders print the picture's web address, so leave images out of texts.

> **Is there a placeholder for the referral source or the inspection notes?**
>
> No. Only the placeholders on the Placeholders page work. For your own detail, create a [custom field](/how-tos/custom-inspection-fields) and use its placeholder.

## Where to go next

* [Automation settings](/how-tos/automation-settings)
* [Compose Email](/how-tos/compose-email)
* [Agreements](/business-tools/agreements)
* [Custom Fields](/how-tos/custom-inspection-fields)
* [Client portal FAQ](/faq/client-portal)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.