Documentation Index
Fetch the complete documentation index at: https://docs.botdog.co/llms.txt
Use this file to discover all available pages before exploring further.
When you create a webhook, you subscribe to one or more of the event types below. Each event is delivered as a JSON POST to your endpoint with a signed header.
Supported events
| Event type | Human label | Sent when… |
|---|
LEAD_PROFILE_VISITED | Profile visited | Botdog visits a lead’s LinkedIn profile as part of a campaign step. |
LEAD_INVITATION_SENT | Invitation sent | A connection invitation is sent to a lead. |
LEAD_INVITATION_ACCEPTED | Invitation accepted | A lead accepts a connection invitation from your account. |
LEAD_MESSAGE_SENT | Message sent | An outbound message is sent to a lead. |
LEAD_MESSAGE_REPLIED | Received a reply | A lead replies to one of your messages. |
Shared fields
Every payload includes the following base fields:
| Field | Type | Description |
|---|
id | string | Unique delivery id. Use it to deduplicate retries. |
timestamp | string (ISO 8601) | When Botdog generated the event. |
eventType | string | One of the values from the table above. |
humanReadableEventName | string | Friendly label, e.g. "Invitation sent". |
campaignId | string | The campaign that produced the event. |
campaignName | string | The campaign’s display name at delivery time. |
botdogUserId | string | The Botdog user the action was performed under. |
botdogUserEmail | string | Email of that Botdog user. |
botdogUserLinkedinPublicUrl | string | LinkedIn URL of that Botdog user. |
All lead events (every event except those tagged CAMPAIGN_* in future versions) also include contact fields:
| Field | Type | Description |
|---|
contactName | string | Full name from the lead’s LinkedIn profile. |
contactLinkedinUrl | string | The lead’s public LinkedIn URL. |
contactEmails | string[] | Known email addresses for the lead (may be empty). |
contactPhones | string[] | Known phone numbers for the lead (may be empty). |
contactCompanyName | string | Current company from the lead’s LinkedIn profile. |
Per-event fields are documented below.
LEAD_PROFILE_VISITED
Sent when Botdog visits a lead’s profile as part of a campaign step.
Extra fields
| Field | Type | Description |
|---|
visitedAt | string (ISO 8601) | When the visit took place. |
Example payload
{
"id": "evt_8d2a1f0c",
"eventType": "LEAD_PROFILE_VISITED",
"humanReadableEventName": "Profile visited",
"timestamp": "2026-05-28T12:34:56.000Z",
"campaignId": "cmp_01H…",
"campaignName": "Q2 DACH founders",
"botdogUserId": "usr_01H…",
"botdogUserEmail": "you@example.com",
"botdogUserLinkedinPublicUrl": "https://www.linkedin.com/in/your-handle",
"contactName": "Ada Lovelace",
"contactLinkedinUrl": "https://www.linkedin.com/in/adalovelace",
"contactEmails": ["ada@example.com"],
"contactPhones": [],
"contactCompanyName": "Analytical Engines Ltd.",
"visitedAt": "2026-05-28T12:34:56.000Z"
}
LEAD_INVITATION_SENT
Sent when a connection invitation is sent to a lead.
Extra fields
| Field | Type | Description |
|---|
sentAt | string (ISO 8601) | When the invitation was sent. |
message | string | null | The note included with the invitation, if any. |
Example payload
{
"id": "evt_92b41cd5",
"eventType": "LEAD_INVITATION_SENT",
"humanReadableEventName": "Invitation sent",
"timestamp": "2026-05-28T12:35:10.000Z",
"campaignId": "cmp_01H…",
"campaignName": "Q2 DACH founders",
"botdogUserId": "usr_01H…",
"botdogUserEmail": "you@example.com",
"botdogUserLinkedinPublicUrl": "https://www.linkedin.com/in/your-handle",
"contactName": "Ada Lovelace",
"contactLinkedinUrl": "https://www.linkedin.com/in/adalovelace",
"contactEmails": ["ada@example.com"],
"contactPhones": [],
"contactCompanyName": "Analytical Engines Ltd.",
"sentAt": "2026-05-28T12:35:10.000Z",
"message": "Hi Ada — would love to connect."
}
LEAD_INVITATION_ACCEPTED
Sent when a lead accepts your connection invitation.
Extra fields
| Field | Type | Description |
|---|
acceptedAt | string (ISO 8601) | When the acceptance was detected. |
Example payload
{
"id": "evt_a17bcd03",
"eventType": "LEAD_INVITATION_ACCEPTED",
"humanReadableEventName": "Invitation accepted",
"timestamp": "2026-05-29T09:02:31.000Z",
"campaignId": "cmp_01H…",
"campaignName": "Q2 DACH founders",
"botdogUserId": "usr_01H…",
"botdogUserEmail": "you@example.com",
"botdogUserLinkedinPublicUrl": "https://www.linkedin.com/in/your-handle",
"contactName": "Ada Lovelace",
"contactLinkedinUrl": "https://www.linkedin.com/in/adalovelace",
"contactEmails": ["ada@example.com"],
"contactPhones": [],
"contactCompanyName": "Analytical Engines Ltd.",
"acceptedAt": "2026-05-29T09:02:31.000Z"
}
LEAD_MESSAGE_SENT
Sent when an outbound message is delivered to a lead on LinkedIn.
Extra fields
| Field | Type | Description |
|---|
sentAt | string (ISO 8601) | When the message was sent. |
message | string | The message body. |
Example payload
{
"id": "evt_b3e1f240",
"eventType": "LEAD_MESSAGE_SENT",
"humanReadableEventName": "Message sent",
"timestamp": "2026-05-29T10:15:00.000Z",
"campaignId": "cmp_01H…",
"campaignName": "Q2 DACH founders",
"botdogUserId": "usr_01H…",
"botdogUserEmail": "you@example.com",
"botdogUserLinkedinPublicUrl": "https://www.linkedin.com/in/your-handle",
"contactName": "Ada Lovelace",
"contactLinkedinUrl": "https://www.linkedin.com/in/adalovelace",
"contactEmails": ["ada@example.com"],
"contactPhones": [],
"contactCompanyName": "Analytical Engines Ltd.",
"sentAt": "2026-05-29T10:15:00.000Z",
"message": "Thanks for connecting, Ada! Curious if you've explored…"
}
LEAD_MESSAGE_REPLIED
Sent when a lead replies to one of your messages.
Extra fields
| Field | Type | Description |
|---|
repliedAt | string (ISO 8601) | When the reply was received. |
message | string | The reply body. |
Example payload
{
"id": "evt_c44d8e91",
"eventType": "LEAD_MESSAGE_REPLIED",
"humanReadableEventName": "Received a reply",
"timestamp": "2026-05-29T15:48:22.000Z",
"campaignId": "cmp_01H…",
"campaignName": "Q2 DACH founders",
"botdogUserId": "usr_01H…",
"botdogUserEmail": "you@example.com",
"botdogUserLinkedinPublicUrl": "https://www.linkedin.com/in/your-handle",
"contactName": "Ada Lovelace",
"contactLinkedinUrl": "https://www.linkedin.com/in/adalovelace",
"contactEmails": ["ada@example.com"],
"contactPhones": [],
"contactCompanyName": "Analytical Engines Ltd.",
"repliedAt": "2026-05-29T15:48:22.000Z",
"message": "Hey — happy to chat. Tuesday afternoon work for you?"
}
Field stability
- Field additions are non-breaking. Botdog may add new fields to existing payloads as features ship. Treat unknown fields as forward-compatible and ignore them.
- Removals or renames are breaking and will be announced in the Changelog.
- Test event payloads sent from the dashboard’s Send test event action use the same shape as production deliveries, with stub contact data.