ConnectMachine for Teams Is Here — Unlock bulk pricing and scale your workflow.

Book a Demo
ConnectMachine
Features Pricing Roadmap Docs Partner program Contact Us
Features Pricing Roadmap Docs Partner program Contact Us

Webhook Integration

  • Overview
  • Supported Events
  • Create a Webhook
  • Send a Test Event
  • Delivery
  • Payload
  • Best Practices & Troubleshooting
Contact Webhooks

Webhook Integration

Receive real-time contact events from ConnectMachine on your own HTTPS endpoint. Keep your CRM, automation platform, warehouse, or internal tools in sync without polling.

01 · Introduction

Overview

Subscribe to contact events and ConnectMachine sends a JSON POST to your HTTPS endpoint whenever one fires. Deliveries are asynchronous and retried on transient failures.

!

HTTPS required

Receiver URLs must be HTTPS and publicly reachable — localhost and private hosts are rejected.

02 · Catalog

Supported Events

Three event types cover the full contact lifecycle.

Event When it fires
contacts.created A contact is created manually or imported.
contacts.updated A contact is updated, tagged, or linked with notetaker / session data.
contacts.deleted One or more contacts are deleted.

03 · Setup

Create a Webhook

  1. Open webhook settings in ConnectMachine.
  2. Add your HTTPS endpoint as the destination URL.
  3. Choose events to subscribe to.
  4. Save, then send a test event below.
  5. Check delivery logs for status and timings.

04 · Try it

Send a Test Event

Fire a sample contacts.* delivery to verify your endpoint accepts the payload and returns 2xx.

Test delivery

Your URL must be HTTPS, publicly reachable, and respond within 10 seconds.
i

CORS note

If the browser blocks the call with a CORS error, send the same request from your server or curl instead.

05 · Delivery

Delivery

Every delivery is a JSON POST with the headers below. Transient failures are retried; logs show the result.

Content-Type application/json
X-ConnectMachine-Event contacts.created | contacts.updated | contacts.deleted
X-ConnectMachine-Delivery-ID unique delivery UUID
1

Success

Any 2xx response marks the delivery as delivered.

2

Retried

Network errors, timeouts, and 408 / 425 / 429 / 5xx are retried.

3

Failed

Most other 3xx / 4xx responses are treated as permanent failures.

  • Timeout: 10 seconds.
  • Retries: up to 3, 6 minutes apart (4 attempts total).
  • Logs: include status, status_code, timings, and a response body capped at 4096 bytes.

06 · Payload

Payload

Created and updated events share an envelope wrapping one or more contact objects. Deleted events carry IDs only.

Envelope

JSON · Envelope
{
  "event_id": "delivery_id",
  "occurred_at": "2026-05-15T10:30:00Z",
  "source": "contact_import",
  "source_id": "import_id",
  "batch": {
    "index": 1,
    "count": 100,
    "max_size": 100
  },
  "data": {
    "event_type": "contacts.created",
    "contacts": []
  }
}

Top-level fields

Reference for the Payload Envelope.

FieldTypeDescription
event_id string (uuid) Stable identifier for this delivery. Use it for idempotency.
occurred_at string (ISO 8601) UTC timestamp of when the change happened in ConnectMachine.
source string · optional Present when the trigger is known — for example contact_import or test. Omitted for ordinary manual create/update/delete.
source_id string · optional Identifier of the originating import or API call, when applicable.
batch object · optional Present for chunked deliveries: index, count, max_size.
data object Event payload. Contains event_type (one of contacts.created, contacts.updated, contacts.deleted) and either contacts (for created/updated) or contact_ids (for deleted).

Contact body

A complete sample contacts.created delivery, with the contact field reference alongside.

JSON · contacts.created
{
  "event_id": "delivery_id",
  "occurred_at": "2026-05-15T10:30:00Z",
  "source": "contact_import",
  "source_id": "import_id",
  "batch": {
    "index": 1,
    "count": 100,
    "max_size": 100
  },
  "data": {
    "event_type": "contacts.created",
    "contacts": [
      {
        "id": "contact_id",
        "first_name": "John",
        "last_name": "Doe",
        "company": "Example Corp",
        "job_title": "Product Manager",
        "label": "Work",
        "notes": "Met at event",
        "primary_email": "john.doe@example.com",
        "primary_phone": "+15550101010",
        "emails": [{ "label": "Work", "value": "john.doe@example.com" }],
        "phones": [{ "label": "Mobile", "value": "+15550101010" }],
        "websites": [{ "label": "Company", "value": "https://example.com" }],
        "socials": [
          { "linkedin_url": "https://linkedin.com/in/john-doe" },
          { "github_url": "https://github.com/john-doe" }
        ],
        "custom": [{ "label": "CRM Owner", "value": "Sales" }],
        "address": {
          "formatted": "123 Market Street, San Francisco, CA, USA, 94105",
          "raw": {}
        },
        "where_we_met": {
          "formatted": "Moscone Center, San Francisco, CA, USA",
          "raw": {}
        },
        "tags": [{ "name": "Conference", "type": "event" }],
        "notetaker_sessions": [
          {
            "session_id": "session_id",
            "title": "Meeting note",
            "summary_url": "https://...",
            "audio_url": "https://...",
            "created_at": "2026-05-15T10:00:00Z",
            "updated_at": "2026-05-15T10:05:00Z"
          }
        ],
        "created_at": "2026-05-15T10:00:00Z",
        "updated_at": "2026-05-15T10:05:00Z"
      }
    ]
  }
}

Contact fields

Reference for each object inside contacts[].

FieldTypeDescription
idstring (uuid)ConnectMachine contact identifier. Stable across updates.
first_namestringGiven name.
last_namestringFamily name.
companystringOrganization the contact is associated with.
job_titlestringRole or title at company.
labelstringInternal label used to categorize the contact.
notesstringFree-form notes captured against the contact.
primary_emailstringThe default email surfaced in the UI.
primary_phonestringThe default phone number surfaced in the UI.
emailsarray<{label, value}>All emails on the contact with their labels.
phonesarray<{label, value}>All phone numbers on the contact with their labels.
websitesarray<{label, value}>Web links associated with the contact.
socialsarray<{<platform>_url: string}>Linked social profiles. Each entry is an object with a single <platform>_url key (e.g. linkedin_url, github_url) mapped to the profile URL.
customarray<{label, value}>Custom user-defined fields.
addressobjectformatted string plus structured raw components.
where_we_metobjectOptional met-at location with the same shape as address.
tagsarray<{name, type}>Tags attached to the contact.
notetaker_sessionsarray<object>Linked NoteTaker sessions: session_id, title, summary_url, audio_url, timestamps.
created_atstring (ISO 8601)When the contact was first created.
updated_atstring (ISO 8601)When the contact was last modified.

Deleted events

Same envelope, but contacts is replaced by contact_ids.

JSON · contacts.deleted
{
  "event_id": "delivery_id",
  "occurred_at": "2026-05-15T10:30:00Z",
  "source": "manual",
  "source_id": "source_id",
  "data": {
    "event_type": "contacts.deleted",
    "contact_ids": ["contact_id"]
  }
}

07 · Tips

Best Practices & Troubleshooting

Best Practices

  • Return 2xx quickly — acknowledge first, queue slow work for the background.
  • Be idempotent — events can be redelivered; key off X-ConnectMachine-Delivery-ID.
  • Tolerate missing optional fields — not every contact has every field.
  • Log event_type and delivery_id for traceability.
  • Keep responses small — bodies are truncated to 4096 bytes in logs.

Troubleshooting

Problem What to check
No events received Webhook is active, the event is subscribed, and the URL is a public HTTPS endpoint.
Delivery failed with 4xx Check route, auth, body parser, and response code.
Delivery retries Receiver timed out or returned 408 / 425 / 429 / 5xx.
No delivery log yet Delivery is still pending — pending attempts aren't listed.
Deleted event has no contacts Deleted events send contact_ids only.
Let’s create your
Digital Business Card
Download App Now

We’d love to hear from you, let’s have a conversation about what we do and how we can help your brand.

hi@connectmachine.ai
ConnectMachine
Features Pricing Help Release notes Roadmap Docs Partner program Contact Us

2026 Connect Machine Inc. All Right Reserved

Privacy Policy Terms of Services