> For the complete documentation index, see [llms.txt](https://docs.enate.net/enate-help/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enate.net/enate-help/integrations/enate-integrations/webhooks/enates-webhooks.md).

# How to work with Enate's Webhooks

In order to work with Webhooks in Enate, you pass certain parameters when you subscribe (see Parameters Required Explanation below) and you get a message back whenever the event you subscribed to occurs.

For the events you can subscribe to, with a worked example of every message, see:

## How a Webhook Message Is Sent

Every Webhook message is an HTTP POST from Enate to your `SubscriberURL`, with these characteristics:

| Element             | Value                                                                                                                  |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Method              | `POST`                                                                                                                 |
| `Content-Type`      | `application/json; charset=utf-8`                                                                                      |
| `Accept`            | `application/json`                                                                                                     |
| `x-enate-signature` | The signature GUID of the subscription that produced this message                                                      |
| Custom header       | Present only if the subscription has a `CustomHeader` name set. Its content is whatever you put in `CustomHeaderValue` |
| Body                | A single JSON object. The fields depend on which Webhook fired                                                         |

A message for a NewCommunication subscription with a custom header of "Globex source" arrives like this:

```
POST /enate/communications HTTP/1.1
Host: integrations.globex.example.com
Content-Type: application/json; charset=utf-8
Accept: application/json
x-enate-signature: 7e41b0c6-5a82-4f39-9d17-0b6c38e2a541
Globex-source: enate-new-communication

{"CC":"hr.records@globex.example.com","BCC":"","From":"hrrelief@initech.example.com","To":"priya.raman@globex.example.com","Subject":"Your first day at Globex","Importance":0,"AttachmentCount":2,"GUID":"31fbfa65-dc39-4c9c-a1f4-47dfef636bea","PacketGUID":"878409be-7886-eb11-b9ad-e86a64437383","CommunicationType":0}
```

Enate treats any 2xx response as success. Every other status code counts as a failure, including a 4xx, and the message is retried up to 10 times in total before it's dead lettered. See Webhook Delivery and Failure Handling for what happens next.

{% hint style="info" %}
Note: field names in the message body are in PascalCase, exactly as shown in this documentation, and enumerations are sent as their integer values rather than their names. A Case, for example, arrives as `"ProcessType": 1`, not `"ProcessType": "Case"`.
{% endhint %}

### Message Returned Explanation

The exact set of fields you get depends on which Webhook you subscribed to. The table below covers every field used across all Enate Webhook messages.

| Field                 | Type                        | Required/Optional                                                              | Description                                                                                                                                                                                                                                                                                                   |
| --------------------- | --------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **AttachmentCount**   | Integer                     | Always present in NewCommunication messages                                    | The number of attachments on the communication.                                                                                                                                                                                                                                                               |
| **BCC**               | String                      | Always present in NewCommunication messages, empty when there are no addresses | Email addresses included in the email 'BCC' field, separated by "; ".                                                                                                                                                                                                                                         |
| **CC**                | String                      | Always present in NewCommunication messages, empty when there are no addresses | Email addresses included in the email 'CC' field, separated by "; ".                                                                                                                                                                                                                                          |
| **CommunicationType** | Integer                     | Always present in NewCommunication messages                                    | <p>The communication type used:</p><p>0 = EmailOutgoing</p><p>1 = PhoneIncoming</p><p>2 = EmailIncoming</p><p>3 = ESSComment</p><p>4 = AuditNote</p><p>5 = PhoneOutgoing</p><p>6 = LetterIncoming</p><p>7 = LetterOutgoing</p>                                                                                |
| **CompanyType**       | Integer                     | Present in Company messages only                                               | <p>The relationship the Company has with you:</p><p>0 = No Relationship</p><p>1 = Customer</p><p>2 = Service Provider</p><p>4 = Third Party Supplier</p><p>These values combine, so a Company that is both a Customer and a Service Provider is sent as 3.</p>                                                |
| **ContractName**      | String                      | Always present in Packet messages                                              | The name of the contract.                                                                                                                                                                                                                                                                                     |
| **CustomerName**      | String                      | Always present in Packet messages                                              | The name of the customer.                                                                                                                                                                                                                                                                                     |
| **DefaultCurrency**   | Object                      | Always present in Packet messages                                              | The default currency of the Contract the work item is transacting under, returned as an object with the fields GUID, Name, Retired, Code, NumericCode, IsCommon, Symbol and DecimalDigits.                                                                                                                    |
| **DueDate**           | String (ISO 8601 date/time) | Present in Packet messages, null until the work item is submitted              | The date/time the work item is currently due, to meet its SLA.                                                                                                                                                                                                                                                |
| **From**              | String                      | Always present in NewCommunication messages                                    | The 'from' email address, if included in the email/message format.                                                                                                                                                                                                                                            |
| **GUID**              | String (GUID)               | Always present                                                                 | The unique identifier of the object the message is about. For Packet events this is the work item, for NewCommunication it's the communication itself, and for Business Object events it's the Company or Schedule.                                                                                           |
| **Importance**        | Integer                     | Always present in NewCommunication messages                                    | <p>The importance of the communication:</p><p>0 = Normal</p><p>1 = Low</p><p>2 = High</p>                                                                                                                                                                                                                     |
| **Name**              | String                      | Present in Company and Schedule messages only                                  | The name of the object, as set by the user.                                                                                                                                                                                                                                                                   |
| **PacketGUID**        | String (GUID)               | Present in NewCommunication messages only                                      | Identifies the work item the communication belongs to.                                                                                                                                                                                                                                                        |
| **ProcessType**       | Integer                     | Always present in Packet messages                                              | <p>The process type:</p><p>1 = Case</p><p>2 = Ticket</p><p>3 = Action</p>                                                                                                                                                                                                                                     |
| **ProcessTypeName**   | String                      | Always present in Packet messages                                              | The name of the process type, for example "Start Employee".                                                                                                                                                                                                                                                   |
| **RAGStatus**         | Integer                     | Always present in Packet messages                                              | <p>The RAG status of the work item:</p><p>-2 = ToBeDetermined</p><p>-1 = Overdue</p><p>0 = DueToday</p><p>1 = DueInFuture</p>                                                                                                                                                                                 |
| **Reference**         | String                      | Always present in Packet messages                                              | This is a system-generated identifier for a work item, it follows Enate's own formatting.                                                                                                                                                                                                                     |
| **ResolvedOn**        | String (ISO 8601 date/time) | Present in Packet messages, null until the work item is resolved               | The date/time the work item was resolved.                                                                                                                                                                                                                                                                     |
| **ServiceLineName**   | String                      | Always present in Packet messages                                              | The name of the service line.                                                                                                                                                                                                                                                                                 |
| **ServiceName**       | String                      | Always present in Packet messages                                              | The name of the service.                                                                                                                                                                                                                                                                                      |
| **StartDate**         | String (ISO 8601 date/time) | Always present in Packet messages                                              | The date/time the work item was created.                                                                                                                                                                                                                                                                      |
| **StartedByMethod**   | Integer                     | Always present in Packet messages                                              | <p>The method by which the work item was started:</p><p>0 = ByWorkflow</p><p>1 = ByOperationalUser</p><p>2 = BySelfServiceUser</p><p>3 = ByRobotUser</p><p>4 = ByEmail</p><p>5 = FromTicket</p><p>6 = ByOperationalUserInBulk</p><p>7 = ByRobotUserInBulk</p><p>8 = BySchedule</p><p>9 = AsLinkedWorkItem</p> |
| **Status**            | Integer                     | Always present in Packet messages                                              | <p>The status of the work item:</p><p>0 = Draft</p><p>1 = To Do</p><p>2 = In Progress</p><p>3 = Waiting</p><p>4 = Resolved</p><p>5 = Closed</p>                                                                                                                                                               |
| **Subject**           | String                      | Always present in NewCommunication messages                                    | This is pulled from the subject field of the communication, if it has one.                                                                                                                                                                                                                                    |
| **SupplierName**      | String                      | Always present in Packet messages                                              | The name of the supplier.                                                                                                                                                                                                                                                                                     |
| **Title**             | String                      | Present in Packet messages, null until the work item is submitted              | The title of the work item, set by the user (or by whatever is creating the work item) on submission.                                                                                                                                                                                                         |
| **To**                | String                      | Always present in NewCommunication messages                                    | The 'to' email addresses of the communication, separated by "; ".                                                                                                                                                                                                                                             |

A PacketUpdated message for a Case in progress looks like this:

```json
{
  "GUID": "878409be-7886-eb11-b9ad-e86a64437383",
  "StartDate": "2026-09-14T09:32:41",
  "CustomerName": "Globex Corporation",
  "SupplierName": "Initech",
  "ContractName": "Capital Discovery",
  "DefaultCurrency": {
    "GUID": "5f2c1d84-9b30-4a77-8e61-2d0c4f7a9b12",
    "Name": "US Dollar",
    "Retired": false,
    "Code": "USD",
    "NumericCode": 840,
    "IsCommon": true,
    "Symbol": "$",
    "DecimalDigits": 2
  },
  "ServiceName": "HR Relief",
  "ServiceLineName": "East Coast",
  "ProcessTypeName": "Start Employee",
  "Reference": "200243-C",
  "Title": "New starter: Priya Raman",
  "Status": 2,
  "DueDate": "2026-09-18T17:00:00",
  "ResolvedOn": null,
  "RAGStatus": 1,
  "ProcessType": 1,
  "StartedByMethod": 1
}
```

### Parameters Required Explanation

These are the fields you send when you create or update a subscription.

| Field                 | Type          | Required/Optional                                                                                                   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| --------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Webhook**           | Integer       | Required                                                                                                            | <p>The Webhook being subscribed to, sent as its integer value:</p><p>0 = PacketCreated</p><p>1 = PacketUpdated</p><p>2 = NewCommunication</p><p>3 = BusinessObjectCreated</p><p>4 = SpecificBusinessObjectUpdated</p><p>5 = BusinessObjectTypeUpdated</p>                                                                                                                                                                                                |
| **FilterObjectType**  | Integer       | Required for every Webhook                                                                                          | <p>The ID for the type of object being filtered by:</p><p>Company = 31</p><p>Packet (work item) = 81</p><p>Contract = 215</p><p>Service = 217</p><p>Schedule = 260</p><p>Case definition = 911</p><p>Ticket definition = 915</p><p>Action definition = 964</p>                                                                                                                                                                                           |
| **FilterObjectGUID**  | String (GUID) | Required for PacketCreated, PacketUpdated, NewCommunication and SpecificBusinessObjectUpdated. Not used by the rest | <p>The identifying GUID of the object you're scoping the subscription to:</p><ul><li>PacketCreated: the GUID of the Company, Contract, Service, or Case / Ticket / Action definition</li><li>PacketUpdated and NewCommunication: the GUID of the work item</li><li>SpecificBusinessObjectUpdated: the GUID of the Company or Schedule</li><li>BusinessObjectCreated and BusinessObjectTypeUpdated: leave it out, these are scoped by type only</li></ul> |
| **SubscriberURL**     | String        | Required                                                                                                            | A valid absolute URL (including `http://` or `https://`) which can receive the Webhook message.                                                                                                                                                                                                                                                                                                                                                          |
| **CustomHeader**      | String        | Optional                                                                                                            | Adds a custom header to all messages sent by the Webhook subscription. It can be used, for example, to include additional authentication information to ensure incoming messages are genuine, or to enrich incoming messages to make them easier to identify and process. Spaces in the name are replaced with hyphens.                                                                                                                                  |
| **CustomHeaderValue** | String        | Optional                                                                                                            | Adds a corresponding value to the custom header on all messages sent by the Webhook subscription.                                                                                                                                                                                                                                                                                                                                                        |

### Note on creating Webhook subscriptions:

For creating subscriptions, the FilterObjectType and the FilterObjectGUID should match up according to the item you want to receive messages about, i.e. if you want to know about **Packets Created** for a particular **Company** then you would use:

* FilterObjectType = 31 (Company in the EnateObjects enum). Or alternatively Contract = 215, Service = 217
* FilterObjectGUID = \<any valid Company GUID you can access>
* WebHook = 0 (PacketCreated)

So a complete request body looks like this:

```json
{
  "Webhook": 0,
  "FilterObjectType": 31,
  "FilterObjectGUID": "3b5e7c9a-0d21-4e68-9f14-7c2a8b6d5e03",
  "SubscriberURL": "https://integrations.globex.example.com/enate/new-work-items",
  "CustomHeader": "Globex source",
  "CustomHeaderValue": "enate-packet-created"
}
```

That subscription is stored with the header name `Globex-source`, because spaces aren't valid in HTTP header names.

### Rules Applied When You Subscribe

Enate validates every subscription before it's saved. The table below lists the checks and the message you get back if one fails.

| Check                                                                                                                             | Message returned                                                                                        |
| --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `FilterObjectType` is supplied                                                                                                    | Missing value, FilterObjectType is mandatory and must be supplied.                                      |
| `SubscriberURL` is supplied, and isn't the literal text `string`                                                                  | Missing value, Subscriber URL is mandatory and must be supplied.                                        |
| `Webhook` is a value Enate recognises                                                                                             | Missing value, WebHook type is mandatory and must be supplied.                                          |
| `SubscriberURL` is an absolute `http` or `https` URL                                                                              | The supplied subscription URL is not valid.                                                             |
| For BusinessObjectCreated, SpecificBusinessObjectUpdated and BusinessObjectTypeUpdated, `FilterObjectType` is Company or Schedule | Missing value, WebHook type is mandatory and must be supplied.                                          |
| Your account has permission on the object you're scoping to                                                                       | User with GUID '...' does not have the required permission to access the '...' with the GUID '...'.     |
| You don't already have an identical subscription                                                                                  | A WebHook subscription with the same settings already exists. Duplicate subscriptions are not permitted |

{% hint style="info" %}
Note: a subscription counts as a duplicate when the Webhook, FilterObjectType, FilterObjectGUID, SubscriberURL and owning user account all match an existing one. Change any one of those, for example point it at a different URL, and it's allowed.
{% endhint %}

{% hint style="info" %}
Note: if you're trying things out in Swagger, remember to replace the placeholder text in the `SubscriberURL` field. Enate rejects a subscription whose `SubscriberURL` is the literal word `string`.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.enate.net/enate-help/integrations/enate-integrations/webhooks/enates-webhooks.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
