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

# Jobber

> What Hatch's Jobber integration is, how it works, and where to begin.

### What does the Jobber integration do?

Hatch offers a native integration with Jobber that you can activate within the App Marketplace (located in your Hatch workspace). This integration syncs contact data from Jobber to Hatch, and can also sync Hatch events to Jobber.

While active, the Jobber integration will sync new and updated Jobber data every 15 minutes. It will also sync Hatch events back to Jobber as soon as they occur (if you have enabled this feature).

To get started, open the App Marketplace in your Hatch workspace and follow the setup instructions below.

### How do you set up the integration?

#### Requirements

You will need the following to set up the integration:

* Hatch account with manager privileges
* Jobber account

#### Setup Steps

The following is the set of steps required to activate the integration:

1. In Hatch, open the **App Marketplace**.
2. Under the **CRMs** tab, click the Jobber **Connect** button.
3. In the window that appears, click the **Start Setup** button.
4. Follow the steps of the setup, clicking the **Next** button after each screen is completed.
   1. The setup will open a new browser tab to connect your Jobber account. You will need to approve the connection in this new tab.
5. In the final screen of the setup, click the **Finish** button.

### When does Hatch sync data to/from Jobber?

#### Jobber→ Hatch

Jobber data can be sync’d to Hatch in the following scenarios. These options are configured during the integration setup.

<Note>
  Keep in mind that syncs occur every 15 minutes.
</Note>

* If a work request record is created or updated in Jobber, Hatch syncs the work request record along with any associated data (see below for specific fields)
* If a quote record is created or updated in Jobber, Hatch syncs the quote record along with any associated data (see below for specific fields)

#### Hatch → Jobber

Hatch events and/or communications can be sync’d to Jobber in the following scenarios. These options are configured during the integration setup. If enabled, Hatch will log the communications in the Notes & Attachments of the associated Jobber Work Request, Quote, or Client record (with options to link to additional objects).

<Note>
  Keep in mind that push communications occur instantaneously. There must be a Jobber record in Hatch at the time of the communication event in order for it to succeed.
</Note>

* When a Hatch campaign sends a text/email/voicemail to a contact,
* When a contact calls or sends a text/email/voicemail to a Hatch workspace
* When a Hatch user calls or sends a text/email to a contact
* When events occur within a Hatch campaign
  * A contact is launched (added) to a Hatch campaign
  * A contact is sent the first message of a Hatch campaign
  * A contact is removed from a Hatch campaign before it has ended
  * A contact completed a Hatch campaign

### How is Jobber data stored in Hatch?

#### Opportunity Models

There are two types of Hatch opportunities that the Jobber integration creates:

* **Work Request Opportunity** — Created from Jobber Work Request\*\*\*\* records. Additional related data is also included (see below).
* **Quote Opportunity** — These opportunities are created from Jobber Quote records. Additional related data is also included (see below).

#### Opportunity Creation & Update

<Note>
  When an **opportunity** is generated that doesn’t match an existing **contact** , a new **contact** will be created. A new **opportunity** will be added to an existing **contact** if a match is found.
</Note>

The integration will replace an existing Hatch opportunity when:

* The sync’d Hatch External ID matches the existing opportunity’s Hatch External ID (see below for how the External ID is mapped)

The integration will create an additional (new) Hatch opportunity when:

* The sync’d Hatch External ID does not match the existing opportunity’s Hatch External ID (see below for how the External ID is mapped)

### What Jobber data is available in Hatch?

#### Detail Field Lists

<Note>
  Some fields below are lists. Data within a list field is sorted by “created date” in descending order. For example, a list of jobs would have the most recently-created job listed first.
</Note>

<Note>
  When accessing a list, you need to provide the index number of the list item that you want. Because this index number will vary, it is shown in the lists below with the placeholder **#**.
</Note>

The following fields are available in the opportunity details:

**Quote Opportunity**

| Field                                                    | Type             |
| -------------------------------------------------------- | ---------------- |
| approved\_at                                             | Date             |
| client                                                   | Object           |
| client:balance                                           | Number           |
| client:billing\_address                                  | Object           |
| client:billing\_address:city                             | String           |
| client:billing\_address:country                          | String           |
| client:billing\_address:pc                               | String           |
| client:billing\_address:province                         | String           |
| client:billing\_address:street                           | String           |
| client:billing\_address:street1                          | String           |
| client:billing\_address:street2                          | String           |
| client:company\_name                                     | String           |
| client:created\_at                                       | Date             |
| client:custom\_field\_values                             | Object           |
| client:custom\_field\_values:`<custom_field_name>`       | List OR String   |
| client:custom\_field\_values:`<custom_field_name>`:`<n>` | String           |
| client:emails                                            | List             |
| client:emails:#                                          | Object           |
| client:emails:#:address                                  | String           |
| client:emails:#:description                              | String           |
| client:emails:#:id                                       | String           |
| client:emails:#:primary                                  | Index 1: Boolean |
| Index >1: String (Boolean)                               |                  |
| client:first\_name                                       | String           |
| client:id                                                | String           |
| client:is\_company                                       | Boolean          |
| client:is\_achieved                                      | Boolean          |
| client:last\_name                                        | String           |
| client:name                                              | String           |
| client:phones                                            | Object           |
| client:phones:Main1                                      |                  |
| client:phones:Mobile1                                    |                  |
| client:phones:Home1                                      |                  |
| client:phones:Work1                                      |                  |
| client:phones:Other1                                     |                  |
| client:phones:Fax1                                       | Object           |
| client:phones:Main1:id                                   |                  |
| client:phones:Mobile1:id                                 |                  |
| client:phones:Home1:id                                   |                  |
| client:phones:Work1:id                                   |                  |
| client:phones:Other1:id                                  |                  |
| client:phones:Fax1:id                                    | String           |
| client:phones:Main1:number                               |                  |
| client:phones:Mobile1:number                             |                  |
| client:phones:Home1:number                               |                  |
| client:phones:Work1:number                               |                  |
| client:phones:Other1:number                              |                  |
| client:phones:Fax1:number                                | String           |
| client:phones:Main1:primary                              |                  |
| client:phones:Mobile1:primary                            |                  |
| client:phones:Home1:primary                              |                  |
| client:phones:Work1:primary                              |                  |
| client:phones:Other1:primary                             |                  |
| client:phones:Fax1:primary                               | String (Boolean) |
| client:phones:Main1:sms\_allowed                         |                  |
| client:phones:Mobile1:sms\_allowed                       |                  |
| client:phones:Home1:sms\_allowed                         |                  |
| client:phones:Work1:sms\_allowed                         |                  |
| client:phones:Other1:sms\_allowed                        |                  |
| client:phones:Fax1:sms\_allowed                          | String (Boolean) |
| client:tags                                              | String           |
| client:updated\_at                                       | Date             |
| cost                                                     | Number           |
| created\_at                                              | Date             |
| custom\_field\_values                                    | List             |
| custom\_field\_values:#                                  | Object           |
| custom\_field\_values:#:created\_at                      | String (Date)    |
| custom\_field\_values:#:name                             | String           |
| custom\_field\_values:#:position                         | String (Number)  |
| custom\_field\_values:#:unit                             | String           |
| custom\_field\_values:#:updated\_at                      | String (Date)    |
| custom\_field\_values:#:value                            | List OR String   |
| custom\_field\_values:#:value\_type                      | String           |
| custom\_field\_values:#:value:#                          | String           |
| deposit\_amount                                          | Number           |
| discount\_amount                                         | Number           |
| id                                                       | String           |
| job\_description                                         | String           |
| jobs                                                     | List             |
| jobs:#                                                   | Object           |
| jobs:#:automatically\_charge\_invoice                    | Index 1: Boolean |
| Index >1: String (Boolean)                               |                  |
| jobs:#:billing\_type                                     | String           |
| jobs:#:client                                            | String           |
| jobs:#:completed\_at                                     | Index 1: Date    |
| Index >1: String (Date)                                  |                  |
| jobs:#:created\_at                                       | Index 1: Date    |
| Index >1: String (Date)                                  |                  |
| jobs:#:custom\_field\_values                             | List             |
| jobs:#:custom\_field\_values:#                           | Object           |
| jobs:#:custom\_field\_values:#:created\_at               | Index 1: Date    |
| Index >1: String (Date)                                  |                  |
| jobs:#:custom\_field\_values:#:name                      | String           |
| jobs:#:custom\_field\_values:#:position                  | Index 1: Number  |
| Index >1: String (Number)                                |                  |
| jobs:#:custom\_field\_values:#:unit                      | String           |
| jobs:#:custom\_field\_values:#:updated\_at               | Index 1: Date    |
| Index >1: String (Date)                                  |                  |
| jobs:#:custom\_field\_values:#:value                     | List OR String   |
| jobs:#:custom\_field\_values:#:value\_type               | String           |
| jobs:#:custom\_field\_values:#:value:#                   | String           |
| jobs:#:end\_at                                           | Index 1: Date    |
| Index >1: String (Date)                                  |                  |
| jobs:#:id                                                | String           |
| jobs:#:job\_number                                       | Index 1: Number  |
| Index >1: String (Number)                                |                  |
| jobs:#:job\_type                                         | String           |
| jobs:#:line\_items                                       | List             |
| jobs:#:line\_items\_cost                                 | Index 1: Number  |
| Index >1: String (Number)                                |                  |
| jobs:#:line\_items\_name                                 | String           |
| jobs:#:line\_items:#                                     | String           |
| jobs:#:property                                          | String           |
| jobs:#:quote                                             | String           |
| jobs:#:start\_at                                         | Index 1: Date    |
| Index >1: String (Date)                                  |                  |
| jobs:#:status                                            | String           |
| jobs:#:total\_value                                      | Index 1: Number  |
| Index >1: String (Number)                                |                  |
| jobs:#:updated\_at                                       | Index 1: Date    |
| Index >1: String (Date)                                  |                  |
| message                                                  | String           |
| quote\_number                                            | Number           |
| quote\_status                                            | String           |
| sent\_at                                                 | Date             |
| transitioned\_at                                         | Date             |
| updated\_at                                              | Date             |
| won\_at                                                  | Date             |

**Request Opportunity**

| Field                                                    | Type             |
| -------------------------------------------------------- | ---------------- |
| client                                                   | Object           |
| client:balance                                           | Number           |
| client:billing\_address                                  | Object           |
| client:billing\_address:city                             | String           |
| client:billing\_address:country                          | String           |
| client:billing\_address:pc                               | String           |
| client:billing\_address:province                         | String           |
| client:billing\_address:street                           | String           |
| client:billing\_address:street1                          | String           |
| client:billing\_address:street2                          | String           |
| client:company\_name                                     | String           |
| client:created\_at                                       | Date             |
| client:custom\_field\_values                             | Object           |
| client:custom\_field\_values:`<custom_field_name>`       | List OR String   |
| client:custom\_field\_values:`<custom_field_name>`:`<n>` | String           |
| client:emails                                            | List             |
| client:emails:#                                          | Object           |
| client:emails:#:address                                  | String           |
| client:emails:#:description                              | String           |
| client:emails:#:id                                       | String           |
| client:emails:#:primary                                  | Index 1: Boolean |
| Index >1: String (Boolean)                               |                  |
| client:first\_name                                       | String           |
| client:id                                                | String           |
| client:is\_company                                       | Boolean          |
| client:is\_achieved                                      | Boolean          |
| client:last\_name                                        | String           |
| client:name                                              | String           |
| client:phones                                            | Object           |
| client:phones:Main1                                      |                  |
| client:phones:Mobile1                                    |                  |
| client:phones:Home1                                      |                  |
| client:phones:Work1                                      |                  |
| client:phones:Other1                                     |                  |
| client:phones:Fax1                                       |                  |
| client:phones:Main1:id                                   |                  |
| client:phones:Mobile1:id                                 |                  |
| client:phones:Home1:id                                   |                  |
| client:phones:Work1:id                                   |                  |
| client:phones:Other1:id                                  |                  |
| client:phones:Fax1:id                                    | Object           |
| client:phones:Main1:number                               |                  |
| client:phones:Mobile1:number                             |                  |
| client:phones:Home1:number                               |                  |
| client:phones:Work1:number                               |                  |
| client:phones:Other1:number                              |                  |
| client:phones:Fax1:number                                | String           |
| client:phones:Main1:primary                              |                  |
| client:phones:Mobile1:primary                            |                  |
| client:phones:Home1:primary                              |                  |
| client:phones:Work1:primary                              |                  |
| client:phones:Other1:primary                             |                  |
| client:phones:Fax1:primary                               | String (Boolean) |
| client:phones:Main1:sms\_allowed                         |                  |
| client:phones:Mobile1:sms\_allowed                       |                  |
| client:phones:Home1:sms\_allowed                         |                  |
| client:phones:Work1:sms\_allowed                         |                  |
| client:phones:Other1:sms\_allowed                        |                  |
| client:phones:Fax1:sms\_allowed                          | String (Boolean) |
| client:tags                                              | String           |
| client:updated\_at                                       | Date             |
| created\_at                                              | Date             |
| custom\_field\_values                                    | List             |
| custom\_field\_values:#                                  | Object           |
| custom\_field\_values:#:created\_at                      | String (Date)    |
| custom\_field\_values:#:name                             | String           |
| custom\_field\_values:#:position                         | String (Number)  |
| custom\_field\_values:#:unit                             | String           |
| custom\_field\_values:#:updated\_at                      | String (Date)    |
| custom\_field\_values:#:value                            | List OR String   |
| custom\_field\_values:#:value\_type                      | String           |
| custom\_field\_values:#:value:#                          | String           |
| id                                                       | String           |
| property                                                 | String           |
| source                                                   | String           |
| status                                                   | String           |
| title                                                    | String           |
| updated\_at                                              | Date             |

#### Standard Field Mapping

Hatch standard fields are mapped from Jobber detail fields as detailed below.

**Quote Opportunity**

<Note>
  The base object of this opportunity model is the Jobber **Quote**. Therefore, (as an example) the **id** field would indicate the ID of the Jobber **Quote** record.
</Note>

In Quote opportunities, the following Hatch standard fields are mapped from Jobber detail fields:

| Hatch Standard Field                 | Jobber Detail Field                                                                                                                                                                       |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Email                                | client:emails:1:address                                                                                                                                                                   |
| External ID                          | id                                                                                                                                                                                        |
| External Contact ID                  | client:id                                                                                                                                                                                 |
| External Created At                  | created\_at                                                                                                                                                                               |
| External Updated At                  |                                                                                                                                                                                           |
| (used for Hatch opportunity sorting) | updated\_at                                                                                                                                                                               |
| First Name                           | client:first\_name                                                                                                                                                                        |
| Last Name                            | client:last\_name                                                                                                                                                                         |
| Phone Number                         | client:phones:Main1:number (or, if missing: client:phones:Mobile1:number, client:phones:Work1:number, client:phones:Home1:number, client:phones:Other1:number, client:phones:Fax1:number) |

**Request Opportunity**

<Note>
  The base object of this opportunity model is the Jobber **Request**. Therefore, (as an example) the **id** field would indicate the ID of the Jobber **Request** record.
</Note>

In Request opportunities, the following Hatch standard fields are mapped from Jobber detail fields:

| Hatch Standard Field                 | Jobber Detail Field                                                                                                                                                                       |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Email                                | client:emails:1:address                                                                                                                                                                   |
| External ID                          | id                                                                                                                                                                                        |
| External Contact ID                  | client:id                                                                                                                                                                                 |
| External Created At                  | created\_at                                                                                                                                                                               |
| External Updated At                  |                                                                                                                                                                                           |
| (used for Hatch opportunity sorting) | updated\_at                                                                                                                                                                               |
| First Name                           | client:first\_name                                                                                                                                                                        |
| Last Name                            | client:last\_name                                                                                                                                                                         |
| Phone Number                         | client:phones:Main1:number (or, if missing: client:phones:Mobile1:number, client:phones:Work1:number, client:phones:Home1:number, client:phones:Other1:number, client:phones:Fax1:number) |
