The Webhooks enable you to subscribe to Growth-X events. This subscription allows you to receive HTTP POST requests from Growth-X at an endpoint of your choosing and integrate with other systems. Each event from Growth-X comes with a distinct payload, which is included in the body of the request as an
application/json
Setup:
1. Open settings panel
2. Click on integrations and choose webhooks
3. Click new webhooks
4. Once you clicked the button a screen will appear for the setup.
a. Name: An easy way for you to organize and search for webhooks
b. URL: The URL where you want to receive HTTP requests.
c. Event Type: Choose the types of events you want to be notified about through webhooks.
5. Hit create and make sure to enable it for event’s to start broadcasting.
Event types and schemas.
Technical part of event types, what schemas to expect on given event type and examples.
Event data schema definition in Python
from typing import Literal, TypedDict, Generic, TypeVar
from enum import Enum
T = TypeVar('T', bound=TypedDict)
class EventData(Generic[T], TypedDict):
client: str # Email of Growth-X client
event_type: Literal[
"connection.created",
"connection.updated",
"message.created",
"tag.attached",
"tag.detached"
]
occurred_at: str # isoformat 'YYYY-MM-DD HH:MM:SS.mmmmmm'.
attempt_number: int # max 3 attempts
data: T
data_type: Literal["connection", "message", "tag"]
class ConnectionData(TypedDict):
id: int
connection_date: str
full_conversation: list[dict] | None
class ConnectionDataWithAssociations(TypedDict):
id: int
connection_date: str
full_conversation: list[dict] | None
user: UserData
receiver: ReceiverData
campaign: CampaignData | None
class MessageData(TypedDict):
id: int
sent_date: str
content: str
type: MessageType | str
user: UserData
receiver: ReceiverData
campaign: CampaignData | None
class TagData(TypedDict):
id: int
name: str
receiver: ReceiverData
class ReceiverData(TypedDict):
id: int
first_name: str
last_name: str
email: str | None
username: str | None
linkedin_url: str | None
headline: str | None
company: str | None
phone: str | None
location: str | None
twitter_url: str | None
websites: str | None
birthday: str | None
class UserData(TypedDict):
id: int
email: str | None # Email of LinkedIn user
class CampaignData(TypedDict):
id: int
name: str
class MessageType(str, Enum):
INVITE = "invite"
MESSAGE_REQUEST = "message_request"
INMAIL = "inmail"
MESSAGE = "message"
SECOND_MESSAGE = "second_message"
THIRD_MESSAGE = "third_message"
RESPONSE = "response"
NURTURE = "nurture"
NURTURE_FIRST_FOLLOWUP = "nurture_first_followup"
NURTURE_SECOND_FOLLOWUP = "nurture_second_followup"
NURTURE_THIRD_FOLLOWUP = "nurture_third_followup"
Event types and example of broadcasted data
Event type: connection created
Connection created event is broadcasted when Growth-X saves a new LinkedIn connection
Example:
{
"clinet": "client@growth-x.com",
"event_type": "connection.created",
"occured_at": "2025-01-24 16:30:39.698",
"attempt_number": 1,
"data_type": "connection",
"data": {
"id": 1,
"connection_date": "2025-01-24 14:30:39.698",
"full_conversation": [
{
"sender": "user",
"message": "Hello, how are you?",
"sent_date": "2025-01-23 14:41:39.698",
"linkedin_id": "example_1==",
"inbox": "sn"
},
{
"sender": "receiver",
"message": "I'm fine, thank you.",
"sent_date": "2025-01-24 14:41:39.698",
"linkedin_id": "example_1==",
"inbox": "sn"
}
],
"user": {
"id": 1,
"email": "test@growth-x.com"
},
"receiver": {
"id": 1,
"first_name": "Riccardo",
"last_name": "Pissano",
"email": "r@growth-x.com",
"username": "rikypisano",
"linkedin_url": "https://www.linkedin.com/in/rikypisano/",
"headline": "CEO @ Growth-X.com | Identify and Convert High-Intent B2B Leads into LinkedIn Connections for Free",
"company": "Growth-X",
"phone": "9548333333",
"location": "Miami, Florida, United States",
"twitter_url": "https://twitter.com/rikypisano",
"websites": "https://growth-x.com",
"birthday": null
},
"campaign": {
"id": 1,
"name": "Test Campaign"
}
}
}
connection.created event data type definition in Python
EventData[ConnectionDataWithAssociations]
Event type: connection updated
Connection updated event is broadcasted when Growth-X updates inbox with new conversation
Example:
{
"clinet": "client@growth-x.com",
"event_type": "connection.updated",
"occured_at": "2025-01-24 16:30:39.698",
"attempt_number": 1,
"data_type": "connection",
"data": {
"id": 1,
"connection_date": "2025-01-24 14:30:39.698",
"full_conversation": [
{
"sender": "user",
"message": "Hello, how are you?",
"sent_date": "2025-01-23 14:41:39.698"
},
{
"sender": "receiver",
"message": "I'm fine, thank you.",
"sent_date": "2025-01-24 14:41:39.698"
}
]
}
}
connection.updated event data type definition in Python
EventData[ConnectionData]
Event type: message created
Message created event is broadcasted when Growth-X saves a new message, including Invite and your follow-up messages, as well as responses from the receiver.
Example:
{
"clinet": "client@growth-x.com",
"event_type": "message.created",
"occured_at": "2025-01-24 16:30:39.698",
"attempt_number": 1,
"data_type": "message",
"data": {
"id": 1,
"sent_date": "2025-01-24 16:30:39.698",
"content": "Let's schedule demo.",
"type": "response",
"user": {
"id": 1,
"email": "test@growth-x.com"
},
"receiver": {
"id": 1,
"first_name": "Riccardo",
"last_name": "Pissano",
"email": "r@growth-x.com",
"username": "rikypisano",
"linkedin_url": "https://www.linkedin.com/in/rikypisano/",
"headline": "CEO @ Growth-X.com | Identify and Convert High-Intent B2B Leads into LinkedIn Connections for Free",
"company": "Growth-X",
"phone": "9548333333",
"location": "Miami, Florida, United States",
"twitter_url": "https://twitter.com/rikypisano",
"websites": "https://growth-x.com",
"birthday": null
},
"campaign": {
"id": 1,
"name": "Test Campaign"
}
}
}
message.created event data type definition in Python
EventData[MessageData]
Event type: tag attached
Tag attached event is broadcasted whenever a tag is attached to a receiver. Tag can be attached to receiver in inbox or in prospects tab. Growth-X sentiment analyser attaches
positive-ai-defined
tag which will also be broadcasted.Example:
{
"clinet": "client@growth-x.com",
"event_type": "tag.attached",
"occured_at": "2025-01-24 16:30:39.698",
"attempt_number": 1,
"data_type": "tag",
"data": {
"id": 1,
"name": "positive",
"receiver": {
"id": 1,
"first_name": "Riccardo",
"last_name": "Pissano",
"email": "r@growth-x.com",
"username": "rikypisano",
"linkedin_url": "https://www.linkedin.com/in/rikypisano/",
"headline": "CEO @ Growth-X.com | Identify and Convert High-Intent B2B Leads into LinkedIn Connections for Free",
"company": "Growth-X",
"phone": "9548333333",
"location": "Miami, Florida, United States",
"twitter_url": "https://twitter.com/rikypisano",
"websites": "https://growth-x.com",
"birthday": null
}
}
}
Event type: tag detached
Tag detached event is broadcasted whenever tag is removed from receiver
Example:
{
"clinet": "client@growth-x.com",
"event_type": "tag.detached",
"occured_at": "2025-01-24 16:30:39.698",
"attempt_number": 1,
"data_type": "tag",
"data": {
"id": 1,
"name": "positive",
"receiver": {
"id": 1,
"first_name": "Riccardo",
"last_name": "Pissano",
"email": "r@growth-x.com",
"username": "rikypisano",
"linkedin_url": "https://www.linkedin.com/in/rikypisano/",
"headline": "CEO @ Growth-X.com | Identify and Convert High-Intent B2B Leads into LinkedIn Connections for Free",
"company": "Growth-X",
"phone": "9548333333",
"location": "Miami, Florida, United States",
"twitter_url": "https://twitter.com/rikypisano",
"websites": "https://growth-x.com",
"birthday": null
}
}
}
tag.attached / tag.detached event data type definition in Python
EventData[Tag]