Ping Post v3 API #
All material confidential. Materials constitute proprietary information of Modernize Home Services and QuinStreet, Inc. and may be used by the recipient solely to evaluate an existing business relationship with Modernize Home Services. All other rights reserved by Modernize Home Services.
This document contains detailed instructions and examples for how to sell leads to Modernize Home Services through our Ping Post web API, using a two-step process known as “Ping/Post.”
Contents #
Document Revision: DRAFT Jan 2025
How It Works #
Ping/Post is a two-step process:
Ping- You offer a lead to us by first sending our API partial information about the lead, e.g., service and zipcode. We respond, indicating whether we can buy the lead and for how much ($).Post- You send us the full details of the lead. We respond, confirming receipt. If the lead is a duplicate or invalid lead, we return an error response indicating the reason.
Details for each step are explained in-depth below.
Before You Start #
Before you start sending leads, you will need the following:
- An active QuinStreet publisher account
- Authorization for the service(s) for which you wish to sell us leads
tagId, to be used in your production API requests (see below)
Environments #
Modernize hosts two API environments, one for production operations and another for testing:
| Environment | Hostname |
|---|---|
| Production | form-service-hs.qnst.com |
| Staging (Test) | hsapiservice.quinstage.com |
The Staging environment is for testing. No staging environment leads will be billable.
IMPORTANT: Before sending real leads to the Production environment, you must first test using the Staging environment. This process ensures that you are correctly authenticating, formatting data fields, and authorized to send us leads for your given service(s). During this step, you will test on your end to confirm functionality. Once testing is complete, we will verify that everything looks correct and confirm that you are ready to go. After our confirmation, you can move to the Production environment once we enable you.
Ping #
Use the following HTTP API to offer a lead for sale to Modernize by sending partial information about the lead.
| Field | Value |
|---|---|
| URL | https://<host>/ping-post/pings |
| HTTP Method | POST |
| Required Request Headers | Content-Type: application/json |
| Request Body | Must contain all Common Parameters required for Ping, plus any required Service-Specific Parameters. Keys and values must be encoded in JSON format. |
Post #
Use the following API after a successful Ping response (see above) to transact a sale of a lead to Modernize Home Services, by sending full details of the lead along with a pingToken.
| Field | Value |
|---|---|
| Base URL | https://<host>/ping-post/posts |
| HTTP Method | POST |
| Required Request Headers | Content-Type: application/json |
| Request Body | Must contain all Common Parameters required for Post, plus Service-Specific Parameters. Keys and values must be encoded in JSON format. |
Common Parameters [CASE-SENSITIVE] #
Unless otherwise indicated, the parameters below are accepted for all services.
IMPORTANT: PARAMETER NAMES HAVE CHANGED in our new API. Additionally, all keys and values are CASE-SENSITIVE AND MAY FOLLOW A DIFFERENT CASING CONVENTION. Some parameters follow the “camelCase”-style convention, while other may follow a “TitleCase”-style convention; E.g., use ownHome, not OwnHome. Please look closely at this document to understand the exact required names for parameters and their possible values. If you pass an invalid parameter name or value, your lead may be rejected.
| Parameter Key/Name | Value(s) | Required on Ping? | Required on Post? | Example |
|---|---|---|---|---|
tagId |
(provided by account manager). IMPORTANT: tagId varies by environment. When submitting to the production environment, use your production tagId. Test submissions to the staging environment should use 204670250. Note that test submissions are not billable. |
Yes | Yes | 204670250 |
service |
see Service-Specific Parameter below | Yes | Yes | WINDOWS |
postalCode |
5-digit US zip code | Yes | Yes | 99751 |
buyTimeframe |
(Immediately, 1-6 months, Don't know) |
Yes | Yes | Immediately |
ownHome |
(Yes, No) If not the owner, but is authorized to make improvements, use Yes |
Yes | Yes | Yes |
partnerSourceId |
Value to identify campaigns by marketing efforts or channels on the publisher side. Helps Modernize track and report quality back to publisher | Yes | Yes | CampaignA |
pingToken |
POST ONLY. Set to pingToken value received from successful Ping response. |
No | Yes | 1234567890 |
homePhoneConsentLanguage |
POST ONLY. Complete, string of consent language displayed to consumer. Send on Posts only. | No | Yes | Fake example I consent to receiving calls etc. (abbreviated for clarity) |
leadIDToken |
32-char Jornaya LeadiD Token | No | Yes* | EAF0AAF2-55CD-08A7-DE78-C5A090B3A57B |
trustedFormToken |
TrustedForm token or token URL | No | Yes* | https://cert.trustedform.com/5d9f37382eca1518c752db469cacb6668049c8d3 |
publisherSubId |
Publisher’s own transaction-level identifier for the lead. | Yes | Yes | 123456 |
firstName |
First name | No | Yes | Quin |
lastName |
Last name | No | Yes | Street |
address |
Address | No | Yes | 9305 Nimbus Ave |
city |
City | No | Yes | Kobuk |
state |
State (USPS abbreviation) | No | Yes | AK |
phone |
Phone (10-digit US, no special chars) | No | Yes | 5039065030 |
email |
No | Yes | bizdev@quinstreet.com |
* A compliance certification token is required for all leads. You must pass the trustedFormToken (ActiveProspect) for a lead to be accepted. The leadIDToken (Jornaya) may be passed along with the trustedFormToken but is not required.
Service-Specific Parameters [CASE-SENSITIVE] #
The following parameters are optional on the Post operation, unless otherwise indicated. Providing these additional parameters can help reduce the likelihood of a post reject occuring. If Parameter Name is N/A below, no additional parameters are required for the service.
IMPORTANT: PARAMETER NAMES HAVE CHANGED in our new API. Additionally, all keys and values are CASE-SENSITIVE AND MAY FOLLOW A DIFFERENT CASING CONVENTION. Some parameters follow the “
camelCase”-style convention, while other may follow a “TitleCase”-style convention; E.g., useGuttersType, notguttersType. Please look closely at this document to understand the exact required names for parameters and their possible values. If you pass an invalid parameter name or value, your lead may be rejected.
Common Services #
| Service | Parameter Name | Possible Values | Required? | Example (URL-Encoded) |
|---|---|---|---|---|
ALERTS_MEDICAL |
MedicalAlertProtection |
(Home, OnTheGo, Both) |
Yes | Home |
ALERTS_MEDICAL |
WhoseMedicalAlert |
(Myself, SomebodyElse) |
Yes | Myself |
BATH_REMODEL |
OptIn1 |
Whether the remodel requires removing or adding any walls (No, Yes) |
No | No |
BATHROOM_REFACING |
N/A | |||
DRAINS |
DrainageIssue |
(Pumps, Garbage disposal, Leak) |
Yes | Leak |
DUMPSTER_RENTAL |
BuyTimeframe |
(Within a week, Within two weeks, Within a month, Immediately) |
No | Immediately |
FULL_SERVICE_JUNK_REMOVAL |
JunkVolume |
(Single item, Multiple items, Room of items, Full cleanout) |
Yes | Full cleanout |
GENERATOR |
ProjectScope |
(Install, Repair) |
Yes | Install |
GENERATOR |
GeneratorType |
(Portable, Non-portable) |
Yes | Portable |
GUTTER_COVERS |
GuttersProjectScope |
(Install, Repair) |
Yes | Install |
GUTTER_COVERS |
CommercialLocation |
Kind of location (Business, Home) |
Yes | Home |
GUTTERS |
GutterType |
(Copper, Galvanized, PVC, Seamless Metal, Wood) |
Yes | Seamless Metal |
GUTTERS |
GuttersProjectScope |
(Install, Repair) |
Yes | Install |
GUTTERS |
CommercialLocation |
(Business, Home) |
Yes | Home |
GUTTER_CLEANING |
N/A | |||
HOME_SECURITY |
HomeSecurityProjectScope |
(Equipment, Install, Reactivate) |
Yes | Install |
HOME_SECURITY |
SecuritySystemInstallationType |
(NoPreference, SelfInstall, ProfessionalInstall) |
Yes | ProfessionalInstall |
HOME_SECURITY |
CommercialLocation |
(Business, Home) |
Yes | Home |
HOME_WARRANTY |
Interest |
Why are you interested? (BuyHome, ProtectHome, RealEstateProfessional, Other) |
Yes | BuyHome |
HOT_TUBS |
HotTubUse |
(Relaxation, PainAndHealth, Other) |
Yes | PainAndHealth |
HOT_TUBS |
HotTubType |
(Large, Medium, Small) |
Yes | Large |
HVAC |
HVACInterest |
(Install Boiler/Radiator, Install Central AC, Install Central Heating, Repair Boiler/Radiator, Repair Central AC, Repair Central Heating ) |
Yes | Install Central AC |
HVAC |
BoilerSystemInstallType |
(NaturalGas, Electric, Oil, PropaneGas, Do Not Know) |
Yes | NaturalGas |
HVAC |
CentralHeatingInstallType |
(NaturalGas, Electric, Oil, PropaneGas, Do Not Know) |
Yes | NaturalGas |
HVAC |
BoilerSystemRepairType |
(NaturalGas, Electric, Oil, PropaneGas) |
Yes | NaturalGas |
HVAC |
CentralHeatingRepairType |
(NaturalGas, Electric, Oil, PropaneGas) |
Yes | NaturalGas |
LABOR_SERVICES |
BuyTimeFrame |
(Within a week, Within two weeks, Within a month, Immediately) |
No | Immediately |
MOVING |
BuyTimeFrame |
(Within a week, Within two weeks, Within a month, Immediately) |
No | Immediately |
PLUMBING |
PlumbingProjectScope |
(Install, Repair) |
Yes | Repair |
REPIPE |
ProjectScope |
(Install, Repair) |
Yes | Install |
ROOFING_ASPHALT |
RoofingPlan |
(Completely replace roof, Repair existing roof, Install roof on new construction) |
Yes | Completely replace roof |
ROOFING_CEDAR_SHAKE |
RoofingPlan |
(Completely replace roof, Repair existing roof, Install roof on new construction) |
Yes | Completely replace roof |
ROOFING_COMPOSITE |
RoofingPlan |
(Completely replace roof, Repair existing roof, Install roof on new construction) |
Yes | Completely replace roof |
ROOFING_METAL |
RoofingPlan |
(Completely replace roof, Repair existing roof, Install roof on new construction) |
Yes | Completely replace roof |
ROOFING_NATURAL_SLATE |
RoofingPlan |
(Completely replace roof, Repair existing roof, Install roof on new construction) |
Yes | Completely replace roof |
ROOFING_TAR_TORCHDOWN |
RoofingPlan |
(Completely replace roof, Repair existing roof, Install roof on new construction) |
Yes | Completely replace roof |
ROOFING_TILE |
RoofingPlan |
(Completely replace roof, Repair existing roof, Install roof on new construction) |
Yes | Completely replace roof |
SEWER |
DrainageIssue |
(Slow drainage, Water backing up/gurgling) |
Yes | Slow drainage |
SIDING_ALUMINIUM |
ProjectPlan |
(Siding for a new home, Replace existing siding, Repair section(s) of siding, Siding for a new addition) |
Yes | Replace existing siding |
SIDING_BRICKFACE |
ProjectPlan |
(Siding for a new home, Replace existing siding, Repair section(s) of siding, Siding for a new addition) |
Yes | Replace existing siding |
SIDING_COMPOSITE_WOOD |
ProjectPlan |
(Siding for a new home, Replace existing siding, Repair section(s) of siding, Siding for a new addition) |
Yes | Replace existing siding |
SIDING_STONEFACE |
ProjectPlan |
(Siding for a new home, Replace existing siding, Repair section(s) of siding, Siding for a new addition) |
Yes | Replace existing siding |
SIDING_VINYL |
ProjectPlan |
(Siding for a new home, Replace existing siding, Repair section(s) of siding, Siding for a new addition) |
Yes | Replace existing siding |
SOLAR |
ElectricBill |
(Under $100, $100 - $200, $200 - $300, $300+) |
Yes | $200 - $300 |
STAIR_LIFTS |
ReasonForStairLift |
(Safety, Mobility, Other) |
Yes | Safety |
TREE_SERVICES |
JobType |
(Tree Removal, Tree Trimming, Stump Removal, Other) |
Yes | Tree Removal |
TREE_SERVICES |
NumberOfTrees |
(1, 2, 3, 4+) |
Yes | 1 |
WALK_IN_TUBS |
Interest |
(Safety, Therapeutic, Other) |
Yes | Safety |
WATER_MAIN |
PortalServiceCode |
(SEWER, WATER_MAIN, DRAINS, WATER_HEATERS) |
Yes | DRAINS |
WATER_HEATERS |
ProjectScope |
(Install, Repair) |
Yes | Install |
WATER_TREATMENT |
BuyTimeFrame |
(Immediately, Within two weeks, Flexible) |
No | Immediately |
WATER_TREATMENT |
ServiceType |
(CITY_WATER, WELL_WATER, UNSURE) |
Yes | CITY_WATER |
WINDOWS |
NumberOfWindows |
(1, 2, 3-5, 6-9) If more than 9 windows, use 6-9 |
Yes | 6-9 |
WINDOWS |
WindowsProjectScope |
(Install, Repair) |
Yes | Install |
WALK_IN_SHOWERS |
N/A |
Other Services #
| Service | Parameter Name | Possible Values | Required? | Example (URL-Encoded) |
|---|---|---|---|---|
ARCHITECTURAL_PLAN_DESIGNS |
N/A | |||
ASPHALT |
N/A | |||
BASEMENT_REMODELING |
N/A | |||
BASEMENT_WATERPROOFING |
N/A | |||
CRAWLSPACE_ENCAPSULATION |
N/A | |||
BRICK_WORK |
N/A | |||
CABINET_INSTALL |
N/A | |||
CABINET_REFACING |
N/A | |||
CARPENTRY |
N/A | |||
CARPET_WHOLESALE |
N/A | |||
CHIMNEY_CLEANING |
N/A | |||
CARPET_CLEANING |
N/A | |||
CRAWLSPACE_ENCAPSULATION |
N/A | |||
HOUSE_CLEANING |
N/A | |||
OFFICE_CLEANING |
N/A | |||
UPHOLSTERY_CLEANING |
N/A | |||
WINDOWS_CLEANING |
N/A | |||
CONCRETE_FLATWORK |
ConcreteProjectScope |
(Install, Repair) |
Yes | Install |
CONCRETE_FLATWORK |
CommercialLocation |
(Home,Business) |
Yes | Home |
CONCRETE_FOUNDATION |
ConcreteProjectScope |
(Install, Repair) |
Yes | Install |
CONCRETE_FOUNDATION |
CommercialLocation |
(Home,Business) |
Yes | Home |
CONCRETE_STAMPED_COLOR |
ConcreteProjectScope |
(Install, Repair) |
Yes | Install |
CONCRETE_STAMPED_COLOR |
CommercialLocation |
(Home,Business) |
Yes | Home |
CONCRETE_LIFT_LEVEL |
ProjectScope |
(Install, Repair) |
Yes | Install |
COUNTERTOP |
CountertopType |
(Concrete, Granite, Laminate, Marble, Other Solid Stone, Solid Surface, Stainless Steel, Wood) |
Yes | Marble |
COUNTERTOP |
CountertopProjectScope |
(Install, Repair) |
Yes | Install |
CUSTOM_HOMES_WITH_LOT |
N/A | |||
CUSTOM_HOMES_WITHOUT_LOT |
N/A | |||
DECK |
ProjectScope |
(Cleaning, Install, Repair) |
Yes | Install |
DOOR |
DoorType |
(Storm Door, Exterior, Interior, Sliding Door) |
Yes | Storm Door |
DOOR |
DoorProjectScope |
(Install, Repair) |
Yes | Install |
DOOR |
CommercialLocation |
(Business, Home) |
Yes | Home |
DRAINAGE |
N/A | |||
DRYROT |
N/A | |||
DRYWALL_SHEETROCK |
DrywallProjectScope |
(Install, Repair) |
Yes | Install |
ELECTRICAL |
ProjectScope |
(Install, Repair) |
Yes | Install |
EXCAVATION |
N/A | |||
FENCE_VINYL |
ProjectScope |
(Install, Repair) |
Yes | Install |
FENCE_WOOD |
ProjectScope |
(Install, Repair) |
Yes | Install |
FENCE_METAL |
ProjectScope |
(Install, Repair) |
Yes | Install |
FENCING_CHAINLINK |
ProjectScope |
(Install, Repair) |
Yes | Install |
CARPET |
FlooringProjectScope |
(Install, Repair) |
Yes | Install |
CARPET |
MaterialPurchase |
Have you already purchased materials (Yes, No) |
No | No |
FLOORING_HARDWOOD |
FlooringProjectScope |
(Install, Repair, Refinishing) |
Yes | Install |
FLOORING_HARDWOOD |
MaterialPurchase |
Have you already purchased materials (Yes, No) |
No | No |
FLOORING_HARDWOOD |
CommercialLocation |
Kind of location (Business, Home) |
Yes | |
FLOORING_LAMINATE |
FlooringProjectScope |
(Install, Repair) |
Yes | Install |
FLOORING_LAMINATE |
MaterialPurchase |
Have you already purchased materials (Yes, No) |
No | No |
FLOORING_LAMINATE |
CommercialLocation |
Kind of location (Business, Home) |
Yes | Home |
FLOORING_SUBFLOORS |
FlooringProjectScope |
(Install, Repair) |
Yes | Install |
FLOORING_TILE |
FlooringProjectScope |
(Install, Repair) |
Yes | Install |
FLOORING_VINYL_LINOLEUM |
FlooringProjectScope |
(Install, Repair) |
Yes | Install |
FLOORING_VINYL_LINOLEUM |
MaterialPurchase |
Have you already purchased materials (Yes, No) |
No | No |
FLOORING_VINYL_LINOLEUM |
CommercialLocation |
Kind of location (Business, Home) |
Yes | Home |
FRAMING |
N/A | |||
GARAGE_DOOR |
GarageDoorProjectScope |
(Install, Repair) |
Yes | Install |
GARAGE_DOOR |
CommercialLocation |
Kind of location (Business, Home) |
Yes | Home |
GARAGE_REMODEL |
CommercialLocation |
Kind of location (Business, Home) |
Yes | Home |
HANDYMAN |
CommercialLocation |
(Business, Home) |
Yes | Home |
HOME_MAGAZINE |
N/A | |||
INSULATION |
SubProductService |
(Batts, Blown, Spray, NotSure) |
Yes | Blown |
INSULATION |
InsulationLocation |
(Attic, Walls, Basement, CrawlSpace, Other) |
||
KITCHEN_REMODEL |
N/A | |||
KITCHEN_REMODEL |
N/A | |||
DEBRIS_HAULING |
N/A | |||
LANDSCAPING_ARCHITECT |
N/A | |||
LANDSCAPING_DESIGN_INSTALL |
N/A | |||
LANDSCAPING_LAWN_AERATING |
N/A | |||
LANDSCAPING_LAWN_SEEDING |
N/A | |||
LANDSCAPING_MAINTENANCE |
N/A | |||
LANDSCAPING_SOD |
N/A | |||
LAWN_TREATMENT |
N/A | |||
MOLD_REMEDIATION |
N/A | |||
RETAINING_WALLS |
N/A | |||
SPRINKLER |
SprinklerProjectScope |
(Install, Repair) |
Yes | Install |
MARBLE_AND_GRANITE |
N/A | |||
EXTERIOR_PAINTING |
N/A | |||
INTERIOR_PAINTING |
NumberOfRooms |
(1-2, 3-4, 5-6, 7-8, 9 or more) |
Yes | 9 or more |
PAVERS |
ProjectScope |
(Install, Repair) |
Yes | Install |
PATIO_COVERS |
N/A | |||
PEST_CONTROL |
PestType |
(BirdsBats, BugsInsects, Rodents, SmallAnimals, Termite) |
Yes | BugsInsects |
PEST_CONTROL |
CommercialLocation |
(Business, Home) |
Yes | Home |
POOL |
PoolType |
(InGround, AboveGround) |
Yes | InGround |
POOL |
PoolProjectScope |
(Install, Maintenance, Repair) |
Yes | Install |
POOL |
InGroundType |
(Concrete, Fiberglass, VinylLined) |
Yes | Fiberglass |
POOL |
CommercialLocation |
(Business, Home) |
Yes | Home |
POOL |
MaterialPurchase |
Have you already purchased materials (Yes, No) |
No | No |
POWER_WASHING |
N/A | |||
REMODELING |
N/A | |||
ROOM_ADDITIONS |
N/A | |||
SATELLITE_TV |
N/A | |||
SEPTIC_SEWER [DEPRECATED] |
N/A | |||
SHEDS |
N/A | |||
STUCCO_EXTERIOR |
ProjectPlan |
(Siding for a new home, Replace existing siding, Repair section(s) of siding, Siding for a new addition) |
Yes | Replace existing siding |
SKYLIGHT |
N/A | |||
SNOW_REMOVAL |
N/A | |||
STONE_MASONRY |
N/A | |||
STORAGE |
N/A | |||
STUCCO_INTERIOR |
N/A | |||
SUNROOM |
N/A | |||
TILE_EXTERIOR |
N/A | |||
TILE_INTERIOR |
N/A | |||
WALLPAPER |
N/A | |||
WATER_DAMAGE |
N/A | |||
WINDOW_BLINDS |
N/A | |||
WINDOW_DRAPERIES |
N/A | |||
WINDOW_SHUTTERS |
N/A | |||
WIRING_LOW_VOLTAGE |
N/A |
Example #
Ping #
Example Ping Request:
POST /ping-post/pings HTTP/1.1
Host: <hostname>
Content-Type: application/json
{
"tagId": "204670250",
"service": "WINDOWS",
"postalCode": "99751",
"buyTimeFrame": "Immediately",
"ownHome": "Yes"
}
Example Ping Response - Success:
201 Created
{
"status":"success",
"pingToken": "VBny1dlGo483ZVsJj24BW1xWpA0RrK5z",
"price":"50",
"message": null
}
Example Ping Response - Rejected
{
"status":"rejected",
"pingToken": null,
"price": null,
"message": null
}
Example Ping Response - Error
{
"status":"error",
"message": "postalCode is required."
}
Post Lead #
Example Post Request (newline characters shown for clarity):
POST /ping-post/posts HTTP/1.1
Host: <hostname>
Content-Type: application/json
{
"pingToken": "VBny1dlGo483ZVsJj24BW1xWpA0RrK5z",
"tagId": "204670250",
"service": "WINDOWS",
"NumberOfWindows": "6-9",
"WindowsProjectScope": "Install",
"buyTimeframe": "Immediately",
"ownHome": "Yes",
"leadIDToken": "EAF0AAF2-55CD-08A7-DE78-C5A090B3A57B",
"trustedFormToken": "https://cert.trustedform.com/5d9f37382eca1518c752db469cacb6668049c8d3",
"publisherSubId": "123456",
"partnerSourceId": "CampaignA",
"firstName": "John",
"lastName": "doe",
"email": "john.doe@gmail.com",
"phone": "5403216765",
"state": "CA",
"address": "1234 st",
"postalCode": "99751",
"homePhoneConsentLanguage": "Fake example I consent to receiving calls etc."
}
Example Post Response - Success:
201 Created
{
"status": "success",
"leadId": "50108462152",
"message": null
}
Example Post Response - Rejected
{
"status": "rejected",
"message": "pingToken invalid/ pingToken expired",
"leadId": null
}
Response & Error Codes #
Ping Errors #
| STATUS | VALIDATION MESSAGE | Meaning |
|---|---|---|
rejected |
N/A | No matches were found for the given lead |
error |
100-Invalid Username and Password |
You are not authorized to use the service with the given credentials. Check your tagId and consult with your account manager if needed. IMPORTANT: tagId varies by environment. When submitting to the production environment, use your production tagID. Test submissions to the staging environment should use 204670250. Test submissions are not billable. |
error |
200-Service is required |
A service field was either not given or contains an invalid value. NOTE: check casing of both the key and value. See Common Parameters and list of service codes above. |
error |
300-Zipcode is required |
A zip/postal code (PC field) was either not found or is invalid. |
error |
900- Duplicate Ping Request |
The ping is a duplicate, meaning we have received another ping with the same service + zip from you within the past 10 minutes. |
error |
900- Service/Pricing not setup - please contact your account representative. You are not authorized to post leads for the given service code. Consult your account manager if needed. |
Post Errors #
| STATUS | VALIDATION MESSAGE | ERRORS | Meaning |
|---|---|---|---|
rejected |
Lead is rejected |
N/A | No matches were found for the given lead. |
rejected |
Lead is already submitted for the vendors matched |
N/A | Matched vendors have already received the lead. |
rejected |
Lead is rejected as rejected by matched vendors |
N/A | Matched vendors did not accept the lead. |
rejected |
Lead is rejected |
OwnHome () is a Required field |
Invalid or missing OwnHome field. |
rejected |
Lead is rejected |
Service () is a Required field |
Invalid or missing service field. |
rejected |
Lead is rejected |
[{}] |
Another validation error occurred. Examples include: invalid contact information (first name, last name, address), obscenity, invalid compliance token (e.g., TrustedForm), fraud detected, or other error. |
FAQ #
How long is a pingToken valid? #
While most posts are expected to be completed within a few minutes of the ping (typically 3 minutes or less), we understand that some consumers may take longer to finish their actions. Therefore, pingToken validity extends up to 30 minutes, accommodating these scenarios.
Appendix #
Additional Tips #
tagId Field #
The tagId is unique to your publisher account and authorizes you to send leads for particular services. tagID=204670250 is used only for the Staging environment. Once we confirm stage tests and you move to using the production API, this value must be replaced with the tagID value given to you by your account manager. NOTE: Test submissions are not billable.
TCPA Consent #
- On Post, pass
"homePhoneConsentLanguage": "<...>", including the full language that was shown to the user on-site. Please ask your account manager for details on what exact language we accept.
Compliance Certification Token #
- You must ALWAYS pass an ActiveProspect certificate token in the
trustedFormTokenfield. - Some services additionally require a Jornaya certificate, whose token must be passed in the
leadIDTokenfield. Check with your account manager if there are any issues. - Pass the
trustedFormTokenandleadIDTokenon Post requests.
Successful Testing in Staging #
While integrating with the API in our staging environment you’ll need to test successful matches scenarios. To guarantee your testing lead matches with clients, you can use one of the following trade specific examples with either of the following postal codes.
Solar #
{
"tagId": "204670250",
"service": "SOLAR",
"postalCode": "99004",
"buyTimeframe": "Immediately",
"ownHome": "Yes",
"partnerSourceId" : "campaignA",
"publisherSubId" : "123456678",
"ElectricBill" : "$100 - $200"
}
| Postal Code |
|---|
| 06880 |
| 93212 |
| 23324 |
| 92604 |
| 80504 |
| 92345 |
Roofing #
{
"tagId": "204670250",
"service": "ROOFING_METAL", // ROOFING_COMPOSITE, ROOFING_ASPHALT, or
"postalCode": "84601",
"buyTimeframe": "Immediately",
"ownHome": "Yes",
"partnerSourceId": "CampaignA",
"publisherSubId" : "123456678",
"RoofingPlan" : "Install roof on new construction"
}
| Postal Code |
|---|
| 98532 |
| 97080 |
| 75215 |
| 27046 |