Oktopost

Webhooks

Subscribe to real-time events in your Oktopost account and receive instant notifications via HTTP callbacks.

Webhooks enable you to build integrations that subscribe to events happening in your Oktopost account. When an event occurs, Oktopost sends an HTTP POST request to the URL you specify, allowing you to trigger automated workflows, sync data to external systems, or build custom notifications.

How Webhooks Work

  1. Create a webhook - Specify which event to monitor and where to send notifications
  2. Event occurs - When the subscribed event happens in Oktopost, a webhook is triggered
  3. Receive notification - Oktopost sends an HTTP POST request to your endpoint with event details
  4. Process the event - Your application receives and processes the webhook payload

Webhooks are sent in real-time as events occur. For event history and debugging, use the Webhook Log endpoint to review past webhook executions.

Supported Events

You can subscribe to the following event types when creating or updating webhooks:

Advocacy Events

Event TypeDescription
newAdvocacyMessageTriggers when a new message is added to the advocacy board
newAdvocacyStoryTriggers when a new story is added to the advocacy board
newAdvocacyTopicTriggers when a new topic is added to the advocacy board

Publishing Events

Event TypeDescription
postCreatedTriggers when a user creates a new post
postModifiedTriggers when a user updates a scheduled post
postDeletedTriggers when a user deletes a scheduled post
postSentTriggers when a post is published to social media

Engagement Events

Event TypeDescription
newInboxItemTriggers when a new item appears in the inbox
newCommentOnInboxItemTriggers when a new comment or reply is added to an existing Post, Reply, or Mention item
newDirectMessageOnInboxItemTriggers when a new direct message is added to an existing Conversation item
inboxItemRepliedTriggers when an Oktopost user sends a reply or direct message from the inbox
newNoteOnInboxItemTriggers when a note is added to an inbox item
newInboxItemAssignmentTriggers when an inbox item is assigned to a user
inboxItemStatusChangeTriggers when an inbox item is opened or closed
inboxItemTagChangeTriggers when tags are added to or removed from an inbox item

Legacy event types remain supported. Existing subscriptions using newConversation, conversationUpdated, newNoteOnConversation, newAssignment, or conversationStatusUpdated continue to receive events. The legacy newEngagementItem and updatedEngagementItem integrations are also supported.

conversationUpdated is retained only for backward compatibility. For new integrations, subscribe to newCommentOnInboxItem and newDirectMessageOnInboxItem. Reactions and post-content changes do not trigger these customer-facing webhooks.

When a closed inbox item receives a new comment or direct message, Oktopost reopens the item and sends both the applicable content event and inboxItemStatusChange. It does not send newInboxItem because the item already exists.

Lead & Conversion Events

Event TypeDescription
newLeadTriggers when a new lead (with an email address) is captured
newLeadActivityTriggers when new social activity is detected for a lead
newConversionTriggers when a social conversion is captured

Workflow Events

Event TypeDescription
newApprovalItemTriggers when posts or messages are sent to approval
approvalItemApprovedTriggers when posts or messages are approved
approvalItemRejectedTriggers when posts or messages are rejected

Other Events

Event TypeDescription
newCampaignTriggers when a new campaign is created

List Webhooks

Retrieve all webhooks configured in your account with optional filtering and pagination.

Parameters

ParameterTypeRequiredDescription
eventStringNoFilter by event type. See supported events above.
nameStringNoSearch webhooks by name
_orderStringNoSort order. Options: name, description, lastExecutionDate, isEnabled, created, modified. Default: name
_pageIntegerNoPage number for pagination. Default: 0
_countIntegerNoItems per page. Options: 20, 25, 50, 100. Default: 20

Request

curl -u ACCOUNT_ID:API_KEY \
  "https://api.oktopost.com/v2/webhook"

Response

{
	"Result": true,
	"Items": [
		{
			"Id": "0WA000000000001",
			"Name": "My Webhook",
			"Description": "Send new assignment to Slack",
			"Event": "newInboxItemAssignment",
			"Url": "https://hooks.slack.com/services/...",
			"LastExecutionDate": "2024-01-15 10:30:00",
			"IsEnabled": 1,
			"Created": "2017-05-23 14:07:18",
			"Modified": "2017-05-23 14:07:18"
		}
	],
	"Total": 1
}

Get Webhook

Retrieve details for a specific webhook by ID.

Request

curl -u ACCOUNT_ID:API_KEY \
  https://api.oktopost.com/v2/webhook/0WA000000000001

Response

{
	"Result": true,
	"Webhook": {
		"Id": "0WA000000000001",
		"Name": "My Webhook",
		"Description": "Send new assignment to Slack",
		"Event": "newInboxItemAssignment",
		"Url": "https://hooks.slack.com/services/...",
		"LastExecutionDate": "2024-01-15 10:30:00",
		"IsEnabled": 1,
		"Created": "2017-05-23 14:07:18",
		"Modified": "2017-05-23 14:07:18"
	}
}

Create Webhook

Create a new webhook to subscribe to a specific event type.

Parameters

ParameterTypeRequiredDescription
eventStringYesThe event type to subscribe to. See supported events above.
nameStringYesA descriptive name for this webhook
urlStringYesThe endpoint URL where webhook payloads will be sent
descriptionStringNoAdditional details about this webhook's purpose
isEnabledIntegerNoEnable or disable the webhook. 1 = enabled, 0 = disabled. Default: 1

Request

curl -u ACCOUNT_ID:API_KEY \
  https://api.oktopost.com/v2/webhook -X POST \
  -d event="newInboxItemAssignment" \
  -d name="Slack Assignment Notification" \
  -d description="Send assignment notifications to Slack" \
  -d url="https://hooks.slack.com/services/..." \
  -d isEnabled=1

Response

{
	"Result": true,
	"Webhook": {
		"Id": "0WA000000000001",
		"Name": "Slack Assignment Notification",
		"Description": "Send assignment notifications to Slack",
		"Event": "newInboxItemAssignment",
		"Url": "https://hooks.slack.com/services/...",
		"LastExecutionDate": "-",
		"IsEnabled": 1,
		"Secret": "a1b2c3d4e5f6...",
		"Created": "2017-05-23 14:07:18",
		"Modified": "2017-05-23 14:07:18"
	}
}

When creating a webhook, a Secret is generated. Use this secret to verify that webhook requests are genuinely from Oktopost (see Security section below).

Update Webhook

Modify an existing webhook's configuration.

Parameters

ParameterTypeRequiredDescription
eventStringNoChange the event type this webhook subscribes to
nameStringNoUpdate the webhook name
urlStringNoUpdate the destination URL
descriptionStringNoUpdate the description
isEnabledIntegerNoEnable or disable the webhook. 1 = enabled, 0 = disabled

Request

curl -u ACCOUNT_ID:API_KEY \
  https://api.oktopost.com/v2/webhook/0WA000000000001 -X POST \
  -d name="Updated Webhook Name" \
  -d description="Updated description" \
  -d isEnabled=0

Response

{
	"Result": true,
	"Webhook": {
		"Id": "0WA000000000001",
		"Name": "Updated Webhook Name",
		"Description": "Updated description",
		"Event": "newInboxItemAssignment",
		"Url": "https://hooks.slack.com/services/...",
		"LastExecutionDate": "2024-01-15 10:30:00",
		"IsEnabled": 0,
		"Created": "2017-05-23 14:07:18",
		"Modified": "2024-01-16 09:15:32"
	}
}

Delete Webhook

Remove a webhook. This action cannot be undone.

Request

curl -u ACCOUNT_ID:API_KEY \
  https://api.oktopost.com/v2/webhook/0WA000000000001 -X DELETE

Response

{
	"Result": true
}

List Webhook Events

Retrieve the non-deprecated webhook event types that can be used when creating a webhook. Authenticate the same way as other webhook endpoints.

Request

curl -u ACCOUNT_ID:API_KEY \
  "https://api.oktopost.com/v2/webhook/events"

Response

{
	"Result": true,
	"Events": [
		"newAdvocacyMessage",
		"postSent",
		"newInboxItem",
		"newCampaign"
	]
}

The live array includes every non-deprecated event type, not only the keys shown.

Get Webhook Event

Return a canned sample payload for one event type. The event key is the last path segment. Samples use placeholder IDs and dates; they are not data from your account.

Sample is usually a JSON object; for some events (for example newAdvocacyTopic) it is a JSON array.

Request

curl -u ACCOUNT_ID:API_KEY \
  https://api.oktopost.com/v2/webhook/events/postSent

Response

{
	"Result": true,
	"Event": "postSent",
	"Sample": {
		"Id": "pst00000000000000",
		"Created": "2026-01-01 12:00:00",
		"Modified": "2026-01-01 12:05:00",
		"Status": "sent",
		"AccountId": "001000000000000",
		"CreatedBy": "usr00000000000000",
		"ModifiedBy": "usr00000000000000",
		"Source": "app",
		"ContentSource": "manual",
		"Queued": "2026-01-01 11:59:00",
		"CampaignId": "002000000000000",
		"BoardId": "",
		"MessageId": "msg00000000000000",
		"MessageChildId": "",
		"MessageStatus": "approved",
		"Network": "linkedin",
		"StartDateTime": "2026-01-01 12:00:00",
		"Groups": [],
		"GroupsCount": 0,
		"TotalCount": 1,
		"TargetGeo": "",
		"UpdateStatus": "",
		"Flag": "",
		"Clicks": 0,
		"Converts": 0,
		"Comments": 0,
		"NewComments": 0,
		"Likes": 0,
		"Utm": "",
		"ApproveStatus": "approved",
		"Credentials": "cre00000000000000",
		"ProfileIds": ["cre00000000000000"],
		"Profiles": [
			{
				"Id": "cre00000000000000",
				"Name": "Sample Profile",
				"LongName": "Sample Profile (LinkedIn)",
				"Type": "company",
				"Thumbnail": "https://example.com/thumb.png",
				"URL": "https://www.linkedin.com/company/sample"
			}
		],
		"Postlogs": [
			{
				"Id": "pl000000000000000",
				"PostURL": "https://www.linkedin.com/feed/update/urn:li:activity:0",
				"MessageId": "msg00000000000000",
				"ProfileId": "cre00000000000000"
			}
		]
	}
}

Webhook Log

View the execution history for a specific webhook, including response codes, execution times, and payloads sent.

Request

curl -u ACCOUNT_ID:API_KEY \
  https://api.oktopost.com/v2/webhook-log/0WA000000000001

Response

{
	"Result": true,
	"Items": [
		{
			"Id": "0WC000000000001",
			"WebhookPayloadId": "0WB000000000001",
			"Created": "2017-05-23 14:07:18",
			"ResponseCode": 200,
			"ExecutionTime": 0.034530,
			"Payload": {
				"event": "newInboxItemAssignment",
				"data": [
					{
						"Item": {
							"Id": "eitm00000000004",
							"ItemType": "Post",
							"Origin": "external"
						},
						"Assignee": {
							"Id": "00A000000000002",
							"Email": "assignee@example.com"
						}
					}
				]
			}
		}
	],
	"Total": 1
}

Response Fields

FieldDescription
ResponseCodeHTTP status code returned by your webhook endpoint
ExecutionTimeTime in seconds it took your endpoint to respond
PayloadThe complete webhook payload that was sent to your endpoint

Use webhook logs to:

  • Debug webhook delivery issues
  • Monitor webhook performance
  • Review historical event data
  • Verify payload structures

Webhook Payload Structure

When an event occurs, Oktopost sends a POST request to your webhook URL. The event-specific data value is an array. A single action normally produces one array element; bulk inbox actions can produce multiple elements.

{
	"event": "newAssignment",
	"timestamp": 1705315200,
	"webhookId": "0WA000000000001",
	"data": {
		// Event-specific data
	}
}

newInboxItem

Sent when a new item appears in the inbox.

[
	{
		"Id": "eitm00000000001",
		"Created": "2026-08-04 07:12:59",
		"EventDate": "2026-08-04 07:12:52",
		"Network": "Facebook",
		"ItemType": "Post",
		"Status": "open",
		"Url": "https://app.oktopost.com/inbox/eitm00000000001",
		"Origin": "external",
		"Data": {
			"PostId": "123456789_987654321",
			"PostURL": "https://www.facebook.com/123456789_987654321",
			"Profile": {
				"Id": "123456789",
				"Name": "Acme",
				"Picture": "https://example.com/acme.png",
				"Type": "page"
			},
			"CommentProfile": {
				"Id": "111222333",
				"Name": "Jordan Lee",
				"Picture": "https://example.com/jordan.png",
				"Type": "person"
			},
			"PostContent": {
				"Text": "We're hiring a product designer.",
				"Media": []
			},
			"CommentContent": {
				"Text": "Is this role remote?",
				"Media": []
			},
			"CommentDate": "2026-08-04 07:12:52"
		}
	}
]

newCommentOnInboxItem

Sent for a new comment or reply on an existing Post, Reply, or Mention item. The event record contains Item and Text. When an Oktopost user replies from the inbox, use inboxItemReplied instead.

[
	{
		"Item": {
			"Id": "eitm00000000002",
			"Created": "2026-08-04 07:12:59",
			"EventDate": "2026-08-04 07:48:32",
			"Network": "Facebook",
			"ItemType": "Post",
			"Status": "open",
			"Url": "https://app.oktopost.com/inbox/eitm00000000002",
			"Origin": "owned",
			"Data": {
				"PostId": "123456789_987654321",
				"PostURL": "https://www.facebook.com/123456789_987654321",
				"Profile": {
					"Id": "123456789",
					"Name": "Acme",
					"Picture": "https://example.com/acme.png",
					"Type": "page"
				},
				"CommentProfile": {
					"Id": "111222333",
					"Name": "Jordan Lee",
					"Picture": "https://example.com/jordan.png",
					"Type": "person"
				},
				"PostContent": {
					"Text": "We're hiring a product designer.",
					"Media": []
				},
				"CommentContent": {
					"Text": "A new comment",
					"Media": []
				},
				"CommentDate": "2026-08-04 07:48:32"
			}
		},
		"Text": "A new comment"
	}
]

newDirectMessageOnInboxItem

Sent for a new direct message on an existing Conversation item. The record contains Item and Text.

[
	{
		"Item": {
			"Id": "eitm00000000003",
			"Created": "2026-08-04 11:43:36",
			"EventDate": "2026-08-04 11:43:10",
			"Network": "Instagram",
			"ItemType": "Conversation",
			"Status": "open",
			"Url": "https://app.oktopost.com/inbox/eitm00000000003",
			"Origin": "external",
			"Data": {
				"Profile": {
					"Id": "123456789",
					"Name": "Acme",
					"Picture": "https://example.com/acme.png",
					"Type": "page"
				},
				"RemoteProfile": {
					"Id": "555666777",
					"Name": "Jordan Lee",
					"Picture": "https://example.com/jordan.png",
					"Type": "person"
				},
				"LatestMessage": {
					"Text": "A new direct message",
					"ProfileId": "0sp000000000001"
				},
				"PreviousMessage": {
					"Text": "Hi, I'd like to learn more.",
					"ProfileId": "0sp000000000002"
				}
			}
		},
		"Text": "A new direct message"
	}
]

inboxItemReplied

Sent when an Oktopost user replies or sends a direct message from the inbox. The record contains Item, Author, and Text.

[
	{
		"Item": {
			"Id": "eitm00000000002",
			"Created": "2026-08-04 07:12:59",
			"EventDate": "2026-08-04 07:48:32",
			"Network": "Facebook",
			"ItemType": "Post",
			"Status": "open",
			"Url": "https://app.oktopost.com/inbox/eitm00000000002",
			"Origin": "owned",
			"Data": {
				"PostId": "123456789_987654321",
				"PostURL": "https://www.facebook.com/123456789_987654321",
				"Profile": {
					"Id": "123456789",
					"Name": "Acme",
					"Picture": "https://example.com/acme.png",
					"Type": "page"
				},
				"CommentProfile": {
					"Id": "123456789",
					"Name": "Acme",
					"Picture": "https://example.com/acme.png",
					"Type": "page"
				},
				"PostContent": {
					"Text": "We're hiring a product designer.",
					"Media": []
				},
				"CommentContent": {
					"Text": "Thanks for reaching out — I'll follow up shortly.",
					"Media": []
				},
				"CommentDate": "2026-08-04 07:48:32"
			}
		},
		"Author": {
			"Id": "00A000000000001",
			"Name": "Alex Rivera",
			"Email": "alex.rivera@example.com",
			"LastLogin": "2026-08-03 13:25:33"
		},
		"Text": "Thanks for reaching out — I'll follow up shortly."
	}
]

newNoteOnInboxItem

The record contains Item, NoteAuthor, and NoteMessage.

[
	{
		"Item": {
			"Id": "eitm00000000004",
			"Created": "2026-08-04 07:12:59",
			"EventDate": "2026-08-04 07:12:52",
			"Network": "Facebook",
			"ItemType": "Post",
			"Status": "open",
			"Url": "https://app.oktopost.com/inbox/eitm00000000004",
			"Origin": "external",
			"Data": {
				"PostId": "123456789_987654321",
				"PostURL": "https://www.facebook.com/123456789_987654321",
				"Profile": {
					"Id": "123456789",
					"Name": "Acme",
					"Picture": "https://example.com/acme.png",
					"Type": "page"
				},
				"CommentProfile": {
					"Id": "111222333",
					"Name": "Jordan Lee",
					"Picture": "https://example.com/jordan.png",
					"Type": "person"
				},
				"PostContent": {
					"Text": "We're hiring a product designer.",
					"Media": []
				},
				"CommentContent": {
					"Text": "Is this role remote?",
					"Media": []
				},
				"CommentDate": "2026-08-04 07:12:52"
			}
		},
		"NoteAuthor": {
			"Id": "00A000000000001",
			"Name": "Alex Rivera",
			"Email": "alex.rivera@example.com",
			"LastLogin": "2026-08-03 13:25:33"
		},
		"NoteMessage": "Please follow up tomorrow."
	}
]

newInboxItemAssignment

The record contains Item, Assigner, Assignee, and Note.

[
	{
		"Item": {
			"Id": "eitm00000000004",
			"Created": "2026-08-04 07:12:59",
			"EventDate": "2026-08-04 07:12:52",
			"Network": "Facebook",
			"ItemType": "Post",
			"Status": "open",
			"Url": "https://app.oktopost.com/inbox/eitm00000000004",
			"Origin": "external",
			"Data": {
				"PostId": "123456789_987654321",
				"PostURL": "https://www.facebook.com/123456789_987654321",
				"Profile": {
					"Id": "123456789",
					"Name": "Acme",
					"Picture": "https://example.com/acme.png",
					"Type": "page"
				},
				"CommentProfile": {
					"Id": "111222333",
					"Name": "Jordan Lee",
					"Picture": "https://example.com/jordan.png",
					"Type": "person"
				},
				"PostContent": {
					"Text": "We're hiring a product designer.",
					"Media": []
				},
				"CommentContent": {
					"Text": "Is this role remote?",
					"Media": []
				},
				"CommentDate": "2026-08-04 07:12:52"
			}
		},
		"Assigner": {
			"Id": "00A000000000001",
			"Name": "Assigning User",
			"Email": "assigner@example.com",
			"LastLogin": "2026-08-03 13:25:33"
		},
		"Assignee": {
			"Id": "00A000000000002",
			"Name": "Assigned User",
			"Email": "assignee@example.com",
			"LastLogin": "2026-08-03 10:00:00"
		},
		"Note": ""
	}
]

inboxItemStatusChange

The record contains Item, User, and OldStatus. The new status is available in Item.Status.

[
	{
		"Item": {
			"Id": "eitm00000000004",
			"Created": "2026-08-04 07:12:59",
			"EventDate": "2026-08-04 07:12:52",
			"Network": "Facebook",
			"ItemType": "Post",
			"Status": "closed",
			"Url": "https://app.oktopost.com/inbox/eitm00000000004",
			"Origin": "external",
			"Data": {
				"PostId": "123456789_987654321",
				"PostURL": "https://www.facebook.com/123456789_987654321",
				"Profile": {
					"Id": "123456789",
					"Name": "Acme",
					"Picture": "https://example.com/acme.png",
					"Type": "page"
				},
				"CommentProfile": {
					"Id": "111222333",
					"Name": "Jordan Lee",
					"Picture": "https://example.com/jordan.png",
					"Type": "person"
				},
				"PostContent": {
					"Text": "We're hiring a product designer.",
					"Media": []
				},
				"CommentContent": {
					"Text": "Is this role remote?",
					"Media": []
				},
				"CommentDate": "2026-08-04 07:12:52"
			}
		},
		"User": {
			"Id": "00A000000000001",
			"Name": "Alex Rivera",
			"Email": "alex.rivera@example.com",
			"LastLogin": "2026-08-03 13:25:33"
		},
		"OldStatus": "open"
	}
]

inboxItemTagChange

The record contains Item, User, OldTags, and NewTags.

[
	{
		"Item": {
			"Id": "eitm00000000004",
			"Created": "2026-08-04 07:12:59",
			"EventDate": "2026-08-04 07:12:52",
			"Network": "Facebook",
			"ItemType": "Post",
			"Status": "open",
			"Url": "https://app.oktopost.com/inbox/eitm00000000004",
			"Origin": "external",
			"Data": {
				"PostId": "123456789_987654321",
				"PostURL": "https://www.facebook.com/123456789_987654321",
				"Profile": {
					"Id": "123456789",
					"Name": "Acme",
					"Picture": "https://example.com/acme.png",
					"Type": "page"
				},
				"CommentProfile": {
					"Id": "111222333",
					"Name": "Jordan Lee",
					"Picture": "https://example.com/jordan.png",
					"Type": "person"
				},
				"PostContent": {
					"Text": "We're hiring a product designer.",
					"Media": []
				},
				"CommentContent": {
					"Text": "Is this role remote?",
					"Media": []
				},
				"CommentDate": "2026-08-04 07:12:52"
			}
		},
		"User": {
			"Id": "00A000000000001",
			"Name": "Alex Rivera",
			"Email": "alex.rivera@example.com",
			"LastLogin": "2026-08-03 13:25:33"
		},
		"OldTags": [],
		"NewTags": [
			{
				"Id": "etg000000000001",
				"Created": "2026-08-02 08:20:05",
				"Modified": "2026-08-02 08:20:05",
				"InboxId": "ein000000000001",
				"Value": "priority"
			}
		]
	}
]

postSent Event:

{
	"event": "postSent",
	"timestamp": 1705315200,
	"webhookId": "0WA000000000001",
	"data": {
		"postId": "0PL000000000001",
		"network": "LinkedIn",
		"campaignId": "002000000000001",
		"sentAt": "2024-01-15 10:30:00"
	}
}

newLeadActivity Event:

{
	"event": "newLeadActivity",
	"timestamp": 1705315200,
	"webhookId": "0WA000000000001",
	"data": {
		"Id": "act000000000001",
		"ContactId": "0ld000000000001",
		"ActivityDate": "2024-01-15 10:30:00",
		"AccountId": "001000000000001",
		"Type": "comment",
		"Network": "LinkedIn",
		"ProfileId": "003-001000000000001-123456",
		"PostlogId": "007000000000000",
		"Data": {}
	}
}

approvalItemApproved Event:

{
	"event": "approvalItemApproved",
	"timestamp": 1705315200,
	"webhookId": "0WA000000000001",
	"data": {
		"WorkflowItemID": "004000000000001",
		"StoryID": "0ST000000000001",
		"BoardID": "0BD000000000001",
		"PostId": null,
		"MessageId": null,
		"Network": "LinkedIn",
		"WorkflowId": "cwf000000000001",
		"ApprovedBy": "00A000000000001",
		"ApprovedAt": "2024-01-15 10:30:00"
	}
}

Approval webhook payloads (newApprovalItem, approvalItemApproved, approvalItemRejected) include WorkflowItemID, StoryID, and BoardID fields. The entity is resolved in order: StoryIDPostIdMessageId (only one will be populated).

When available, inbox item payloads include a Language field containing an automatically detected ISO 639-1 language code, such as en, fr, or es. When language detection is unavailable, the field is null.

Security Best Practices

Verify Webhook Signatures

Use the webhook Secret to verify that requests are genuinely from Oktopost:

const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
  const expectedSignature = crypto
    .createHmac('sha1', secret)
    .update(JSON.stringify(payload))
    .digest('hex');
  
  return signature === expectedSignature;
}

Endpoint Requirements

Your webhook endpoint should:

  • Respond quickly - Return a 2xx status code within 5 seconds
  • Use HTTPS - All webhook URLs must use HTTPS
  • Handle retries - Oktopost retries failed webhooks up to 3 times
  • Be idempotent - Handle duplicate webhook deliveries gracefully
  • Validate payloads - Always verify the webhook secret before processing

Error Handling

If your endpoint returns a non-2xx status code or times out:

  • Oktopost will retry the webhook up to 3 times
  • Retries use exponential backoff (5s, 25s, 125s)
  • After 3 failed attempts, the webhook delivery is abandoned
  • Check the webhook log to diagnose delivery issues

Common Use Cases

Slack Notifications

Send real-time alerts to Slack when conversations are assigned or posts are published.

CRM Integration

Automatically create or update CRM records when new leads or conversions are captured.

Custom Analytics

Stream event data to your analytics platform for custom reporting and dashboards.

Workflow Automation

Trigger automated workflows in tools like Zapier, Make, or n8n based on Oktopost events.

Audit Logging

Maintain a complete audit trail of all activities in an external database.

Getting Started

To start using webhooks:

  1. Set up an endpoint - Create a publicly accessible HTTPS endpoint to receive webhooks
  2. Create a webhook - Use the API to create a webhook pointing to your endpoint
  3. Test the webhook - Trigger the subscribed event in Oktopost to test delivery
  4. Verify signatures - Implement signature verification for security
  5. Handle errors - Add error handling and logging to your webhook handler
  6. Monitor logs - Use the webhook log endpoint to monitor delivery and troubleshoot issues

For questions or assistance with webhook implementation, please contact our support team.