# Call Outcome Added Webhook

Webhook event triggered when a call outcome is recorded in iClosed.io.

## Overview

The Call Outcome Added webhook is triggered whenever a call outcome is recorded after a call is completed in your iClosed.io account. This event provides comprehensive information about the call, its outcome, and any associated deals or transactions.

## Event Details

| Property | Value |
|  --- | --- |
| **Event Type** | `outcomeAdded` |
| **Trigger** | When a call outcome is recorded (sale, no sale, reschedule, etc.) |
| **Payload** | Complete call outcome data with contact and deal information |


## Webhook Payload

The HTTP body is a single JSON object (not an array). It contains the complete call outcome information with the following structure:

```json
{
  "uuid": 158,
  "userId": 4,
  "eventName": "Email Only",
  "eventId": 3,
  "eventType": "STRATEGY_EVENT",
  "eventDuration": 30,
  "eventDurationUnit": "MINUTES",
  "eventColor": "#0099FF",
  "closerName": "Shahab Hamid ",
  "email": "carl.stanley@example.com",
  "firstName": "Carl",
  "lastName": "Stanley",
  "contactId": 225,
  "phoneNumber": null,
  "closerEmail": "shahab@iclosed.io",
  "callOutcome": "SALE",
  "callType": "STRATEGY_CALL_BOOKED",
  "objection": "PARTNER",
  "startTime": "2026-03-30T04:00:00.000Z",
  "notes": "<!DOCTYPE quill-output-html><p>Closed Laptop SKU after ROI walkthrough.</p>",
  "callPreviewId": "call_K6gp95iufSjx",
  "triggerWhen": "Added",
  "productName": "Laptop",
  "deal": {
    "transactionType": "WON",
    "createdAt": "2026-04-09T09:30:46.175Z",
    "value": 188,
    "recurring": false,
    "product": {
      "name": "Laptop"
    }
  },
  "transaction": [],
  "dealValue": 188,
  "hookType": "Outcome added"
}
```

## Key Fields Explained

### Call Information

| Field | Description |
|  --- | --- |
| `uuid` | Unique identifier for the call outcome record |
| `userId` | ID of the user who recorded the outcome |
| `eventName` | Name of the event/call type |
| `eventId` | ID of the associated event |
| `eventDuration` | Duration of the call |
| `eventDurationUnit` | Unit of duration (e.g., `"MINUTES"`) |


### Contact Information

| Field | Description |
|  --- | --- |
| `email` | Contact's email address |
| `contactId` | Unique contact identifier |
| `firstName`, `lastName` | Contact's name |
| `phoneNumber` | Contact's phone number |


### Call Outcome Details

| Field | Description |
|  --- | --- |
| `closerEmail` | Email of the person who conducted the call |
| `callOutcome` | Result of the call (e.g., `"SALE"`, `"NO_SALE"`, `"RESCHEDULE"`) |
| `noSaleReason` | Reason for no sale (if applicable) |
| `objection` | Any objections raised during the call |
| `startTime` | When the call started |
| `notes` | Additional notes about the call |


### Deal Information

| Field | Description |
|  --- | --- |
| `dealValue` | Value of the deal (if a sale was made) |
| `productName` | Name of the product/service sold |
| `deal.transactionType` | Type of transaction (e.g., `"WON"`, `"SALE"`) |
| `deal.recurring` | Whether the deal is recurring |
| `deal.product` | Nested product metadata (e.g., `{ "name": "…" }`) |
| `eventType`, `eventColor`, `closerName`, `callType` | Event and closer context for the outcome row |
| `callPreviewId`, `triggerWhen` | Call preview identifier and when the outcome was recorded |
| `deal.createdAt` | When the deal was created |
| `deal.value` | Deal value |
| `transaction` | Array of transaction details (may be empty) |
| `hookType` | Set to `"Outcome added"` to identify the event type |


## Call Outcome Types

### Sale Outcomes

| Value | Description |
|  --- | --- |
| `SALE` | Call resulted in a successful sale |
| `PARTIAL_SALE` | Call resulted in a partial sale |


### No Sale Outcomes

| Value | Description |
|  --- | --- |
| `NO_SALE` | Call did not result in a sale |
| `NOT_INTERESTED` | Contact was not interested |
| `PRICE_OBJECTION` | Price was the main objection |
| `TIMING_OBJECTION` | Timing was the main objection |
| `AUTHORITY_OBJECTION` | Contact doesn't have authority to buy |
| `NEED_OBJECTION` | Contact doesn't see the need |


### Other Outcomes

| Value | Description |
|  --- | --- |
| `RESCHEDULE` | Call was rescheduled |
| `NO_SHOW` | Contact didn't show up for the call |
| `CANCELLED` | Call was cancelled |


## Use Cases

This webhook is useful for:

- **Sales Tracking** – Monitor sales performance and outcomes
- **CRM Updates** – Update your CRM with call results and deal information
- **Analytics** – Track conversion rates and sales metrics
- **Commission Calculations** – Automate commission tracking for sales
- **Follow-up Automation** – Trigger follow-up actions based on call outcomes
- **Reporting** – Generate sales reports and performance analytics
- **Lead Scoring** – Update lead scores based on call outcomes


## Response Requirements

Your webhook endpoint should:

- Return a `2xx` status code to acknowledge receipt
- Respond within **5 seconds** to avoid retries
- Handle duplicate events (idempotency)
- Log the call outcome `uuid` for debugging purposes
- Process deal information if a sale was made


## Best Practices

1. **Check Call Outcome** – Use the `callOutcome` field to determine appropriate actions
2. **Handle Different Outcomes** – Different outcomes may require different processing logic
3. **Validate Deal Data** – Ensure deal information is complete before processing sales
4. **Track Performance** – Use this data for sales performance analytics
5. **Update Lead Status** – Update lead status based on call outcomes
6. **Trigger Follow-ups** – Automate follow-up actions based on outcomes