VersionDescription
1.0Add “GetCampaignStatistics” endpoint
1.1Add “ImportMember” endpoint
1.2Add “UpdateContact” endpoint
1.2Add “GetContact” (by memberId) endpoint
1.2Add “DeleteContact” endpoint
1.2Add “ListContacts” (by campaignId) endpoint 
1.2Add “ListCampaigns” endpoint
1.3Add “GetContact” (by public identifier) endpoint
1.3Add “ListContacts” (by public identifiers) endpoint

Webhooks

Webhooks allow to make outgoing calls from Salesflow to any external site by URL,
provided by the 3rd-party site. Webhooks can be configured on the campaign
settings page under “Integrations” section and are triggered by one of the following
events:

MEMBER_CONNECTEDthe system has identified that a given campaign member 
changed his status toCONNECTED
REPLY_DETECTEDthe system has identified an incoming message from a 
given contact. Not called if a given contact is muted
INVITATION_WITHDRAWNthe system has successfully withdrawn an invitation 
for a given contact

Data sample

The data sent by the system is a regular POST request, containing a normal JSON as
the request body. The following data sample illustrates this:

{
"IntegrationType": "INTEGRATION_TYPE_WEBHOOK",
"IntegrationRunOn": "INTEGRATION_RUN_ON_CONNECTED",
"MemberId": 0,
"LinkedInMemberId": 1234567890,
"FirstName": "John",
"LastName": "Smith",
"Occupation": "Founder and Chief Executive Officer at Smith & Co",
"Company": "Smith & Co",
"Location": "Miami/Fort Lauderdale Area",
"PhoneNumber": "123 4567890",
"Email": "[email protected]",
"Address": "",
"BirthdayYear": 1980,
"BirthdayMonth": 12,
"BirthdayDay": 1,
"DateAdded": "2021-02-18T15:33:44.5905705+00:00",
"ConnectedAt": "2021-02-18T16:33:44.5905705+00:00",
"MemberUrl": "https://linkedin.com/in/john-smith-123321",
"Industry": "Banking",
"Distance": "DISTANCE_3",
"CurrentPosition": "Chief Executive Officer",
"Status": "MEMBER_CONNECTED",
"HasReply": false,
"IsMuted": false,
"IsSeen": false,
"ConnectionsCount": 100,
"FollowersCount": 100,
"IsSalesNavigator": false,
"LinkedInAccount": {
"FirstName": "Bob",
"LastName": "White",
"Username": "[email protected]"
},
    "Custom1": "CustomValue1",
    "Custom2": "CustomValue2",
    "Custom3": "CustomValue3",
    "Custom4": "CustomValue4",
    "Custom5": "CustomValue5",
    "Custom6": "CustomValue6",
    "Custom7": "CustomValue7",
    "Custom8": "CustomValue8",
    "Custom9": "CustomValue9",
    "Custom10": "CustomValue10",
"MemberActionsFormatted": "<p>Connection message [2/18/2021 4:33 PM]: This is a test co
nnection message</p>\r\n\r\n<p>John Smith [2/18/2021 4:33 PM]: This is a test inbound messa
ge</p>",
"MemberCampaigns": [
{
"CampaignName": "Test campaign"
}
]
}

API Calls

API calls allow any 3rd party system to interact with our system. Currently we support a very basic set of methods, however, we are going to significantly expand this functionality very soon.

GetCampaignStatistics

This method retrieves campaign statistics for a given campaignId

Endpoint: https://app.salesflow.io/api/

Resource: statistics/GetCampaignStatisticsParameters:
accountId – selected accountId
campaignId – selected campaignId
token – API token, obtained for selected accountId

example

{
    "CampaignId": 31767,
    "Total": 555,
    "InMails": 0,
    "Imported": 2,
    "Connections": 1,
    "Messages": 0,
    "Pending": 552,
    "Replies": 0,
    "Withdrawn": 0,
    "Invitations": 0,
    "UpdatedAt": "/Date(1618336539820)/",
    "Elapsed": 3.5381
}

ImportMember

This method allows to add a new contact (campaign member) to a given campaign (the same can be done with CSV import feature)

Endpoint: https://mvc.salesflow.io/api/

Resource: members/Import

Parameters:

	accountId – selected accountId
	campaignId – selected campaignId
	token – API token, obtained for selected accountId
	linkedInUrl – LinkedIn profile URL of a contact to be added
	(optional): firstName, lastName, occupation, location

Example: 

https://mvc.salesflow.io/api/members/Import?campaignId=12345&accountId=321&token= abcdefghijklmnop123&linkedInUrl=https://linkedin.com/in/john-smith-123456&firstName=John&lastName=Smith&occupation=CEO&location=US

UpdateContact

This method allows to update an existing contact (campaign member)

Endpoint: https://mvc.salesflow.io/api/

Method: POSTResource: members/{memberId}

	Query Parameters:
 	memberId – selected memberId
	accountId – selected accountId
	token – API token, obtained for selected accountId
Body Parameters:
	firstName – first name, maximum length = 63
	lastName – last name, maximum length = 63
	location –  location, maximum length = 127
	occupation – occupation, maximum length = 1023
	industry – industry, maximum length = 1023
	email – email, maximum length = 1023
	phone – phone, maximum length = 1023

Example:

curl 'https://mvc.salesflow.io/api/members/46875434?token=abcdefghijklmnop123&accountId=321' \
--header 'Content-Type: application/json' \
--data-raw '{
    "lastName": "Doe",
    "FirstName": "John",
    "Location": "New York",
    "Occupation": "CEO",
    "Industry": "marketing",
    "Email": "[email protected]",
    "Phone": "1555123458"
}'
Sample Data Response:
{
    "MemberId": 46875434,
    "FirstName": "John",
    "LastName": "Doe",
    "Location": "New York",
    "Occupation": "CEO",
    "Industry": "marketing",
    "Email": "[email protected]",
    "Phone": "1555123456",
    “PublicIdentifier”: “identity100
}

GetContact (by memberId)


This method allows to get contact (campaign member)

Endpoint: https://mvc.salesflow.io/api/

Method: GET

Resource: members/{memberId}Parameters:
memberId – selected memberId
accountId – selected accountId
token – API token, obtained for selected accountId

Example: https://mvc.salesflow.io/api/members/46875434?token=abcdefghijklmnop123&accountId=321

Sample Data Response:


{
    "MemberId": 46875434,
    "FirstName": "John",
    "LastName": "Doe",
    "Location": "New York",
    "Occupation": "CEO",
    "Industry": "marketing",
    "Email": "[email protected]",
    "Phone": "1555123456",
    “PublicIdentifier”: “identity100
}

GetContact (by public identifier)

This method allows to get contact (campaign member)

Endpoint: https://mvc.salesflow.io/api/

Method: GET

Resource: members

Parameters:
publicIdentifier – member’s public identifier
accountId – selected accountId
token – API token, obtained for selected accountId

Example: 

https://mvc.salesflow.io/api/members?publicIdentifier=identity500&token=abcdefghijklmnop123&accountId=321

Sample Data Response:

{
    "MemberId": 46875434,
    "FirstName": "John",
    "LastName": "Doe",
    "Location": "New York",
    "Occupation": "CEO",
    "Industry": "marketing",
    "Email": "[email protected]",
    "Phone": "1555123456",
    “PublicIdentifier”: “identity100
}

DeleteContact


This method allows to delete contact (campaign member)

Endpoint: https://mvc.salesflow.io/api/

Method: DELETE

Resource: members/{memberId}

Parameters:
memberId – selected memberId
accountId – selected accountId
token – API token, obtained for selected accountId

Example: 

curl — request DELETE ‘https://mvc.salesflow.io/api/members/46875434?token=abcdefghijklmnop123&accountId=321’

Sample Data Response:

{
    "Status": 204,
    "Message": null
}

Resource: members

ListContacts (by public identifiers)
This method allows to get a list of available contacts by provided public identifiers

Endpoint: https://mvc.salesflow.io/api/

Method: POST

Resource: members/list-contacts

Query parameters:
accountId – selected accountId
token – API token, obtained for selected accountId

Body Parameters:

PublicIdentifiers – Collection of public identifiers

Publicidentifiers collection can’t be null or empty.

Collection can have more than 20 elements.

Every element of ‘Publicidentifiers’ collection can’t be null or empty.


Example: 

curl ‘https://mvc.salesflow.io/api/list-contacts?token=abcdefghijklmnop123&accountId=321’ \

--header 'Content-Type: application/json' \
--data-raw '{
    "PublicIdentifiers":  [
	"identity1",
    	"identity2",
    	"identity3" ]
 }’
Sample Data Response:
[
  {
        "MemberId": 46875434,
        "FirstName": "John",
        "LastName": "Doe",
        "Location": "New York",
        "Occupation": "CEO",
        "Industry": "marketing",
        "Email": "[email protected]",
        "Phone": "1555123456",
        “PublicIdentifier”: “identity1
    },
    {
        "MemberId": 46875435,
        "FirstName": "Nick",
        "LastName": "Foo",
        "Location": "London",
        "Occupation": "Full stack .NET developer, open for new opportunities",
        "Industry": null,
        "Email": null,
        "Phone": null
        “PublicIdentifier”: “identity3
    }
]

ListContacts (by campaignId)


This method allows to get a list of available contacts (campaign members) for a selected campaign

Endpoint: https://mvc.salesflow.io/api/

Method: GET

Resource: members/list-contacts

Parameters:
accountId – selected accountId
campaignId – selected campaignId
token – API token, obtained for selected accountId

Example: 

https://mvc.salesflow.io/api/members/list-contacts?accountId=321&token=abcdefghijklmnop123&campaignId=456

Sample Data Response:



[
  {
        "MemberId": 46875434,
        "FirstName": "John",
        "LastName": "Doe",
        "Location": "New York",
        "Occupation": "CEO",
        "Industry": "marketing",
        "Email": "[email protected]",
        "Phone": "1555123456"
    },
    {
        "MemberId": 46875435,
        "FirstName": "Nick",
        "LastName": "Foo",
        "Location": "London",
        "Occupation": "Full stack .NET developer, open for new opportunities",
        "Industry": null,
        "Email": null,
        "Phone": null
    }
]

ListCampaigns


This method allows to get a list of available campaigns

Endpoint: https://mvc.salesflow.io/api/

Method: GET

Resource: campaigns/list-campaigns

Parameters:
accountId – selected accountId
token – API token, obtained for selected accountId

Example: 

https://mvc.salesflow.io/api/campaigns/list-campaigns?accountId=321&token=abcdefghijklmnop123

Sample Data Response:


[
    {
        "CampaignId": 29854,
        "CampaignName": "Sales"
    },
    {
        "CampaignId": 29889,
        "CampaignName": "Java developers"
    }
]