In this Article

PP+ Lead API V2 Developer Guide

APIs

Modification History

Date Author Description of Change
10/11/2020 Vikas Rometra New document
10/27/2020 Vikas Rometra 1. Renamed dealerCode to catDealerCode in the GET call Response.
2. Added following fields to the POST call
- dealerLeadId
- dealerSalesRepNumber
- primaryClosedReason
3. Delete fields
- primaryClosedLostReason (replaced byprimaryClosedReason)
- primaryClosedWonReason (replaced by primaryClosedReason)
- PrimaryClosedWonReasonComments (duplicate for closedReasonComments)
11/17/2020 Vikas Paul Added list of Standard primaryClosedReason
11/30/2020 Vikas Rometra To make it simple, removed leadUpdates request. Updated leads will be included in the primary GET end point https://services.cat.com/marketing/ecrm/leadManagement/v2/leads) .
A new field leadState was added to indicate if the lead is NEW or UPDATED.
This removes the need to call two different end points to get new leads and lead updates.
As of now, only one field catPrequalificationStatus will get updated.
12/6/2020 Vikas Rometra Changed the values of the following
1. customerAlreadyKnown
2. customerContacted
3. opportunityAlreadyKnown from existing values Y and N to Boolean values (it’s a checkbox field in Salesforce) true and false
12/16/2020 Vikas Rometra Remove ClosedDisqualified Opportunity Stage
Removed closedDisqualified indicator in the POST call
01/19/2021 Vikas Rometra Added "dealerCustomerNumber ": "123433" to the POST call examples
01/26/2021 Vikas Rometra Add new leadState SENT for historical end point.
01/27/2021 Vikas Rometra 1. leadStatus – changed the values (ACCEPTED, REJECTED, DISQUALIFIED) from all CAPS to regular case (Accepted, Rejected, Disqualified). Same was reflected wherever leadStatus field value was being used for other fields which included disqualifiedReasonWhy.
2. rejectedReasonWhy - Removed “Other” from valid values for rejectedReasonWhy.
3. rejectedReasonComments (a) Removed “Other” from the required condition since “Other” was removed from rejectedReasonWhy. (b) Added three new conditions when this field will be required for the following values of rejectedReasonWhy
- End-user, end-use or end-destination may be restricted
- Product/Service Not offered
- For Another Dealer
4. primaryClosedReason – updated the condition when this field is required.
  - If probabilityOfClosurePercentage = (0 and closedNoDeal =0) or 100 then this field is required.
  - Changed example to one of the reasons given in the description.
5. closedReasonComments – Updated field from conditionally required to not required and removed the condition.
6. customerContacted – Updated to NOT required and removed the condition since it was incorrectly added for this field instead of dealerContactDateTime field.
7. dealerContactDateTime – Updated to conditionally (C) required field and added the condition.
8. comments – cleaned up description and added a valid example
9. Changed isoCurrencyCode to currencyIsoCode in two POST examples for Accepted and Disqualified
10. Updated the POST example to reflect above changes.
01/29/2021 Vikas Rometra Updated following fields in the POST Request
1. customerAlreadyKnown (Boolean – true, false) to customerPreviouslyKnown (String – Yes, No).
2. customerContacted type from (Boolean – true, false) to (String – Yes, No).
3. dealerContactDateTime (DateTime) to dateContacted (Date). Also update the condition value from Boolean true to String” Yes.”
4. opportunityAlreadyKnown (Boolean – true, false) to leadAlreadyKnown (String – Yes, No).
5. quoteDateTime (DateTime) to quoteSentDate(Date).
6. Length of dealerSalesRep to from 200 to 50.
02/2/2021 Vikas Rometra Following POST Request BODY API fields updated to conditional from required
1. opportunityAmount
2. probabilityOfClosurePercentage
3. targetDate dealerOpportunityId updated to conditionally required.
02/16/2021 Vikas Rometra GET Request: Updated leadId to required (Y)
POST Request: Corrected the type for comments from Integer to String and updated the length to 1000
3/2/2021 Vikas Rometra quoteId and quoteSentDate are required when probabilityOfClosurePercentage is 100 or 0.
Updated POST examples to reflect the same for Closed Won, Closed Lost and Closed No Deal opportunity stages
Added test procedures required other than normal integration testing.
03/18/2021 Vikas Rometra Updated the value of rejectedReason from Product / Service not offered at dealership to Product/Service Not Offered at Dealership
quoteSentDate and quoteId updated to not required fields
03/22/2021 Vikas Rometra DCN is only required when an Opportunity is Closed Lost or Closed Won or Closed No Deal
04/05/2021 Vikas Rometra Changed the length of callCenterComments from 255 to 5000
04/08/2021 Vikas Rometra primaryClosedReason is not required for Closed Won Opportunities (probabilityOfClosurePercentage = 100)
04/19/2021 Vikas Rometra Updated ASR to ISR for Sales Lead Community definition on page 6.
- leadAlreadyknown – This field is DEPRECATED. Dealers will not be required to send this field anymore. This value was also removed from POST samples.
- Added option “Lead Already Known” to the list of disqualifiedReasonWhy options.
- disqualifiedReasonComments is also required when disqualifiedReasonWhy = “Lead Already Known”
04/26/2021 Vikas Rometra Updated catPrequalificationStatus example value from “True” to “Cat Finance Pre-Qualification Completed” to correctly reflect that catPrequalificationStatus field is a text field and not a Boolean field.
5/11/2021 Vikas Rometra Rolled back catPrequalificationStatus to Boolean instead of text field.
6/21/2021 Vikas Rometra Removed default Currency Code “USD” for currencyIsoCode field.
Currency code doesn’t get defaulted to USD
7/21/2021 Vikas Rometra Added new Rejection Reason - Duplicate Lead Received
10/01/2021 Vikas Rometra Added new Rejection Reason - Spam/Inappropriate Lead Submission
03/17/2022 Prafulla Nandhip Updated dealerOpportunityId description in Dealer to CAT section
Removed stateCode from CAT to dealer section
Increased the length ofstateOrProvince field from 80 to 255. This field is used to send state/province codes/names or UNKNOWN. Example data values are: “OH”, “NSW”, “UNKNOWN”
04/30/2022 Prafulla Nandhip Added process flow diagrams
1. Prioritized Lead/Opportunity Process Flow Review
2. PP+SL Process Flow
Added verbiage for Dealer Mapping
06/05/2023 Prafulla Nandhip Changed QA URLs to below URL
https://services-stg.cat.com/marketing/ecrm/leadManagement/v2/leads

All interface modifications (except corrections for typographical errors) should be accompanied by a change communication notice in accordance with the Dealer Facing Interface Documentation Enterprise Architecture (EA) Standard. The date on which the modifications are implemented, as well as the retirement of any previous format, is noted within that communication. Each Caterpillar application owner reserves the right to determine the date(s) on which an interface change is implemented as well as when previous versions of the interfaces are retired, as long as the advance notification of the change is provided in accordance with this standard.

This is a link to the location where all interface change communications are posted for review: Digital Integration Services Portal - DICE Communications

Glossary

CRM

Customer relationship management (CRM) is a technology for managing all your company’s relationships and interactions with customers and potential customers. A CRM system helps companies stay connected to customers, streamline processes, and improve profitability.

Leads

Leads generated by Caterpillar marketing ecosystem.

Dealer Management System

Dealer Management System is a bundled management information system containing software that supports all aspects of running a Dealership

JSON (JavaScript Object Notification)

JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.

Salesforce

Salesforce is a CRM system that allows salespeople to track their sales, support people to track their cases, and the entire company’s employees to collaborate with each other.

Sales Lead Community

Community for dealers to Collaborate with Caterpillar ISRs on Sales Opportunities.

API

Application programming interface to download Marketing Opportunities on Sales Community and send updates for Marketing Opportunities that are acted upon by dealer in their CRM.

Ping Federate

OAuth 2.0 client credentials identity management service provider

Process Overview

Leads are generated via different resources. Deploying new technology-enabled Lead Distribution and Management processes can greatly improve speed-to-market. These can be pulled by dealers through an API.

This will pave the way to our blue dot vision of NextGen Lead Distribution and Management to help:

  • Drive Growth & Efficiency
  • Achieve Scalability & Flexibility
  • Provide Enhanced Customer Experience
  • Enable Faster Decision and Management Support

Dealers follow up on these opportunities and process them via their sales funnel process. Dealers are required to send updates back to Caterpillar through an API. This feedback is made available in the Caterpillar lead sales community built on Salesforce CRM.

This document will describe the API interface that will enable NextGen Lead Distribution and Management

https://cat.com is one of the sources of leads.

Process Flows

Prioritized Lead/Opportunity Process Flow

Prioritized Lead/Opportunity Process Flow

PP + SL V2 Process(Connected Dealer)

PP + SL V2 Process(Connected Dealer)

Dealer Mapping

This mapping will be entered in Dealer CRM Mapping Area. Following mapping are required

  1. Rejection Reason
  2. Disqualification Rason
  3. Closed Lost Reason
  4. Sales Stage

Interface Type and Transmission Method

This interface requires using REST API to GET Leads and POST opportunity sales funnel updates from dealer’s CRM.

Caterpillar Preferred Option

N/A

N/A

Owner Click on link below to find the interface owner
Go to https://dealer.cat.com/DealerITServices then click on the link Application Interface Contact List under the Contacts in the right column.
Author See modification log for Authors

Email DICE_Sales@cat.com to contact the appropriate DICE Team Member for this interface.

Field Types and Definitions

The following list provides the references to element types that will be used in this document.

Reference Description Example
JSON array An ordered sequence of values formatted using JavaScript Object Notation (JSON). [0,”value”]
JSON object An unordered collection of name/value pairs formatted using JavaScript Object Notation (JSON). {“name”:”value”}
boolean Algebraic expression used for creating true false statement true or false
string Composed of letters, punctuation, and the numbers 0-9 represented as characters This repair is for the 1S2255 that was put into….
int Numeric integer values of 0-9 25
date Composed of date YYYY-MM-DD
dateTime Composed of date + time + Time Zone
For time zone specify offset from the UTC time by adding a positive or negative value in the format of hh:mm.
2015-05-30T09:30:10-06:00
OR
2015-05-30T09:30:10+10:00
* where +06:00 or -06:00 represents the offset from the UTC time
Null Field with one possible value, null, to represent missing data. null
number Composed of numeric values 0-9 with a decimal
For this application, a decimal place has been assigned
16,2 (16 positions total, with 2 decimal places)
12345.77

Caterpillar Opportunity Stages

Caterpillar Opportunity Stage Probability of Closure Percentage
Qualification 1%-20%
Develop Solution 21%-40%
Proposal/Negotiation 41%-99%
Closed Won 100%
Closed Lost 0%
Closed No Deal 0%

General Comments & Definitions

Comments

This solution provides a simple REST Web service that enables pulling lead that have not been pulled earlier. The client will invoke the service at regular intervals of time and frequently to retrieve new leads, act on those and send feedback to Caterpillar

Process Summary:

  1. CAT will engage Dealer to onboard Lead NextGen Lead Distribution and Management program.
  2. Cat ECRM team receives request from CAT Marketing to setup dealer to access Lead API
  3. Cat ECRM requests Client ID from CAT Identity Access Management (IAM) group
  4. Corporate Identity Access Management creates Client ID for dealer in PingFederate environment (usually within 1 working day for QA and every Thursday for production)
  5. Dealer connects to API’s frequently (recommended to make GET call every 15 minutes) to pull new Leads
  6. Dealer connects to API’s and send updates to Leads in real time by POSTing the updates.

https://services-stg.cat.com/marketing/ecrm/leadManagement/v2/leads

https://services.cat.com/marketing/ecrm/leadManagement/v2/leads

Invoking the Service (GET)

The REST web service is designed for program-to-program integration technology. Access to the service can be broken into three steps.

Step 1 - Open a connection

Open a connection the OAuth service using the QA or Production URL.

QA URL - https://fedloginqa.cat.com/as/token.oauth2

Production URL

Step 2 – Provide authentication

Set the Header and Body key and value information of the request. The basic credentials are the Client ID and secret provided to the dealer as a Base64 encoded ASCII string.

 Header (key: value)
 Content-Type: application/x-www-form-urlencoded
 Authorization: Basic \<credentials\>
 Body (key: value)
 grant_type: client_credentials
 scope: manage:all

The Body content type may need to be set to x-www-form-urlencoded manually depending on your application.

Step 3 – Execute the Fed Login POST request

Executing the POST request successfully will return a JSON object containing the access token.

{"access_token": “eyJhbtpZCI…”, "token_type": "Bearer", "expires_in": 3599}

All access tokens expire in 60 minutes. HTTPS 200 (OK) is sent to the client when the operation is successful. The connection is released at the end of the operation. The REST service provides only JSON responses.

Step 4 – Execute the GET request

Invoking the Service (POST)

Step 4 – Execute the POST request

** Available only with the use of test credentials which are available upon request see “Testing Procedure”

Error Architecture, Error Codes, and Error Messages

Possible responses:

Response 200 Ok
Response 400 Bad Request - Invalid parameters
Response 401 Unauthorized
Response 403 Forbidden
Response 404 Endpoint Not Found
Response 500 Internal Server Error - Try again if you like

Error messages are returned as JSON objects indicating the issue to be resolved. The list of possible error messages is below.

{"message": "Invalid access token."}

{"message": "Invalid request header."}

{"message": "You are not authorized to perform that action."}

Elements, Characteristics, Operator Symbols

All character sets (Double byte, Eastern European, etc.) are supported in this interface.

Array Sizes

N/A

Currency Considerations

N/A

Regional Considerations

None

Layouts

Layout Comments

N/A

Layout Types / General API Information

Request GET body parameters – leads
AUTHORIZATION: Bearer <AccessToken>
CONTENT-TYPE: application/json
ACCEPT: application/json
GET leads
Example https://services.cat.com/marketing/ecrm/leadManagement/v2/leads
Parameter Type MaxLength Description Required
(Y/N/C)
Sample
Authorization String   Time limited Bearer token returned from OAuth server to access Partner API. Y Bearer eyJhbGc…
limit integer   Query pram to limit the number of leads in the GET call to prevent
Max limit will be set to 100 limiting number of records to 100 from a single GET call
If there are 150 Leads, since the max number of Leads in one GET call is 100, a second GET call will required to get remaining 50 Leads. In the third GET call you will not receive any Leads, no further GET calls should be made after an empty response is received.
https://services.cat.com/marketing/ecrm/leadManagement/v2/leads?limit=50
   

Response JSON – Leads object

Parameter Type MaxLength Description Required
(Y/N/C)
Sample
additionalInformationMaster String 32768 Additional Information for the request N “additionalInformationMaster”: “Financing Options:Extended Protection or Insurance Options:Parts Information:Service Options:Training Opportunities”
address1 String 255 Street Address line 1 of the contact person N “address1”: “100 N. Main St.”
address2 String 255 Street address line 2 of the contact person N “address2”: “Suite 100”
address3 String 255 Street Address line 3 of the contact person N “address3”: “Main St.”
agreeToContact Boolean   Willingness to be contacted (Add to Lead API and filter the leads by this indicator when it’s value if “Y”) Note: Only for China Leads N “agreeToContact”: true
bcpNewUsedRental Enum New, Used, Rental   N “bcpNewUsedRental”: “Rental”
businessPhone String 255 Business phone of contact person
Country code + Local Number
N “businessPhone”: “+1 +1 (309)-654-5555”
businessUnit String 255 CAT business unit
BCP Cat Financial
Cat Rental
CD&T
Electric Power
Enterprise/Brand eCommerce
Equipment Training Solutions
Forestry
GCI
GASD Governmental
Industrial Power
Industrial and Waste
Marine
Mining
Oil and Gas
On Highway Truck
Paving
Portable Generators
Product Support
Safety
Technology
Used
Work Tools
N “businessUnit”: “BCP”
callCenterComments String 5000 Field for call center comments only N “callCenterComments”: “No plans to purchase at this time”
callCenterFollowUpStatus String 255 Enterprise field for call center follow up status, standard values exist
Contact - No Purchase
Contact - Nurture
Contact - Purchased Caterpillar
Contact - Purchased Competitor
Contact - Redistribute
No Contact - No Action
No Contact - No Purchase
No Contact - Nurture
No Contact - Purchased Caterpillar No Contact - Purchased Competitor No Contact - Redistribute
N “callCenterFollowUpStatus”: “No Purchase”
callCenterProcessDate1 Date   Date when this lead was processed by the call center N “callCenterProcessDate1”: “2019-08-24”
catCampaignMostRecent String 255 Most recent CAT campaign N “catCampaignMostRecent”: “Cat.com Request a Quote”
catDealerCode String 255 The dealer code associated with the legal dealer’s name N “catDealerCode”: “B330”
catPrequalificationStatus Boolean   CAT Financial qualification either based on payment history and/or credit score
true
false
N “catPrequalificationStatus”: true
clFleetSize String 255 Size of the fleet N “clFleetSize”: “1”
city String 40 Address city of contact person N “city”: “Peoria”
commentsMaster String 32768 Comments N “commentsMaster”: “I’m looking for a rental price by the day on a 90hp high flow track machine with a forestry mulching attachment.”
company String 255 Name of customer’s company N “company”:” Future Innovations Inc.”
companySize String 255 Number of employees in the company N “companySize”: “1000”
contactForQuestions String 255 Customer contact for questions N “contactForQuestion”: “John Doe”
contactSourceOriginal String 255 Indicates which type of campaign the contact was part of
- Form Submission
- Dealer Upload
-Event List
-Database List
-Purchased List
-Call Center Integration
N “contactSourceOriginal”: “Tradeshow List”
country String 100 Contact person address country N “country”: “United States of America”
countryCode String 10 2 Alpha ISO country code of contact person N countryCode”: “US”
county String 100 Address County
Note: Only for China Leads
N “county”:”Peoria”
currentProductMaster String 32768 Current Product Master N “currentProductMaster”: “Serial #: TAW05166Box #:549-3131Harness #:532-5452”
dateCreated Date   Lead creation date time N “dateCreate”:” 2020-04-19T20:31:04+00:00”
dateRegistered Date   Registration Date Note: Only for China Leads N “dateRegistered”:”2020-01-23 T20:31:04+00:00”
digitalActivity String 255 Aggregate measurement of Google Analytics activity N “digitalActivity”: “45”
emailAddress String 80 Email Address of the Contact N “emailAddress”: “John.doe@gmail.com
enginePerformanceNumber String 255 Performance number of the engine N “enginePerformanceNumber”: “60”
equipmentNumber String 255 Equipment Number N “equipmentNumber”: “966K”
featureCode String 255 An external code that is provided by a Dealer or Campaign to use in a promotional type event N “featureCode”: “CI5DECE”
financingMethod String 255 Method of financing the purchase N “financingMethod”: “Buy”
firstName String 40 First name of the contact person N “firstName”: “John”
gender String 50 Contact person gender
MALE
FEMALE
Note: Only for China Leads
N “gender”:”F”
industry String 255 Company industry
- Agriculture
- Caterpillar Defense
- Governmental Local/State
- Construction
- Demolition & Scrap/Recycling
- Electric Power
- Forestry
- Industrial Power
- Landscaping - Marine
- Material Handling with Forklifts
- Mining
- Oil and Gas
- On-Highway Trucks
- Paving
- Pipeline
- Powerplants
- Quarry, Aggregates and Cement
- Snow Removal
- Waste Industry
N “industry”: “Agriculture”
jobRole String 255 Employment N “jobRole”:” Owner/Operator”
jobsiteAddress1 String 255 Street address of job site N “jobsiteAddress1”: “6614 N. Wild Dr.”
jobsiteAddress2 String 255 Extended address of job site N “jobsiteAddress2”: “Floor 2”
jobsiteCity String 255 Job site city name N “jobsiteCity”: “Peoria”
jobsiteCountry String 255 2 Alpha ISO country code of job site country N “jobsiteCountry”: “US”
jobsiteStateProv String 255 Alpha ISO State code of job site N “jobsiteStateProv”: “IL”
jobsiteZipPostal String 255 Job site zip of postal code N “jobsiteZipPostal”: “61533”
lastName String 80 Last name of the contact person N “lastName”: “Doe”
leadId String 255 Caterpillar lead ID Y “leadId”: “ab0b1G00000EuLYGQU”
leadScore String 255 Aggregate score prioritizing leads within the DCC N “leadScore”: “86”
leadSourceMostRecent String 255 The last Lead activity N “leadSourceMostRecent”: “NA”
leadState String 10 State of the Lead NEW UPDATED
SENT (Only for historic end point)
Y “leadState” : “NEW”
levelOfInterest String 255 Level of Interest to buy or lease the product N “levelOfInterest”: “Requesting dealer consultation”
liftingCapacity String 255 Lifting Capacity N “liftingCapacity”: “
10,000-14,000 lbs”
mobilePhone String 255 Mobile phone of contact person N “mobilePhone”: “309-111-2222”
name String 120 Full Name N “name”:”John Doe”
partQuoteNumber String 255 Part quote number N “partQuoteNumber”: “3572518”
partShoppingCart String 32768 Part shopping cart N “partShoppingCart”: ““<tr >
<td style=”font:12px Arial;” bgcolor=“#dfdfdf”376-1410 </td>
<td style=“font:12px Arial;” bgcolor=“#dfdfdf”> 376-1410 </td>
<td> style=“font:12px Arial;” align=“right” bgcolor=“#dfdfdf”> 1 </td> </tr>”
powerRating1 String 255 Power Rating 1 of the equipment N “powerRating1”: “”
powerRating2 String 255 Power Rating 2 of the equipment N “powerRating2”: “”
powerRating3 String 255 Power Rating 3 of the equipment N “powerRating3”: “”
productOfInterest String 1000 Captures individual product identification via PIM on Product pages N “productOfInterest”: “Selected Gensets: Number of Gensets: 1, Model: DE18E3, Duty: Standby”
productOfInterestList String 32768 Unstructured data capture for a customer N “productOfInterestList”: “Skid Steer Loaders”
productOfInterestQuantity Int 6 This field was created for use in BuyerZone contacts to collect amount of order N “productOfInterestQuantity”: “100”
purchaseTimeframe String 255 Timeframe within which this deal can be closed
- Less Than A Week
- One Month or Less
- 1-3 Months
- 4-6 Months
-7-9 Months
- 10-12 Months
- 12-24 Month
- More than 24 Month
N “purchaseTimeframe “: “1-3 months”
rentalEndDate Date   End date of rental N “rentalEndDate”: “2019-11-04”
rentalStartDate Date   Start Date of a Customer needed to Rent a machine N “rentalStartDate”: “2019-10-24”
serialNumber String 255 Serial number of machines for service leads N “serialNumber”: “MLW00643”
sfmcActivity String 255 Aggregate measurement of Google Analytics activity N “sfmcActivity”: “56”
shippingInformation String 32768 Shipping information of customer NN “shippingInformation”: “100 N W Columbus Rd, Washington”
stateOrProvince String 255 For all countries, provided contact person’s state name. Field is used to send state/province codes/names or UNKNOWN. Example data values are: “OH”, “NSW”, “UNKNOWN” N “stateOrProvince”: “OH”
systemFamily String 255 System Field name used to capture family name from cat.com N “systemFamily”: “Electric Power Generation”
systemLanguage String 255 Language associated to lead
- en_ZA
-es_ES
-es_MX
- es_US
-fr_DZ
- fr_FR
-fr_US
-id_ID
- it_IT
-ja_JP
- ko_KR
-nl_NL
-pl_PL
- pt_BR
- ru_RU
-sv_SE
- zh_CN
- zh_TW
- zh_ZA
N “systemLanguage”: “en_US”
systemModel String 255 Product Model N “systemModel”: “416F2”
systemModelId String 255 Product Model ID N “systemModelId”: “10084”
systemScore String 255 Combined score using a letter (A-E) and Number (1-5) N “systemScore”: “A3”
systemSubFamily String 255 System Field name used to capture Sub Family name from cat.com N “systemSubFamily”: “Diesel Generator Sets”
utmCampaign String 255 Campaign associated to Lead N “utmCampaign”: “ep_pd_email1”
zipOrPostal String 20 Address Zip or Postal code of contact person N “zipOrPostal”: “61615”
When we send Marketing Opportunity record What do we send? Comments
Lead records that have not been distributed to dealer List of Marketing Opportunities (all elements) Marketing Opportunity records not distributed to dealers will be sent when an API call is made to GET Leads
Request GET By Date Range (only returns already Pulled Leads) body parameters – leads
AUTHORIZATION Bearer <AccessToken>
CONTENT-TYPE application/json
ACCEPT application/json
GET leads
Example https://services.cat.com/marketing/ecrm/leadManagement/v2/leads/historic?startdate=2020-04-01&enddate=2020-04-03&offset=0&limit=100
Parameter Type MaxLength Description Required
(Y/N/C)
Sample
Authorization string   Time limited Bearer token returned from OAuth server to access Partner API. Y Bearer eyJhbGc…
limit Int   Query parameter to limit the number of Leads in the GET call response JSON.
Max limit = 100
N 50
offset Int   Query parameter to for pagination used in combination with limit parameter
Default:0
N 2
offset=0&limit=100 gives first 100 leads
offset=100 &limit=100 gives next 100 leads as long as there are more than 100 leads. If there are only 55 leads, then JSON response will only contain data for 55 leads
startdate date   Leads created as the start date of the date range (yyyy-mm-dd) Y 2020-04-02
enddate date   Leads created date as the end date of the date range (yyyy-mm-dd) Y 2020-04-03

This end point provides latest snapshot of the lead with all current values.

Request POST body parameters – leads
AUTHORIZATION Bearer <AccessToken>
CONTENT-TYPE application/json
ACCEPT application/json
GET leads
Example https://services.cat.com/marketing/ecrm/leadManagement/v2/leads
Parameter Type MaxLength Description Required
(Y/N/C)
Sample
Authorization String   Time limited Bearer token returned from OAuth server to access Partner API. Y Bearer eyJhbGc…

Request JSON – Leads object

Parameter Type MaxLength Description Required
(Y/N/C)
Sample
closedNoDeal Integer 0 Field to indicate if opportunity was closed due to no deal
1- Lost due to no deal
0- Lost for other reason Conditional:
If probabilityOfClosurePercentage = 0 and opportunity was not lost to competitor or disqualified
C “closedNoDeal”: 1
closedReasonComments String 255 Additional comments for Closed Leads N “closedReasonComments”: “Customer negotiated for additional discount”
comments String 1000 It is a free text field to inform Caterpillar on how dealer is interacting with the customer and other related information, examples:
Phone Consultation
In-Person-Visit
Scheduled Demo
N “comments: “Working with customer on detailed configuration”
currencyIsoCode String 3 3 Alpha currency iso code of the amount Y “currencyIsoCode”: “USD”
currentProductOfInterestDetails String 255 Current Product & Quantity details N “currentProductOfInterestDetails: “Excavator:2; Dozer:3”
customerPreviouslyKnown String 1 Do you already know this customer?
- Yes
- No
N “customerPreviouslyKnown”: “Yes”
customerContacted String 1 Did you make contact with the customer?
-Yes
-No
N “customerContacted”: “No”
dateContacted Date   Date when dealer contacted the customer
If customerCont acted = “Yes” then this field is required
C “dateContacted”: ”2020-04-19”
dealerCustomerNumber String 40 Dealer Customer Account Id DCN is only required when an Opportunity is Closed Lost/Closed Won or Closed No Deal C “dealerCustomerNumber”: “123453”
dealerLeadId String 80 The Dealer’s lead unique identifier. This will be used to reference dealer’s lead id Y “dealerLeadId”: “LEAD-1234454”
dealerOpportunityId String 80 Dealer opportunity unique identifier. This will be used to reference dealer’s opportunity id
Only required when lead is converted to an opportunity or when Dealer lead stages are mapped to CAT opportunity stages
C “dealerOpportunityId”: “OPP-1234454”
dealerSalesRep String 50 Dealer Sales Rep assigned to marketing opportunity Y “dealerSalesRep”: “John Doe”
dealerSalesRepNumber String 100 Dealer Sales Rep Number of the dealer sales rep assigned to marketing opportunity Y “dealerSalesRepNumber”: “AB12496”
disqualifiedReasonComments String 255 Conditional: < br>- If disqualifiedReasonWhy = “End-user, end-use or end-destination may be restricted” or “Other” or “Lead Already Known”
- Conditional prompt if selected option is “End-user, end-use or end-destination may be restricted”: Provide a contact name at the dealer for Caterpillar to determine if further actions are required (i.e., add entity to Caterpillar restricted party list).
C “disqualifiedReasonComments”: “After discussing with customer requirements couldn’t be met”
disqualifiedReasonWhy String 255 If leadStatus = ’Disqualified” then provide one of the following reasons
- Cannot reach/no response from customer - Purchase time frame changed
- No budget
- No longer a product need/want
- Customer already purchased
- End-user, end-use or end-destination may be restricted
- Dealer not interested in pursuing
- Lead Already Known
- Other
C “disqualifiedReasonWhy” : “No budget”
leadId String 80 Unique identifier of the marketing opportunity from Caterpillar CRM system
This is the key element required on the updates returned by dealers.
Y “opportunityId”: “ab0b1G00000EuLYGQ2”
leadStatus String 20 LeadStatus
Accepted
Rejected
Disqualified
Y “leadStatus”:” Accepted”
opportunityAmount Decimal 16,2 Potential opportunity amount.
When lead is converted to an Opportunity this field is required.
C “opportunityAmount”: “142410.00”
primaryClosedReason String 255 Reason why opportunity was Closed Lost
If probabilityOfClosurePercentage = 0 and closedNoDeal = 0 then this field is required
Standard Closed Reason:
- Products/Parts Not in Cat Network
-Products/Parts Not in Dealer’s Network
- Inconvenient Service Location
-Dealer Operating hours
- Dealer Service Capability
-Sales Capability (Expertise/ Coverage / Participation / SFM)
-Quote Processing Time
-Competitive Financial (Term/Rates/Scope)
- Warranty Term (Term/Rate/Scope)
-Product Durability
- Product Family Quality
-Application Fit
-Product Serviceability (access, ease of maintenance)
- Product Specification
-Mixed/Full Fleet Solution Not Available
-Used Parts/Equipment not Available -
Cat Price too High
-Cat Value story not Convincing
-Cat Value story - Not available -
Competition lifetime value superior
C “primaryClosedReason”: “Products/Parts Not in Dealer’s Network”
probabilityOfClosurePercentage Number 3,0 Probability of Closure in percentage
This field is required when lead is converted to an Opportunity. Note: Please see Caterpillar Opportunity stage percentage ranges
Dealer Opportunity stage mapping to Caterpillar Opportunity stage percentage will be required.
C “probabilityOfClosurePercentage”: “50”
quoteSentDate Date   Date of quote N “quoteSentDate”:” 2020-04-19”
quoteId String 255 Quote Id for the opportunity N “quoteId”: “12322”
rating String 20 Rating of opportunity, possible values
-High
- Low
-Medium
N “Rating”: “High”
rejectedReasonComments String 1000 Comments entered for Rejection Conditional:
If rejectedReasonWhy = “End-user, end-use or end-destination may be restricted”
or “For Another Dealer” or “Product / Service not offered at dealership”
Conditional prompt if selected option is “End-user, end-use or end-destination may be restricted”:
Provide a contact name at the dealer for Caterpillar to determine if further actions are required (i.e., add entity to Caterpillar restricted party list).
C “rejectedReasonComments”: “Sales Rep called customer and found this was not a valid requirement”
rejectedReasonWhy String 1000 If leadStatus = “Rejected” then this value must be provided
Reason for rejection
- Bad Contact Information
- For Another Dealer
- Product/Service Not Offered at Dealership
- End-user, end-use or end-destination may be restricted
- Duplicate Lead Received
- Spam/Inappropriate Lead Submission
C “rejectedReasonWhy”: Bad Contact Information”
secondaryClosedReason
 
String 2500 Secondary reason for closing (Lost or Won or No Deal) the opportunity N “secondaryClosedReason”: “Change of Ownership”
targetDate Date   target date of closure. When lead is converted to an Opportunity this field is required. C “targetDate”: “2019-10-24”

Sample POST body for Scenario: Lead Status = Rejected and rejectedReasonComments is not required

 [
   {
     "leadId": "00Q1W00001SmV5oUAF",
     "dealerLeadId": "A123VSDFDFF",
     “customerPreviouslyKnown”: “Yes”,
     “customerContacted”: “No”,
     "dealerCustomerNumber ": "AO12CD",
     "leadStatus": "Rejected",
     "rejectedReasonWhy": "Bad Contact Information",
     "currencyIsoCode":"USD"
   }
]

Sample POST body for Scenario: Lead Status = Rejected and rejectedReasonComments is required due to value of rejectedReasonWhy

 [
   {
     "leadId": "00Q1W00001SmV5oUAF",
     "dealerLeadId": "A123VSDFDFF",
     “customerPreviouslyKnown”: “Yes”,
     “customerContacted”: “No”,
     "dealerCustomerNumber ": "AO12CD",
     "leadStatus": "Rejected",
     "rejectedReasonWhy": " For Another Dealer ",
     "rejectedReasonComments": " Incorrectly routed to our dealership",
     "currencyIsoCode":"USD"
   }
]

OR

[
   {
       "leadId": "00Q1W00001SmV5oUAF",
       "dealerLeadId": "A123VSDFDFF",
       “customerPreviouslyKnown”: “Yes”,
       “customerContacted”: “No”,
       "dealerCustomerNumber ": "123433",
       “dealerOpportunityId”: null,
       "targetDate":null,
       "probabilityOfClosurePercentage":null,
       "rating":null,
       "dealerSalesRep":"JOHN DOE",
       "opportunityAmount": 0,
       "leadStatus":"Rejected",
       "rejectedReasonWhy": " For Another Dealer ",
       "rejectedReasonComments": " Incorrectly routed to our dealership",
       "currencyIsoCode":"USD",
       “comments”: null
    }
]

Sample POST body for Scenario: Lead Status = Accepted

 [
   {
     "leadId": "00Q1W00001SmV5oUAF",
     "dealerLeadId": "A123VSDFDFF",
     “customerPreviouslyKnown”: “Yes”,
     “customerContacted”: “Yes”,
     “dateContacted”: “2020-04-19”
     "dealerCustomerNumber ": "123433",
     "dealerSalesRep":"JOHN DOE",
     "leadStatus": "Accepted",
     "currencyIsoCode ":"CNY"
   }
]

Sample POST body for Scenario: Lead Status = Disqualified and Customer was contacted

 [
   {
     "leadId": "00Q1W00001SmV5oUAF",
     "dealerLeadId": "A123VSDFDFF",
     “customerPreviouslyKnown”: “Yes”,
     “customerContacted”: true,
     “dateContacted”: ”2020-04-19”
     "dealerCustomerNumber ": "123433",
     "dealerSalesRep":"JOHN DOE",
     "leadStatus": "Disqualified",
     “disqualifiedReasonWhy” : “No budget”,
     "currencyIsoCode ":"CNY"
   }
]

OR

[
   {
       "leadId": "00Q1W00001SmV5oUAF",
       "dealerLeadId": "A123VSDFDFF",
       “customerPreviouslyKnown”: “Yes”,
       “customerContacted”: “No”,
       "dealerCustomerNumber ": "123433",
       “dealerOpportunityId”: null,
       "targetDate":null,
       "probabilityOfClosurePercentage":null,
       "rating":null,
       "dealerSalesRep":"JOHN DOE",
       "opportunityAmount": 0,
       "leadStatus":"Disqualified",
       "currencyIsoCode":"USD",
       “disqualifiedReasonWhy”: “No budget”,
       “comments”: null
    }
]

Sample POST body for Scenario: Lead Status = Disqualified and disqualifiedReasonWhy is Other or End-user, end-use or end-destination may be restricted or Lead Already Known”

[
   {
     "leadId": "00Q1W00001SmV5oUAF",
     "dealerLeadId": "A123VSDFDFF",
     “customerPreviouslyKnown”: “Yes”,
     “customerContacted”: true,
     “dateContacted”: ”2020-04-19”
     "dealerCustomerNumber ": "123433",
     "dealerSalesRep":"JOHN DOE",
     "leadStatus": "Disqualified",
     “disqualifiedReasonWhy” : “Other”,
     “disqualifiedReasonComments” : “After discussing with customer requirements couldn’t be met”,
     "currencyIsoCode ":"CNY"
   }
]

Sample POST body for Scenario: Opportunity Stages = Qualification

[
    { 
       "leadId": "00Q1W00001SmV5oUAF",
       "dealerLeadId": "A123VSDFDFF",
       “dealerOpportunityId”: “B23445232ASSDDV”,
       “customerPreviouslyKnown”: “Yes”,
       “customerContacted”: “No”,
       "dealerCustomerNumber ": "123433",
       "targetDate": “2021-09-23”,
       "probabilityOfClosurePercentage":10,
       "rating":"Low",
       "dealerSalesRep":"JOHN DOE",
       "opportunityAmount":1999.45,
       "leadStatus":" Accepted ",
       "currencyIsoCode":"USD"
      }
]

Sample POST body for Scenario: Opportunity Stages = Develop Solution

[
    { 
       "leadId": "00Q1W00001SmV5oUAF",
       "dealerLeadId": "A123VSDFDFF",
       “dealerOpportunityId”: “B23445232ASSDDV”,
       “customerPreviouslyKnown”: “Yes”,
       “customerContacted”: “No”,
       "dealerCustomerNumber ": "123433",
       "targetDate": “2021-09-23”,
       "probabilityOfClosurePercentage":35,
       "rating":"Medium",
       "dealerSalesRep":"JOHN DOE",
       "opportunityAmount":1999.45,
       "leadStatus":" Accepted ",
       "currencyIsoCode":"USD"
      }
]

Sample POST body for Scenario: Opportunity Stages = Proposal/Negotiation

[
    { 
       "leadId": "00Q1W00001SmV5oUAF",
       "dealerLeadId": "A123VSDFDFF",
       “dealerOpportunityId”: “B23445232ASSDDV”,
       “customerPreviouslyKnown”: “Yes”,
       “customerContacted”: “No”,
       "dealerCustomerNumber ": "123433",
       "targetDate": “2021-09-23”,
       "probabilityOfClosurePercentage":70,
       "rating":"High",
       "dealerSalesRep":"JOHN DOE",
       "opportunityAmount":1999.45,
       "leadStatus":" Accepted",
       “quoteSentDate”: “2020-08-18”,
       “quoteId”: “12AS223”,
       "currencyIsoCode":"USD"
      }
]

Sample POST body for Scenario: Opportunity Stage = Closed Won

  [ 
    {  
       "leadId": "00Q1W00001SmV5oUAF",
       "dealerLeadId": "A123VSDFDFF",
       “dealerOpportunityId”: “B23445232ASSDDV”,
       “customerPreviouslyKnown”: “Yes”,
       “customerContacted”: “No”,
       "dealerCustomerNumber ": "123433",
       "targetDate": “2021-09-23”,
       "probabilityOfClosurePercentage":100,
       "rating":"High",
       "dealerSalesRep":"JOHN DOE",
       "opportunityAmount":1999.45,
       "leadStatus":" Accepted",
       “quoteSentDate”: “2020-08-18”,
       “quoteId”: “12AS223”,
       "currencyIsoCode":"USD"
       “primaryClosedReason”: “Warranty Term (Term/Rate/Scope)”,
       “secondayClosedReason”: “Deal was closed with additional discount”,
       “closedReasonComments”: “Customer negotiated for additional discount”
      }
]

Sample POST body for Scenario: Opportunity Stage = Closed No Deal

[ 
    {  
       "leadId": "00Q1W00001SmV5oUAF",
       "dealerLeadId": "A123VSDFDFF",
       “dealerOpportunityId”: “B23445232ASSDDV”,
       “customerPreviouslyKnown”: “Yes”,
       “customerContacted”: “No”,
       "dealerCustomerNumber ": "123433",
       "targetDate": “2021-09-23”,
       "probabilityOfClosurePercentage":0,
       "rating":"low",
       "dealerSalesRep":"JOHN DOE",
       "opportunityAmount":1999.45,
       "leadStatus":" Accepted",
       "currencyIsoCode":"USD"
       “closedNoDeal”: 1,
       “quoteSentDate”: “2020-08-18”,
       “quoteId”: “12AS223”,
       “primaryClosedReason”: “Products/Parts Not in Cat Network”,
       “secondayClosedReason”: “Products were not available within CAT Network since they were discontinued”
      }
]

Sample POST body for Scenario: Opportunity Stage = Closed Lost

 [
     {"
       "leadId": "00Q1W00001SmV5oUAF",
       "dealerLeadId": "A123VSDFDFF",
       “dealerOpportunityId”: “B23445232ASSDDV”,
       “customerPreviouslyKnown”: “Yes”,
       “customerContacted”: “No”,
       "dealerCustomerNumber ": "123433",
       "targetDate": “2019-09-23”,
       "probabilityOfClosurePercentage":0,
       "rating":"low",
       "dealerSalesRep":"JOHN DOE",
       "opportunityAmount":1999.45,
       "leadStatus": " Accepted",
       "currencyIsoCode": "USD"
       “closedNoDeal”: 0,
       “quoteSentDate”: “2020-08-18”,
       “quoteId”: “12AS223”,
       “primaryClosedReason”: “Competitive Financial (Term/Rates/Scope)”,
       “secondayClosedReason”: “None”,
      }
]

The primary key for a Leads is:

leadId

Transmission/Media Type

  • Mailbox
  • Web service
  • LU6.2
  • XML
  • API
  • PC to Client
  • Web Download/SIFT
  • CD

Testing Procedures

For testing with Caterpillar QA environment:

Description URL
Obtain Bearer token for QA https://fedloginqa.cat.com/as/token.oauth2
Invoke service in QA https://services-qa.cat.com/marketing/ecrm/leadManagememt/v2/leads

You must have valid Client ID credentials for QA environment. Contact ECRM team for help.

In addition to System Integration testing, following tests should be completed by the consumer of the API

  • Load testing
    • Ability to make consecutive GET calls until all PSEs are ingested and GET call returns 0 leads (Note: Since Lead API GET call will only deliver 100 leads, this capability is required to make sure that dealers can pull all leads if the number of leads exceed 100).
  • Dealer error handling
    • Any response code received other than 200 OK or 204 No Content,
      • Retry mechanism should make API call at least 5 times before failing.
      • After Retry failure, it is recommended to trigger an email alert to dealer CRM team to review the error including error details and take necessary actions to fix the error.

Testing Coordination

  • Testing can be performed without Caterpillar DICE Team assistance
  • Testing requires coordination with the Caterpillar ECRM team

Testing Comments

  • Use Postman to test the interface process before deploying more advanced applications using the Partner API.

Who To Contact

For scheduling your testing needs, please contact you assigned Program Manager

Testing will be coordinated by ECRM deployment team

Test Configuration

N/A

Production Information

Production Comment

Production Endpoints:

Description URL
Obtain Bearer token for PROD https://fedlogin.cat.com/as/token.oauth2
Invoke service in PROD https://services.cat.com/marketing/ecrm/leadManagement/v2/leads

You must have valid Client ID credentials for PROD environment. Contact ECRM team for help.

Production Configuration

N/A

Related Articles

Art05065Art05065Modified

testtest modifiedArt05065

Art05064

test

Art05064

test

/apis/products/qa/cat-qr