# How to automatically add an appointment date to a Contract?

> When a client books a service (like a photography session or consultation), if sending a contract that includes the specific booking date where the…

- Source: https://docs.ghlcustomercare.com/docs/documents-and-contracts/documents-and-contracts-2/how-to-automatically-add-an-appointment-date-to-a-contract
- Section: Documents & Contracts / Documents and Contracts
- Reading time: 4 min
- Images: 13, each explained below

---
When a client books a service (like a photography session or consultation), if sending a contract that includes the specific booking date where the client has to sign is a critical part of your process, this article explains how to automate this - whether you have a simple booking process or a more advanced opportunity pipeline.

### Objective & Challenge

**Your Goal:** You want a workflow to automatically send a contract that includes the client's specific appointment date and time as soon as they book.

**The Challenge:** You can't add an `{{appointment.start_time}}` merge tag directly into a contract template. The "Send Contract" action is designed to pull data from **Contact** or **Opportunity** fields, not directly from the appointment trigger itself.

**The Solution:** The solution is to use your workflow to **first, copy the appointment date** into a custom field (on the Contact or Opportunity), and **second, send the contract** that pulls from this new field.

### Prerequisites

Before building the workflow, you must have two things set up:

1.  **A Custom Field to Store the Date:**
    
    -   Navigate to **Settings** > **Custom Fields**.
        
    -   Click **Add Field** and select **Contact** (for the simple method) OR **Opportunity** (for the advanced method).
        
    -   Set the **Field Type** to **Text**.
        
    -   Name it clearly (e.g., "**Session Date**," "**Event Date,"** or "**Booking Date**").
        
    -   Click **Save**.
        
        
![Step 5 of 5: Click Save](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058334458/original/2n_9jKIOgBkhoB0Mzn0d1iYyWNRKS9w8sA.png)

**Step 5 of 5: Click Save**

This screenshot accompanies step 5 of 5 in the "Prerequisites" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you click Save. For context, this section explains: Before building the workflow, you must have two things set up. The navigation path used here is Settings > Custom Fields. This part of the guide covers 4 fields, listed below.

- Path: Settings > Custom Fields
- How to confirm: Click Save.
- Fields: A Custom Field to Store the Date:, An Updated Contract Template:, For the Contact method: {{contact.session_date}}, For the Opportunity method: {{opportunity.session_date}}
- Controls: Save, Settings, Custom Fields, Add Field, Contact, Opportunity, Field Type, Text, Session Date, Event Date,", Booking Date, Payments

Full procedure:

1. Navigate to Settings > Custom Fields.
2. Click Add Field and select Contact (for the simple method) OR Opportunity (for the advanced method).
3. Set the Field Type to Text.
4. Name it clearly (e.g., " Session Date," " Event Date," or " Booking Date ").
5. Click Save.  <- this image

        
        
![Select contact or opportunity](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058334484/original/xEYltwdVZikd7IshUSTpm48cbM-ZcDS0kg.png)

**Step 5 of 5: Click Save**

This screenshot accompanies step 5 of 5 in the "Prerequisites" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you click Save. For context, this section explains: Before building the workflow, you must have two things set up. The navigation path used here is Settings > Custom Fields. This part of the guide covers 4 fields, listed below.

- Path: Settings > Custom Fields
- How to confirm: Click Save.
- Fields: A Custom Field to Store the Date:, An Updated Contract Template:, For the Contact method: {{contact.session_date}}, For the Opportunity method: {{opportunity.session_date}}
- Controls: Save, Settings, Custom Fields, Add Field, Contact, Opportunity, Field Type, Text, Session Date, Event Date,", Booking Date, Payments

Full procedure:

1. Navigate to Settings > Custom Fields.
2. Click Add Field and select Contact (for the simple method) OR Opportunity (for the advanced method).
3. Set the Field Type to Text.
4. Name it clearly (e.g., " Session Date," " Event Date," or " Booking Date ").
5. Click Save.  <- this image

        
2.  **An Updated Contract Template:**
    
    -   Navigate to **Payments** > **Contracts**.
        
    -   Find and **Clone** your existing template (e.g., "Service Agreement - with Date") or Create a **New Template**.
        
    -   Edit the template and add your new custom field variable:
        
        -   For the Contact method: `{{contact.session_date}}`
            
        -   For the Opportunity method: `{{opportunity.session_date}}`
            
    -   **Save** the template.
        
        
![Step 4 of 4: Save the template. - Use contact custom field in the document template…](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058334518/original/wQZcLx_fRh0ubqYc9mhSyY89wWtMRkJXuw.png)

**Step 4 of 4: Save the template. - Use contact custom field in the document template…**

This screenshot accompanies step 4 of 4 in the "Prerequisites" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you save the template. - Use contact custom field in the document template -OR Use Opportunity custom fields [ Learn more ] if one contact can have multiple bookings. The navigation path used here is Payments > Contracts. This part of the guide covers 4 fields, listed below.

- Path: Payments > Contracts
- How to confirm: Save the template. - Use contact custom field in the document template -OR Use Opportunity custom fields [ Learn more ] if one contact can have multiple bookings
- Fields: A Custom Field to Store the Date:, An Updated Contract Template:, For the Contact method: {{contact.session_date}}, For the Opportunity method: {{opportunity.session_date}}
- Controls: Save, Settings, Custom Fields, Add Field, Contact, Opportunity, Field Type, Text, Session Date, Event Date,", Booking Date, Payments

Full procedure:

1. Navigate to Payments > Contracts.
2. Find and Clone your existing template (e.g., "Service Agreement - with Date") or Create a New Template.
3. Edit the template and add your new custom field variable:
4. Save the template. - Use contact custom field in the document template -OR Use Opportunity custom fields [ Learn more ] if one contact can have multiple bookings  <- this image

        
        \- Use contact custom field in the document template
        
        
![Step 4 of 4: Save the template. - Use contact custom field in the document template…](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058334631/original/1_dsWBzgbpDKQE0qtcnIEFuYbkllbOu8TA.png)

**Step 4 of 4: Save the template. - Use contact custom field in the document template…**

This screenshot accompanies step 4 of 4 in the "Prerequisites" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you save the template. - Use contact custom field in the document template -OR Use Opportunity custom fields [ Learn more ] if one contact can have multiple bookings. The navigation path used here is Payments > Contracts. This part of the guide covers 4 fields, listed below.

- Path: Payments > Contracts
- How to confirm: Save the template. - Use contact custom field in the document template -OR Use Opportunity custom fields [ Learn more ] if one contact can have multiple bookings
- Fields: A Custom Field to Store the Date:, An Updated Contract Template:, For the Contact method: {{contact.session_date}}, For the Opportunity method: {{opportunity.session_date}}
- Controls: Save, Settings, Custom Fields, Add Field, Contact, Opportunity, Field Type, Text, Session Date, Event Date,", Booking Date, Payments

Full procedure:

1. Navigate to Payments > Contracts.
2. Find and Clone your existing template (e.g., "Service Agreement - with Date") or Create a New Template.
3. Edit the template and add your new custom field variable:
4. Save the template. - Use contact custom field in the document template -OR Use Opportunity custom fields [ Learn more ] if one contact can have multiple bookings  <- this image

        
        \-OR Use Opportunity custom fields \[[Learn more](https://docs.ghlcustomercare.com/docs/documents-and-contracts/documents-and-contracts-2/documents-contracts-templates-with-opportunity-custom-values)\] if one contact can have multiple bookings
        
        
![Step 4 of 4: Save the template. - Use contact custom field in the document template…](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058334707/original/8e_ppnIBc1ubP87v0ayU6PqQj43wig-OXQ.png)

**Step 4 of 4: Save the template. - Use contact custom field in the document template…**

This screenshot accompanies step 4 of 4 in the "Prerequisites" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you save the template. - Use contact custom field in the document template -OR Use Opportunity custom fields [ Learn more ] if one contact can have multiple bookings. The navigation path used here is Payments > Contracts. This part of the guide covers 4 fields, listed below.

- Path: Payments > Contracts
- How to confirm: Save the template. - Use contact custom field in the document template -OR Use Opportunity custom fields [ Learn more ] if one contact can have multiple bookings
- Fields: A Custom Field to Store the Date:, An Updated Contract Template:, For the Contact method: {{contact.session_date}}, For the Opportunity method: {{opportunity.session_date}}
- Controls: Save, Settings, Custom Fields, Add Field, Contact, Opportunity, Field Type, Text, Session Date, Event Date,", Booking Date, Payments

Full procedure:

1. Navigate to Payments > Contracts.
2. Find and Clone your existing template (e.g., "Service Agreement - with Date") or Create a New Template.
3. Edit the template and add your new custom field variable:
4. Save the template. - Use contact custom field in the document template -OR Use Opportunity custom fields [ Learn more ] if one contact can have multiple bookings  <- this image

        

### Workflow Configuration: Choose Your Method

Choose the method that best fits your business process.

### Method 1: The Simple "Contact" Workflow

This is the most direct method. It's perfect if you don't use an opportunity pipeline for your bookings and simply want to send a contract right after someone books.

1.  **Set Your Trigger:**
    
    -   Add a new workflow and select the **Customer Booked Appointment** trigger.
        
    -   (Optional) Use the **Filters** to select the specific **In calendar** that should run this automation.
        
        
![Step 2 of 2: (Optional) Use the Filters to select the specific In calendar that…](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058334985/original/DWmNdpQIEIVKOysA_cvKhqT_25FWJPuuAg.png)

**Step 2 of 2: (Optional) Use the Filters to select the specific In calendar that…**

This screenshot accompanies step 2 of 2 in the "Method 1: The Simple "Contact" Workflow" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you (Optional) Use the Filters to select the specific In calendar that should run this automation.
- What to choose: (Optional) Use the Filters to select the specific In calendar that should run this automation.
- Controls: Filters, In calendar, Customer Booked Appointment, (+), Update Contact Field, Contact, tag icon, Appointment, Start Time, Send Documents & Contracts, Template, Save

Full procedure:

1. Add a new workflow and select the Customer Booked Appointment trigger.
2. (Optional) Use the Filters to select the specific In calendar that should run this automation.  <- this image

        
2.  **Add the "Update Contact Field" Action:**
    
    -   Click the **(+)** icon to add a new action.
        
    -   Select **Update Contact Field**.
        
    -   **Select Field:** Choose the **Contact** custom field you created (e.g., "Session Date").
        
    -   **Select Value:** Click the **tag icon** and select **Appointment** > **Start Time**. This copies the booking date into your contact's custom field.
        
        
![Step 4 of 4: Select Value: Click the tag icon and select Appointment > Start Time…](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058335015/original/hDhXIMGYMBHgHghG-NnNVrgtfukDsrBndA.png)

**Step 4 of 4: Select Value: Click the tag icon and select Appointment > Start Time…**

This screenshot accompanies step 4 of 4 in the "Method 1: The Simple "Contact" Workflow" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you select Value: Click the tag icon and select Appointment > Start Time. This copies the booking date into your contact's custom field. The navigation path used here is Appointment > Start Time.

- Path: Appointment > Start Time
- What to choose: Select Value: Click the tag icon and select Appointment > Start Time. This copies the booking date into your contact's custom field.
- Controls: tag icon, Appointment, Start Time, Customer Booked Appointment, Filters, In calendar, (+), Update Contact Field, Contact, Send Documents & Contracts, Template, Save

Full procedure:

1. Click the (+) icon to add a new action.
2. Select Update Contact Field.
3. Select Field: Choose the Contact custom field you created (e.g., "Session Date").
4. Select Value: Click the tag icon and select Appointment > Start Time. This copies the booking date into your contact's custom field.  <- this image

        
3.  **Add the "Send Contract" Action:**
    
    -   Click the **(+)** icon directly _under_ the "Update Contact Field" step.
        
    -   Select the **Send Documents & Contracts** action.
        
    -   In the **Template** dropdown, select the new, updated contract template you created in the "Prerequisites" step.
        
    -   **Save** and **Publish** your workflow.
        
        
![Step 4 of 4: Save and Publish your workflow](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058335021/original/6-RZG61WmSVkkfz-gPs_jAclYcYMQBPZYQ.png)

**Step 4 of 4: Save and Publish your workflow**

This screenshot accompanies step 4 of 4 in the "Method 1: The Simple "Contact" Workflow" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you save and Publish your workflow. For context, this section explains: This is the most direct method. It's perfect if you don't use an opportunity pipeline for your bookings and simply want to send a contract right after someone books.
- How to confirm: Save and Publish your workflow.
- Controls: Save, Publish, Customer Booked Appointment, Filters, In calendar, (+), Update Contact Field, Contact, tag icon, Appointment, Start Time, Send Documents & Contracts

Full procedure:

1. Click the (+) icon directly under the "Update Contact Field" step.
2. Select the Send Documents & Contracts action.
3. In the Template dropdown, select the new, updated contract template you created in the "Prerequisites" step.
4. Save and Publish your workflow.  <- this image

        

### 4\. The sent contract will have the booking date prefilled

### 

![Method 2: The Advanced "Opportunity" Workflow (image 9 of 13)](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058337366/original/_vuQPai2LAIbGQshgXUEvt_jzNy5pnz66g.png)

**Method 2: The Advanced "Opportunity" Workflow (image 9 of 13)**

This screenshot appears in the "Method 2: The Advanced "Opportunity" Workflow" section of "How to automatically add an appointment date to a Contract?". The text alongside this image reads: Set Your Trigger: Add the "Update Contact Field" Action: Add the "Send Contract" Action. Immediately after, the guide continues: This method is for businesses that already have an opportunity-based pipeline. It finds an existing opportunity for the contact and updates it with the booking date. You can also set up workflows where post booking, a new opportunity is….
- What this covers: Set Your Trigger: Add the "Update Contact Field" Action: Add the "Send Contract" Action:
- Controls: finds an existing opportunity, Customer Booked Appointment, calendar, (+), Find Opportunity, Most recently created opportunity, Field, "Session Date", "Is Empty", "Opportunity Found", Update Opportunity, Add field
- Next: This method is for businesses that already have an opportunity-based pipeline. It finds an existing opportunity for the contact and updates it with the booking date. You can also set up workflows where post booking, a new opportunity is created and within that information is filled.

Full procedure:

1. Set Your Trigger:
2. Add the "Find Opportunity" Action:
3. Add the "Update Opportunity" Action:
4. Add the "Send Contract" Action:
5. The sent contract will now have the booking date prefilled.

Method 2: The Advanced "Opportunity" Workflow

This method is for businesses that already have an opportunity-based pipeline. It **finds an existing opportunity** for the contact and updates it with the booking date. You can also set up workflows where post booking, a new opportunity is created and within that information is filled.

1.  **Set Your Trigger:**
    
    -   Add the **Customer Booked Appointment** trigger, and filter for your specific **calendar**.
        
        
![Step 1 of 1: Add the Customer Booked Appointment trigger, and filter for your…](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058337419/original/u5hswQQdTNXNSB2QKc57ZhSYbg6p81knXA.png)

**Step 1 of 1: Add the Customer Booked Appointment trigger, and filter for your…**

This screenshot accompanies step 1 of 1 in the "Method 2: The Advanced "Opportunity" Workflow" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you add the Customer Booked Appointment trigger, and filter for your specific calendar.
- What this covers: Add the Customer Booked Appointment trigger, and filter for your specific calendar.
- Controls: Customer Booked Appointment, calendar, finds an existing opportunity, (+), Find Opportunity, Most recently created opportunity, Field, "Session Date", "Is Empty", "Opportunity Found", Update Opportunity, Add field

        
2.  **Add the "Find Opportunity" Action:**
    
    -   Click the **(+)** icon and select **Find Opportunity**.
        
    -   Set `OPPORTUNITY TO BE FOUND` to **Most recently created opportunity**.
        
    -   Add a **Field** filter: Select your custom field (e.g., **"Session Date"**) and set the condition to **"Is Empty"**. This ensures you only update opportunities that _need_ a date.
        
        
![Step 3 of 3: Add a Field filter: Select your custom field (e.g., "Session Date")…](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058337450/original/E7tIOWjVC6MUJ5nGqHf-bdsFggiQRjKd4A.png)

**Step 3 of 3: Add a Field filter: Select your custom field (e.g., "Session Date")…**

This screenshot accompanies step 3 of 3 in the "Method 2: The Advanced "Opportunity" Workflow" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you add a Field filter: Select your custom field (e.g., "Session Date") and set the condition to "Is Empty". This ensures you only update opportunities that need a date.
- What to choose: Add a Field filter: Select your custom field (e.g., "Session Date") and set the condition to "Is Empty". This ensures you only update opportunities that need a date.
- Controls: Field, "Session Date", "Is Empty", finds an existing opportunity, Customer Booked Appointment, calendar, (+), Find Opportunity, Most recently created opportunity, "Opportunity Found", Update Opportunity, Add field

Full procedure:

1. Click the (+) icon and select Find Opportunity.
2. Set OPPORTUNITY TO BE FOUND to Most recently created opportunity.
3. Add a Field filter: Select your custom field (e.g., "Session Date") and set the condition to "Is Empty". This ensures you only update opportunities that need a date.  <- this image

        
3.  **Add the "Update Opportunity" Action:**
    
    -   On the **"Opportunity Found"** branch, click the **(+)** icon.
        
    -   Select the **Update Opportunity** action.
        
    -   **Add field** and select your **Opportunity** custom field (e.g., "Session Date").
        
    -   For the value, click the **tag icon** and select **Appointment** > **Start Time**.
        
4.  **Add the "Send Contract" Action:**
    
    -   Click the **(+)** icon directly _under_ the "Update Opportunity" step.
        
    -   Select the **Send Documents & Contracts** action.
        
    -   In the **Template** dropdown, select your updated **Opportunity**\-based contract template.
        
        
![Step 3 of 3: In the Template dropdown, select your updated Opportunity -based…](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058337501/original/vGzr6KUhErXUipWSquvy1IbL61PtgYG6Tw.png)

**Step 3 of 3: In the Template dropdown, select your updated Opportunity -based…**

This screenshot accompanies step 3 of 3 in the "Method 2: The Advanced "Opportunity" Workflow" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you in the Template dropdown, select your updated Opportunity -based contract template.
- What to choose: In the Template dropdown, select your updated Opportunity -based contract template.
- Controls: Template, Opportunity, finds an existing opportunity, Customer Booked Appointment, calendar, (+), Find Opportunity, Most recently created opportunity, Field, "Session Date", "Is Empty", "Opportunity Found"

Full procedure:

1. Click the (+) icon directly under the "Update Opportunity" step.
2. Select the Send Documents & Contracts action.
3. In the Template dropdown, select your updated Opportunity -based contract template.  <- this image

        
5.  The sent contract will now have the booking date prefilled.
    
    
![Step 5 of 5: The sent contract will now have the booking date prefilled](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/155058337545/original/02Lk5tVrUuip5tokRCmxv89ExYiO_4lMeg.png)

**Step 5 of 5: The sent contract will now have the booking date prefilled**

This screenshot accompanies step 5 of 5 in the "Method 2: The Advanced "Opportunity" Workflow" section of "How to automatically add an appointment date to a Contract?". At this point in the walkthrough you the sent contract will now have the booking date prefilled.
- What this covers: The sent contract will now have the booking date prefilled.
- Controls: finds an existing opportunity, Customer Booked Appointment, calendar, (+), Find Opportunity, Most recently created opportunity, Field, "Session Date", "Is Empty", "Opportunity Found", Update Opportunity, Add field

Full procedure:

1. Set Your Trigger:
2. Add the "Find Opportunity" Action:
3. Add the "Update Opportunity" Action:
4. Add the "Send Contract" Action:
5. The sent contract will now have the booking date prefilled.  <- this image

    

### Final Logic 

Your workflow, whether using Method 1 or 2, must follow this logic:

1.  **Trigger** (Appointment Booked)
    
2.  **Update Field** (Contact or Opportunity)
    
3.  **Send Contract** (Using the updated template)  
    **Troubleshooting Q&A:**  
    **\-** **The contract was sent, but the date field is blank:** This could mean a few things-  
    1\. Your workflow order is wrong. The **Update Field** action (Contact or Opportunity) _must_ be placed **before** the **Send Contract** action.  
    2\. If you are updating an opportunity then an opportunity should exist for the user who has made the booking. Else, create opportunity action should be used.  
    **\- The old contract was sent, without the new date field:** Go back into your **Send Contract** action and make sure you have selected your new, cloned template from the dropdown menu, not your old one.

---

Documentation for GHL Customer Care. Support: support@ghlcustomercare.com