---
title: "Events API v1.1 Technical Overview"
description: "Send server-side or CRM-based conversion events to Knotch"
url: https://help.knotch.com/en/articles/159-events-api-v11-technical-overview
collection: "Events API"
updated: 2026-04-28
language: en
---

# Events API v1.1 Technical Overview

Send server-side or CRM-based conversion events to Knotch

### **Overview**

The Knotch Events API lets you send server-side conversion events from CRMs, data warehouses, or analytics tools directly into Knotch. These events can then be measured, filtered, and attributed alongside Site Events (Conversions, Actions) in Knotch One — connecting your offline outcomes (like Closed Won, SQL, or Renewal) to your digital content performance.

  
These events will appear as ‘API Conversions’ throughout Knotch One — including Event Builder, Dashboards, Leaderboards, Funnels, Quadrants, and more — and can be found in all the places where Site Conversions (standard Knotch Conversions) are displayed.

**You can use this API to:**

-   Send conversion or engagement events from your CRM, marketing automation, or analytics tools
    
-   Validate event payloads in simulation mode before sending live data
    
-   Track API-based conversions alongside native Knotch events
    
-   Attribute API Conversions to site content, performance metrics, and visitor journeys
    

* * *

### Authentication

All requests must be sent over HTTPS and include your Knotch API key.

```javascript
Authorization: Bearer <api-key>
```

To obtain or rotate an API key, contact your Knotch Client Success Manager.

* * *

### Endpoints

**1\. Direct API Endpoint**  
Use this endpoint to POST events directly from your server or automation platform.

```javascript
POST https://events.knotch.it/conversion_events/<account_id>?simulate=false
Content-Type: application/json
Authorization: Bearer <api-key>
```

**2\. Segment Webhook Endpoint**  
The Knotch Events API also supports Segment Webhooks — allowing clients to stream data directly from Segment to Knotch with no SDK changes.

```javascript
POST https://events.knotch.it/conversion_events/segment/<account_id>
```

**Segment setup steps:**

1.  Go to Connections → Catalog → Destinations → Webhooks (Actions).
    
2.  Configure the Webhook or Destination Function to point to your Knotch endpoint.
    
3.  Add an Authorization header (Bearer <api-key>).
    
4.  Map your fields to match the payload schema below.
    

* * *

### Payload Schema

Each request includes an "events" array (up to 100 events per batch). The identity field below is strictly an example; however, the ID string passed in should align with the agreed-upon tracked ID prior to integration. Only a single custom ID is currently supported.

```javascript
{
  "events": [
    {
      "event": {
        "event_name": "ClosedWon",
        "timestamp": 1720727400,
        "event_id": "OPP-12345"
      },
      "identity": {
        "gclid": {
          "value": "CjwK...",
          "first_seen": 1724800000,
          "last_seen": 1724886400
      },
      "value": {
        "value": 50000.00,
      },
      "event_source": ["Salesforce"],
      "test_event_code": "TEST123"
    }
  ]
}
```

### Field Definitions & Requirements

<table data-id="8d8f9797-d499-4970-9e77-537c49d6bbcb" style="min-width: 100px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p data-id="60e08835-fd8c-4e8d-a403-f61239e34e0a"><strong><u>Field</u></strong></p></td><td colspan="1" rowspan="1"><p data-id="59674fab-e075-4b10-a355-59d820baebb8"><strong><u>Type</u></strong></p></td><td colspan="1" rowspan="1"><p data-id="83429666-aed1-49eb-ae08-c504bf2818a4"><strong><u>Required</u></strong></p></td><td colspan="1" rowspan="1"><p data-id="3e79edf6-a94d-4bdd-98b5-9481f71bdf8f"><strong><u>Description</u></strong></p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="3016228e-6e40-4dfa-9274-72bdc9d2719d"><code>events</code></p></td><td colspan="1" rowspan="1"><p data-id="0b57cc24-7ce6-4bd6-b1c1-cc5de2dad324">List</p></td><td colspan="1" rowspan="1"><p data-id="a6f5a706-d8a0-4dce-ad93-9a392ebbaa29"><span data-name="check_mark_button" data-type="emoji">✅</span></p></td><td colspan="1" rowspan="1"><p data-id="7335875a-3910-4a9d-8a61-ab4a57cf3283">List of events. Can have maximum of 100 unique events. Requires at least 1 event.</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="e276cf5f-0111-435e-ad39-5239d8fc6074"><code>event</code></p></td><td colspan="1" rowspan="1"><p data-id="64dac906-b8df-4736-825e-127af0dd8791">Object</p></td><td colspan="1" rowspan="1"><p data-id="7f2fa751-2c35-4f44-ba8c-2835476b0702"><span data-name="check_mark_button" data-type="emoji">✅</span></p></td><td colspan="1" rowspan="1"><p data-id="aaa28bc5-1d5c-410a-ae6a-9630b0487aa1">Event-level object</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="4c7ec2d5-0558-45da-a3bb-379b5648b0c5"><code>event_name</code></p></td><td colspan="1" rowspan="1"><p data-id="129a1565-891b-48d2-b083-88b0c7cc5017">String</p></td><td colspan="1" rowspan="1"><p data-id="e264b079-0b44-446e-b248-b3937fc12020"><span data-name="check_mark_button" data-type="emoji">✅</span></p></td><td colspan="1" rowspan="1"><p data-id="2305dd2a-d1a8-498c-a345-986434b520e2">Name of the event (e.g.,&nbsp;<code>FormSubmitted</code>,&nbsp;<code>ClosedWon</code>)</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="0d6ecd99-7e97-4f06-ad94-42ee6ebf445f"><code>timestamp</code></p></td><td colspan="1" rowspan="1"><p data-id="9b3de6fe-7938-4ff1-a91c-87b4eea37daf">Integer</p></td><td colspan="1" rowspan="1"><p data-id="6ed3e9b2-3afa-466b-a5bf-edc5af233fc5"><span data-name="check_mark_button" data-type="emoji">✅</span></p></td><td colspan="1" rowspan="1"><p data-id="949674f1-3fd3-4a69-9161-ef636d5a8bfc">UTC Unix timestamp (e.g.,&nbsp;<code>1729538400</code>)</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="032e6d5f-ce22-40f7-8e23-ea6767748208"><code>event_id</code></p></td><td colspan="1" rowspan="1"><p data-id="c9c0631c-f3c2-4be3-a7ce-37374bd089cb">String</p></td><td colspan="1" rowspan="1"><p data-id="6a68c685-b2a7-47b8-9b51-490449eb6d49"><span data-name="check_mark_button" data-type="emoji">✅</span></p></td><td colspan="1" rowspan="1"><p data-id="303ce09e-38b1-4585-b25d-bfedf5334026">Unique identifier for the event</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="78c7efb9-4b7e-4f08-a2f3-ea98c886b697"><code>identity</code></p></td><td colspan="1" rowspan="1"><p data-id="dfb6928f-12e0-4782-887f-41de9b7440bd">Object</p></td><td colspan="1" rowspan="1"><p data-id="1ddde89d-9e59-4083-a81e-fd854ae841cd"><span data-name="check_mark_button" data-type="emoji">✅</span></p></td><td colspan="1" rowspan="1"><p data-id="8368e245-9054-4141-a37b-bd9affa077a9">Identity object used for ID resolution and key value pairing</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="1c35bfaa-7b3c-46cd-a43a-a28a1ef999a1"><code>gclid</code></p></td><td colspan="1" rowspan="1"><p data-id="1fb7a865-e3ee-4fbb-a8cc-2858225d46a0">String</p></td><td colspan="1" rowspan="1"><p data-id="db07a816-42f2-48c4-90fe-a9b4e7ca7491">–</p></td><td colspan="1" rowspan="1"><p data-id="7a3cfe18-744a-4081-b3ee-80f59d70d4aa">Google Click ID</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="9fb00afb-6f36-4c8b-96bd-30716ac13c02"><code>value</code></p></td><td colspan="1" rowspan="1"><p data-id="ef1b6304-d239-46a3-a142-b7f527c24ee8">Object</p></td><td colspan="1" rowspan="1"><p data-id="9886d616-a8ea-47c7-8b8a-3031866ff3fd">-</p></td><td colspan="1" rowspan="1"><p data-id="5ce1adc5-59db-4031-a002-34406d87226f">Value object used for passing in value or revenue data for offline events</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="da242b9f-e3fb-4919-bc72-2fc7a1e2269d"><code>value</code></p></td><td colspan="1" rowspan="1"><p data-id="953cbbc2-57e0-4e13-815b-faf31b74eb69">Float</p></td><td colspan="1" rowspan="1"><p data-id="edc37b9e-2a0d-463c-934c-2b2de62b6bd0">–</p></td><td colspan="1" rowspan="1"><p data-id="a2645ad4-e743-45cb-a202-204ca54114f7">Revenue or numeric value associated with the event</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="9ff8a98a-9614-4f98-9e2f-c63f08209d11"><code>event_source</code></p></td><td colspan="1" rowspan="1"><p data-id="47366123-5f96-4a90-bbbe-116289b15f6c">Array</p></td><td colspan="1" rowspan="1"><p data-id="4a731095-da1e-4b36-b07a-7242968fc07d">–</p></td><td colspan="1" rowspan="1"><p data-id="5d055410-783e-4d9a-8e7c-660794480278">Source of the event (e.g., Salesforce, Marketo)</p></td></tr></tbody></table>

* * *

### Response Codes

<table data-id="658f2388-a5c7-4247-aab7-66a50af6e542" style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p data-id="a3f63fed-2cf9-4570-9776-8536322fc1ef"><strong><u>Code</u></strong></p></td><td colspan="1" rowspan="1"><p data-id="eae063f1-850f-48cd-a778-36133ff30b55"><strong><u>Summary</u></strong></p></td><td colspan="1" rowspan="1"><p data-id="e71be2e3-80d7-4c0a-a203-adaa49b7ad04"><strong><u>Description</u></strong></p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="73dfd164-c6f0-431a-963b-5b9f7a5565f7">200</p></td><td colspan="1" rowspan="1"><p data-id="6da57f55-a879-420b-86ff-bff2ed5ed182">OK</p></td><td colspan="1" rowspan="1"><p data-id="e6e04702-5e6c-4a88-9cc9-61ac329544a5">Everything worked as expected</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="46174fcb-6fd9-4c94-bed6-86c7df73b502">400</p></td><td colspan="1" rowspan="1"><p data-id="8c190785-4a89-4d6c-999d-f87880ced529">Bad Request</p></td><td colspan="1" rowspan="1"><p data-id="a0a474ab-f007-4487-9280-a513fa5dad90">Failed due to unknown errors</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="0b07c301-ec00-4427-a5eb-2dcd60b2f3d8">403</p></td><td colspan="1" rowspan="1"><p data-id="b2267c6a-474b-4a33-96aa-5e3856d6883a">Unauthorized</p></td><td colspan="1" rowspan="1"><p data-id="2ea30f6f-100f-4b79-ba4b-8b45ed600b4f">The API key doesn’t have permissions to perform the request</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="697912bd-c8db-489f-aa24-d956ae524620">422</p></td><td colspan="1" rowspan="1"><p data-id="de70d46f-4d79-442f-ac59-7a83068b72f1">Invalid payload</p></td><td colspan="1" rowspan="1"><p data-id="93f3257b-291f-4841-9dfb-e262be4795ea">The request was unacceptable, often due to missing a required parameter</p></td></tr><tr><td colspan="1" rowspan="1"><p data-id="f023216e-2043-4aab-af27-d26ed8da8872">500, 502, 503, 504</p></td><td colspan="1" rowspan="1"><p data-id="89a8c9d7-fddf-4be7-82ce-fde75511c442">Server Errors</p></td><td colspan="1" rowspan="1"><p data-id="52098d7a-1a07-466c-a2ba-4e8ef356da6e">Something went wrong on Knotch’s end</p></td></tr></tbody></table>

* * *

### Deduplication & Validation

• Maximum 100 events per request  
• Deduplication is performed by event\_id (and identity when available)  
• Duplicate events return HTTP 409 Conflict  
• Validation ensures at least one identity (e.g., Knotch ID or external ID)

* * *

### Segment Authentication & Security

• Add an Authorization header to your Segment webhook:  
`Authorization: Bearer <api-key>`  
• Each Webhook Action includes an X-Signature HMAC (Segment signs the first event in each batch). Knotch validates this for security.  
• Segment retries failed posts with exponential backoff.  
• Deduplication uses messageId when present.

### Example cURL (Direct POST)

```javascript
curl -X POST 'https://events.knotch.it/conversion_events/56045b70-62ec-9c4e-0a2b-744300000000?simulate=false' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <api-key>' \
  -H 'Content-Type: application/json' \
  -d '{
    "events": [{
      "event": { "event_name": "ClosedWon", "timestamp": 1720727400, "event_id": "OPP-12345" },
      "identity": { "gclid": "66876767" },
      "value": { "value": 50000 }
    }]
  }'
```

* * *

### Testing & QA

You can safely test your integration by setting:

```javascript
simulate=true
```

This validates structure, required fields, and authentication without storing any data.  
You’ll receive 200 OK with the message:

```javascript
{"message": "Events validated successfully"}
```

* * *

### **What You’ll See in Knotch Once**

Once your API Conversion Events are successfully received, you’ll see them appear across Knotch One similar to Site Conversions.

**Where they appear:**

-   **Conversions Leaderboard** - listed as API Conversion events alongside your Site Conversions, complete with attributed content metrics (metrics refresh every 24 hours)
    
-   **Conversions Dashboard** – in the Conversions live data filter as API Conversions
    
-   **Pages and Tags Leaderboards** – in the Conversions live data filter as API Conversions
    
-   **Quadrants** – in the Conversions live data filter as API Conversions
    
-   **Funnels** – in Funnel Builder, when adding Conversions to your step conditions, you can select Site or API Conversions
    

> 💡 Tip: If your event doesn’t immediately appear, confirm that the event name matches your saved Event definition and that the identity string was properly included in your event payload.
