Overview
This document details how Vuture Vx interacts with DealCloud CRM.
Vuture Vx makes REST-full web calls to the CRM API. DealCloud’s API pulls data out of DealCloud and can easily push new records in and make updates to existing ones. This document describes the steps and data flows for integration with Vuture.
Contents
Introduction
The operations which can be achieved when implementing the following document will give the ability to:
- Load lists of contacts from the connected data source
- Load contacts in a list from the connected data source
- Load core contact information from the connected data source
- Load custom field information from the connected data source
- Create contacts with core fields in the connected data source
- Update core fields on a contact in the connected data source
- Update contact custom fields, both associated with the core contact and with an associated list in the connected data source
- Load all custom field definitions from the connected data source
- Load all activity definitions from the connected data source
Please note:
Authentication process is not covered by this document.
The contact pushing and pulling requests are targeted at max number of 10k request or 20MB in size in one request.
The high-level functionality which can be achieved when implementing the following document:
-
Create and send emails to a list from the connected data source, excluding any contacts which have unsubscribed.
The user has the option to download the contacts when preparing the send, so they can be reviewed, or for the contacts to be downloaded asynchronously when the Send button is clicked if there is no requirement to review or select specific contacts.
Select Email Type, which determines which Suppression Lists will be used for the send.
Send Email which will send the email to the whole list or partial list if specific contacts are selected. The email send is recorded in the connected data source.
- Allow contacts to subscribe/unsubscribe:
Globally
Based on Content Type
- Allow contacts to be marked as undeliverable.
- Allow the Vuture user to edit core contact information in Vuture and write back to the connected data source.
Core fields are defined as: First Name, Last Name, Company, Job Title, Email, Salutation, Street, Postcode, City, State, Country, Phone Numbers
- Allow the Vuture user to create web-forms which will automatically write back information and create a new contact in the connected data source. This includes both core and custom fields.
- Allow the Vuture user to create web-forms which will automatically write back information and update an existing contact in the connected data source. This includes both core and custom fields.
Please Note: There are currently no filters, triggers or activity notification options set up on DealCloud. Clients are therefore required to create a new list for the relevant contacts; e.g. Accepted, No Response, Subscribed Contacts and use this new list when sending out subsequent emails.
Field Definitions
These are the standard fields used by the Vuture integration. The CRM MetaData manager is used to map these fields from the clients CRM to forms.
Contact
|
ID
|
|
FirstName
|
|
LastName
|
|
CompanyName
|
|
Email
|
|
Consent Status
|
|
Consent Status Date
|
|
KnownBy
|
|
GoesBy
|
|
IR GoesBy
|
|
Owners
|
Fields from the Client CRM can be defined during set up. As an example, here are a few fields for Email Subscriber/Form from one client, detailed below:
Email Subscriber/Form (example fields below)
|
Accommodation
|
|
AIM Dinner
|
|
AIM Meeting
|
|
Arrival Date
|
|
Arrival Time
|
|
Arriving From
|
|
Concise Pin
|
|
Departure Date
|
|
Departure Time
|
|
Departure Transfer To
|
|
Dietary
|
|
Event Attendance
|
|
…. etc
|
Methods and api URLs
Case 1: Load lists
Request
|
Method
|
URL
|
|
POST
|
api/v2/GetEntryLists
|
Parameters
|
Type
|
Params
|
Values
|
|
HEAD
|
auth_key
|
string
|
Return Value
|
Status
|
Response
|
|
200
|
Type: List<DcEntryList>
{
ContactEntryListId: int
EmailSubscriberEntryListId: int
CompanyEntryListId: int
CountryEntryListId: int
MarketingListEntryListId: int
}
|
|
401
|
{"error":"Invalid API key."}
|
|
500
|
{"error":"Something went wrong. Please try again later."}
|
Case 2: Load contacts in a list – coded but not fully implemented
Request
|
Method
|
URL
|
|
POST
|
api/v2/GetFilteredEntries
|
Parameters
|
Type
|
Params
|
Values
|
|
HEAD
|
auth_key
|
string
|
|
POST
|
entryListId
|
int
|
|
POST
|
filters
|
ListOfFilterInfo
{
entryListId: int,
FilterOperation: FilterOperation,
Value: string
}
|
Return Value
|
Status
|
Response
|
|
200
|
Type: List<int>
|
|
401
|
{"error":"Invalid API key."}
|
|
500
|
{"error":"Something went wrong. Please try again later."}
|
Case 3: Load core contact information, load custom contact field information
Request
|
Method
|
URL
|
|
POST
|
api/v2/ProcessDCPull
|
Parameters
|
Type
|
Params
|
Values
|
|
HEAD
|
auth_key
|
string
|
|
POST
|
entryListId
|
int
|
|
POST
|
pullRequests
|
List<ContactPullRequest>
{
ContactId: int
FieldIds: int
}
|
Return Value
|
Status
|
Response
|
|
200
|
Type: List<ContactPullResult>
{
}
|
|
401
|
{"error":"Invalid API key."}
|
|
500
|
{"error":"Something went wrong. Please try again later."}
|
Case 4: create contact with core fields, update core fields on a contact, update contact custom fields against a contact in an associated list in the connected data source
Not active for writing back activities against a contact in an associated list
Request
|
Method
|
URL
|
|
POST
|
api/v2/ ProcessDCPush
|
Parameters
|
Type
|
Params
|
Values
|
|
HEAD
|
auth_key
|
string
|
|
POST
|
entryListId
|
int
|
|
POST
|
pushRequests
|
List<ContactPushRequest>
{
FieldId: int,
EntryId: int,
Value: string
}
|
Return Value
|
Status
|
Response
|
|
200
|
Type: List<ContactPushResult>
{
Id: int,
Name: int,
Value: object,
EntryId: ErrorInfo
}
|
|
401
|
{"error":"Invalid API key."}
|
|
500
|
{"error":"Something went wrong. Please try again later."}
|
Case 5: Load all custom field definitions
Request
|
Method
|
URL
|
|
POST
|
api/v1/GetFields
|
Parameters
|
Type
|
Params
|
Values
|
|
HEAD
|
auth_key
|
string
|
Return Value
|
Status
|
Response
|
|
200
|
Type: List<Field>
{
AllowDuplicatesField: bool
ChoiceFieldIdField: System.Nullable<int>
ChoiceOrderField: System.Nullable<int>
ChoiceValuesField: ChoiceFieldValue[]
DCPushSupportedField: bool
DescriptionField: string
EntryListsField: int[]
FieldTypeField: FieldType
IsAttachmentField: bool
IsCalculatedField: bool
IsKeyField: bool
IsMoneyField: bool
IsMultiSelectField: bool
IsRequiredField: bool
SystemFieldTypeField: SystemFieldTypes
WarnOnNearDuplicatesField: bool
}
|
|
401
|
{"error":"Invalid API key."}
|
|
500
|
{"error":"Something went wrong. Please try again later."}
|