Ping Post – Exclusive

API 2.0 Specifications for Education

Introduction

This document describes how to post exclusive education leads to PX using ping post. We accept POST requests in XML and JSON. Follow this article to read how ping post works in PX.

Posting URL

Before leads can be posted into PX’s live environment, tests need to be performed to ensure success. For testing purposes, PX will set the publisher campaign to a test mode during the integration. All the tests and responses on these tests can be found in the Test leads report.

Ping URL: https://leadapi.px.com/api/lead/ping

Post URL: https://leadapi.px.com/api/lead/post

Forcing a success: When 90100 zip code is used in the staging environment, the API will respond with success if the API is configured correctly.

Once a lead has been successfully posted and proper posting is confirmed by PX, leads can be posted to the live environment. To post into the live environment, PX will set the publisher campaign to the production mode after approving the successful test.

 

Header Fields Table

KeyRequiredValue
Content-TypeYesApplication/json for JSON requests
Application/xml for XML requests
AcceptNoApplication/json for JSON response
Application/xml for XML response

Examples

Fields Table

ParameterRequired PingRequired PostAccepted Values
Description (data type)
ApiTokenYesYesProvided by PXGUID format
VerticalYesYesEducationString
SubIdYesYesFormat provided at startString
Sub2IdNoNoFormat provided at startString
Sub3IdNoNoFormat provided at startString
Sub4IdNoNoFormat provided at startString
Sub5IdNoNoFormat provided at startString
ReferrerUrl
NoNoReferrerUrl associated with paid search leadsString
SharpSpringIdNoNoSharpSpringId associated with paid search leadsString
ExtTrAccountIdNoNoAdvertising platform customer account identifier (e.g., Facebook Account ID, Google Ads Customer ID, etc.)String
ExtTrAdGroupIdNoNoUnique identifier of ad group or setString
ExtTrAdIdNoNoUnique identifier of adString
ExtTrCampaignNoNoTrack Campaign associated with paid search leadsString
ExtTrCampaignIdNoNoAd platform’s ID of source campaignString
ExtTrClickIdNoNoTracking Click IdentifierString
ExtTrContentIdNoNoTrack Content associated with paid search leads (utm_content)String
ExtTrDeviceNoNoTrack Device associated with paid search leadsString
ExtTrIsBrandedNoNoTrue/FalseString
ExtTrKeywordNoNoTrack Keyword associated with paid search leadsString
ExtTrMediumNoNoTrack Medium associated with paid search leadsString
ExtTrSource
NoNoTrack source associated with paid search leadsString
ExtTrLocationNoNoTrack location associated with paid search leadsString
ExtTrMatchTypeNoNoTrack Match type associated with paid search leadsString
ExtTrackingUrlNoNo The first touch/point of entry lead form’s URLString
TrRemoteCampAignId
NoNoIdentify EMS campus by text identifierString
UserAgentYesYes String
OriginalUrlYesYesURL where the lead is fromString
SourceYesYesDiscuss with Acc. ManagerString
JornayaLeadIdNoNoJornaya LeadId (GUID format)See link on how to implement on form
Trustedform
NoNoTrustedForm Cert. URLSee link on how to implement on form
SessionLengthYesYesAmount of time spent by the user to fill out the form in seconds Integer
TcpaTextYesYesConsent languageString
TransactionIdNoYesRetrieve from Ping ResponseGUID format
FirstName No Yes String
LastNameNoYesString
AddressNoYesString
CityNoYesString
StateYesYes See accepted values listString
ZipCodeYesYes 5 digit zip codeString
EmailAddressNoYes Valid email addressString
PhoneNumberNoYes Valid 10 digit phone number without formatting 8887777777Integer
DayPhoneNumberNoNo Valid 10 digit phone number without formatting 8887777777Integer
IpAddressYesYes Example: 38.88.150.2Integer
Field1NoNoFree text fieldString
Field2NoNoFree text fieldString
Field3NoNoFree text fieldString
Field4NoNoFree text fieldString
Field5NoNoFree text fieldString
Field6NoNoFree text fieldString
Field7NoNoFree text fieldString
Field8NoNoFree text fieldString
Field9NoNoFree text fieldString
Field10NoNoFree text fieldString
FirstNameNoYesTextString
LastNameNoYesTextString
ContactMethodNoNoEmail / Phone / BothString
MaidenNameNoNoTextString
MiddleInitialNoNoTextString
GenderNoNo
Male / Female / Unspecified
String
BirthDateYesYes
YYYY-MM-DD
String
PermanentStateNoNoSee accepted values listString
EducationCompletedNoNoSee accepted values listString
LearningMotivationNoNoTextString
LevelOfExperienceNoNo
Less than 5 years / 5-10 years / 10-15 years / 15-20 years / More than 20 years
String
NativeLanguageNoNoTextString
CreditRatingNoNo
Excellent / Good / Some Problems / Major Problems
String
IsUsCitizenOrResidentNoNo
Citizen / Permanent resident / No
String
HighSchoolNameNoNoTextString
HighSchoolStateNoNoSee accepted values listString
YearHSGEDNoNoNumber (yyyy)String
GEDReceivedDateNoNo
YYYY-MM-DD
String
GEDTestScoreNoNoSee accepted values listString
GEDTestLocationNoNoTextString
OtherSchoolNameNoNoTextString
OtherSchoolGradYearNoNoTextString
OtherSchoolStateNoNoTextString
MilitaryAffiliationNoNoTextString
AppointmentDateNoNo
YYYY-MM-DD
String
AppointmentTimeNoNohh:mm AM/PMString
AreaOfInterestNoNoTextString
CanAttendLocalCampusNoNoYes / NoString
LearningLocationPreferenceNoNo
Campus / Online / Both / Unsure
String
ClassRankNoNoTextString
CollegeGradYearNoNoTextString
CommentsNoNoTextString
HasDegreeNoNoYes / NoString
DegreeObjectiveNoNoTextString
DegreeTypeNoNoTextString
DesiredNextStepNoNoTextString
EmergencyContactNameNoNoTextString
EmergencyContactPhoneNoNoTextString
FutureLSATDateNoNo
YYYY-MM-DD
String
GRERegistrantNumberNoNoTextString
HasAssociateDegreeNoNoYes / NoString
HasAttendedCollegeNoNoYes / NoString
HasHomeInternetNoNoYes / NoString
HasRNLicenseNoNoYes / NoString
EMSLicenseLevelNoNoSee accepted values listString
HasTakenLSATNoNoYes / NoString
LastLSATNoNoTextString
TotalValidLSATsNoNoTextString
HighSchoolLSATNoNoTextString
LastLSATDateNoNo
YYYY-MM-DD
String
IsCurrentOrFormerStudentNoNo
CurrentStudent / FormerStudent / Other
String
IsHighschoolGradNoNoYes / NoString
IsEMTNoNoYes / NoString
LSACAccountNumberNoNoTextString
MajorGPANoNoTextString
OverallGPANoNoTextString
ObstaclesToSuccessNoNoTextString
TargetCareerNoNoTextString
PrimaryConsiderationNoNoSee accepted values listString
PreviousDegreeNoNoTextString
PreviousMajorNoNoTextString
PreviousMajorFieldNoNoTextString
EthnicGroupNoNoTextString
SMSOptInNoNoYes / NoString
IntendedStartNoNoSee accepted values listString
HowHearAboutUsNoNoSee accepted values listString
AdmissionsRepNoNoTextString
CollegeStateNoNoTextString
CourseDateNoNo
YYYY-MM-DD
String
ProjectedStartDateNoNo
YYYY-MM-DD
String
PartOrFullTimeNoNo
part-time / full-time
String
PreferredClassScheduleNoNo
Day / Evening
String
PreferredRegionNoNoTextString
RegistrationFeeNoNoTextString
TuitionFeeNoNoTextString
UniformShirtNoNoTextString
IDYesYesProgramId provided by PXString
BuyerGuid
No NoProvided by PX when applicableString

Responses

PX responds with accurate feedback on how to update your request for it to be accepted by the API.


Success – Ping


{
"TransactionId": "D0447C7B-452B-4F2A-9D7B-F3F72848EEE9",
"Success": true,
"Payout": 8.5,
"Message": null,
"Errors": null,
"Sold": null,
"Environment": "Testing"
}


<?xml version="1.0" encoding="UTF-8"?>
<Result xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<TransactionId>ce34e151-6d00-488d-a465-3fa3cebe7ff9</TransactionId>
	<Success>true</Success>
	<Payout>8.50</Payout>
	<Sold xsi:nil="true" />
	<Environment>Testing</Environment>
</Result>

Success – Post


{
"TransactionId": "D0447C7B-452B-4F2A-9D7B-F3F72848EEE9",
"Success": true,
"Payout": 8.50,
"Message": null,
"Errors": null,
"Sold": null,
"RedirectUrl": null,
"BuyerRawResponse": null,
"Environment": "Testing",
"Legs": null
}


<?xml version="1.0" encoding="UTF-8"?>
<Result xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<TransactionId>143E2B7A-73A3-41F4-87DA-DB8E136606B0</TransactionId>
	<Success>true</Success>
	<Payout>12.34</Payout>
	<Sold xsi:nil="true" />
	<Environment>Testing</Environment>
</Result>


Failure


{
    "TransactionId": "49CE4DB7-775B-405B-BBBD-B23FB003073A",
    "Success": false,
    "Payout": null,
    "Message": "BadRequest",
    "Errors": [
        "'Highest Education' must be one of Associate's Degree, Bachelor's Degree, Doctoral Degree, High School Diploma/GED, Master's Degree, No High School Diploma or GED, Some College, Trade School/Certificate. Your value is ''."
    ]
    "Sold": null,
    "RedirectUrl": null,
    "BuyerRawResponse": null,
    "Environment": null,
    "Legs": null
}


<?xml version="1.0" encoding="UTF-8"?>
<Result xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <TransactionId>49CE4DB7-775B-405B-BBBD-B23FB003073A</TransactionId>
   <Success>false</Success>
   <Payout xsi:nil="true" />
   <Message>BadRequest</Message>
   <Errors>
      <string>'Highest Education' must be one of Associate's Degree, Bachelor's Degree, Doctoral Degree, High School Diploma/GED, Master's Degree, No High School Diploma or GED, Some College, Trade School/Certificate. Your value is ''.</string>
   </Errors>
   <Sold xsi:nil="true" />
</Result>

The responses from our API shows if a Ping/Post has been successful or not, and if the lead wasn’t successful, why the Ping/Post has been rejected.

  • The “Message” parameter gives a general error code.
  • The “Errors” parameter gives the specific cause of the error, such as an invalid or missing value for a specific field.

If the Ping/Post was unsuccessful, the Payout and Sold field will show a “Null” value.

States

ALAKAZARCACOCTDEFLGA
HIIDILINIAKSKYLAMEMD
MAMIMNMSMOMTNENVNHNJ
NMNYNCNDOHOKORPARISC
SDTNTXUTVTVAWAWVWIWY

EducationCompleted

  • Less than high school diploma or GED
  • Currently in high school or GED program
  • High school diploma or GED
  • Professional certificate or license
  • Some college, no degree
  • Associate degree
  • Bachelors degree
  • Masters degree
  • Specialist degree
  • Doctorate degree
  • Professional degree

MilitaryAffiliation

  • Active duty
  • Veteran, Honorable Discharge
  • Prior service
  • no Honorable Discharge
  • National Guard
  • Reserve
  • Family/dependent
  • None

EMSLicenseLevel

  • EMT Specialist / Advanced EMT
  • EMT-Basic
  • First Responder / Emergency Responder
  • No EMS License
  • Paramedic

PrimaryConsideration

  • Alumni network
  • Emphasis on social justice
  • Faculty and class size
  • Job opportunities
  • Reputation and academic rigor
  • Scholarship availability
  • Other

IntendedStart

  • 0-30 days
  • 1-3 months
  • 4-6 months
  • 7-12 months
  • Over 12 months
  • Undecided

HowHearAboutUs

  • Billboard
  • Bus ad
  • Email
  • Event
  • Internet search
  • Mail
  • Newspaper or print ad
  • Referral
  • Television
  • Facebook
  • LinkedIn
  • Pandora
  • Snapchat
  • Spotify
  • Twitter
  • YellowPages
  • YouTube
  • School website
  • Online banner ad
  • Other

 

Implementing Jornaya LeadId

To start generating the Jornaya LeadId token on your leads from your page, a script needs to be added to your website. Follow the guidance on how to implement this script.

Implementing TrustedForm

To start generating the TrustedForm CertURL on your leads from your page, a script needs to be added to your website. Follow the guidance on how to implement this script.

Lost bids

This request is initiated after the ping response is received and instructs our API what price the lead has been sold when our bid was lower. This helps us and our lead buyers to optimize the bids.
Lost bids Post URL: https://secureopenapi.px.com/px

Code examples


Post
<?xml version="1.0" encoding="utf-8"?>
<LeadData Target="Lead.RejectWinner" Partner="{Username}" Password="{password}" AffiliateId="{PublisherID}">
    <Payout>{payout}</Payout>
    <TransactionId>{TransactionId}</TransactionId>
</LeadData>


Post
{
    "type": "jsonwsp/request", 
    "version": "1.0", 
    "methodname": "Lead.RejectWinner", 
    "LeadData":
    {
        "Target" : "Lead.RejectWinner",
        "Partner" : "{Username}",
        "Password" : "{Password}",
        "AffiliateId" : "{PublisherID}",
        "Payout" : "{Payout}",
        "TransactionId" : "{TransactionId}"
    }
}

In addition, HTTP format can be used:

Post
https://secureopenapi.px.com/px?Command=HTTPPost&Target=Lead.RejectWinner&Partner={Username}&Password={Password}&AffiliateId={PublisherID}&Payout={Payout}&TransactiondId={TransactionId}

 

Fields table

ParameterExplanationDescription (data type)
Target=”Lead.RejectWinner”This indicates that my system needs to treat this request as a price update and not a normal leadString
PartnerThe username used to login the account, specifically the account for this campaign (Not MasterAccount)String
PasswordThe password used to login the account, specifically the account for this campaign (Not MasterAccount) 
AffiliateIdThe publisherID provided at the start of the integrationString
PayoutThe price you sold the lead for to another buyer / the price we lost the lead toString
TransactionIdThe same as you would on the post. We return a TransactionId on the ping and you return this here to match ping with the lost bid. Should you have problems retrieving our TransactionId from the response it is also possible to parse your own unique id on the ping in the TransactionId parameter.String