Use global fields and skip mapping entirely
Every prebuilt integration is already mapped to PalDock’s global fields. Populate them once in your lead structure, whether leads arrive through the API or form, and the same fields feed every integration you run.
Integration overview
This prebuilt PalDock integration connects your lead flow directly to the advertiser. It handles field mapping, request delivery and response processing, so you can start sending leads without building the integration from scratch.
The integration uses PalDock’s global fields and returns standardized outcomes for reporting and routing, while preserving advertiser response details for troubleshooting.
Blueprint

{
"nodes": [
{
"id": "1-1",
"type": "startNode",
"position": {
"x": -620,
"y": 40
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "post",
"beType": "integration"
}
}
},
{
"id": "1-2",
"type": "modifyFieldNode",
"position": {
"x": -430,
"y": -20
},
"data": {
"formData": {
"active": true,
"title": "Transform data",
"subtitle": "",
"data": [
{
"fieldName": "{data_income_type}",
"fields": [
{
"source": "{data_income_type}",
"operator": "equals",
"value": "full-time",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "1"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "self-employed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "3"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "parental",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "4"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "pension",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "5"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "unemployed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "6"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "other",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "6"
}
]
},
{
"fieldName": "{data_employed_time}",
"fields": [
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "3-month",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "lessthan3months"
},
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "1-year",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "lessthan1year"
},
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "1-2-year",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "1to2years"
},
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "2-5-year",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "3to5years"
},
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "5-year-plus",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "morethan5years"
}
]
},
{
"fieldName": "{data_home_status}",
"fields": [
{
"source": "{data_home_status}",
"operator": "equals",
"value": "owner",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "owner"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "tenant",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "sublet"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "family",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "parents"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "employ-benefits",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "sublet"
}
]
},
{
"fieldName": "{data_bank_code}",
"fields": [
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "0100",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "3"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "0300",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "6"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "0600",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "5"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "0710",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "8"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "0800",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "4"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2010",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "1"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2020",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "9"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2030",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "10"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2050",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "11"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2060",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "12"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2070",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "13"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2100",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "14"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2200",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "15"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2210",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "16"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2220",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "17"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2230",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "18"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2240",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "19"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2250",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "20"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2260",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "54"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2275",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "55"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2310",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "21"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2600",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "22"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "2700",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "23"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "3030",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "24"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "3060",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "56"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "3500",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "25"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "4000",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "26"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "4300",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "27"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "5000",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "28"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "5400",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "29"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "5500",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "2"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "5800",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "30"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "6000",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "31"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "6200",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "33"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "6210",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "34"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "6300",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "35"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "6363",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "75"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "6700",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "36"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "7910",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "38"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "7940",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "39"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "7950",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "40"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "7960",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "41"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "7970",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "42"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "7980",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "43"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "7990",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "44"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8030",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "45"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8040",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "46"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8060",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "47"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8090",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "48"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8150",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "49"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8190",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "57"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8198",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "58"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8199",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "59"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8200",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "50"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8215",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "60"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8220",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "61"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8230",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "62"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8240",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "63"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8250",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "64"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8255",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "65"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8260",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "66"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8265",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "67"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8270",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "68"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8272",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "69"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8280",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "70"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8283",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "71"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8292",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "72"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8293",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "73"
},
{
"source": "{data_bank_code}",
"operator": "equals",
"value": "8294",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "74"
}
]
},
{
"fieldName": "{data_requested_amount}",
"fields": [
{
"source": "{data_requested_amount}",
"operator": "is_greater_than",
"value": "25000",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "25000"
}
]
},
{
"fieldName": "{data_contact_street}",
"fields": [
{
"source": "{data_contact_street}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_contact_house_number}",
"fields": [
{
"source": "{data_contact_house_number}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_contact_city}",
"fields": [
{
"source": "{data_contact_city}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_contact_zip}",
"fields": [
{
"source": "{data_contact_zip}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
}
]
}
}
},
{
"id": "1-3",
"type": "httpNode",
"position": {
"x": -200,
"y": 40
},
"data": {
"formData": {
"active": true,
"title": "Post",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/api/v2/registrations",
"timeout": 30,
"format": "application/json",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"query": [
{
"key": "token",
"value": "{token}"
}
],
"body": [
{
"key": "nin",
"value": "{data_nin}"
},
{
"key": "bank",
"value": "{data_bank_code}"
},
{
"key": "city",
"value": "{data_city}"
},
{
"key": "days",
"value": "{data_period}"
},
{
"key": "name",
"value": "{data_first_name}"
},
{
"key": "costs",
"value": "{data_expenses}"
},
{
"key": "email",
"value": "{data_email}"
},
{
"key": "amount",
"value": "{data_requested_amount}"
},
{
"key": "street",
"value": "{data_street}"
},
{
"key": "housing",
"value": "{data_home_status}"
},
{
"key": "surname",
"value": "{data_last_name}"
},
{
"key": "zipCode",
"value": "{data_zip}"
},
{
"key": "employer",
"value": "{data_employer}"
},
{
"key": "ipAddress",
"value": "{ip_address}"
},
{
"key": "netIncome",
"value": "{data_monthly_income}"
},
{
"key": "moneySource",
"value": "{data_income_type}"
},
{
"key": "phoneNumber",
"value": "{data_cell_phone}"
},
{
"key": "deliveryCity",
"value": "{data_contact_city}"
},
{
"key": "idCardNumber",
"value": "{data_identity_card_number}"
},
{
"key": "streetNumber",
"value": "{data_house_number}"
},
{
"key": "workingYears",
"value": "{data_employed_time}"
},
{
"key": "accountNumber",
"value": "{data_account_number}"
},
{
"key": "deliveryStreet",
"value": "{data_contact_street}"
},
{
"key": "selfEmployerIc",
"value": "{data_company_number_imported}"
},
{
"key": "deliveryZipCode",
"value": "{data_contact_zip}"
},
{
"key": "employerPosition",
"value": "{data_job_title}"
},
{
"key": "employerPhoneNumber",
"value": "{data_employer_phone}"
},
{
"key": "deliveryStreetNumber",
"value": "{data_contact_house_number}"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "1-4",
"type": "setNode",
"position": {
"x": 60,
"y": -40
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{external_id}",
"value": "{parsedBody.data.id}"
},
{
"key": "{redirect_url}",
"value": "{parsedBody.data.redirect_url}"
}
]
}
}
},
{
"id": "1-6",
"type": "endNode",
"position": {
"x": 300,
"y": -40
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "1-5",
"type": "modifyFieldNode",
"position": {
"x": 60,
"y": 160
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{parsedBody.data.description}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
},
{
"source": "{parsedBody.data.description}",
"operator": "equals",
"value": "KO",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Not Eligible"
},
{
"source": "{parsedBody.data.description}",
"operator": "contains",
"value": "Scoring",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Poor Credit"
},
{
"source": "{parsedBody.data.description}",
"operator": "contains",
"value": "Validation error",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Invalid Data"
},
{
"source": "{status}",
"operator": "equals",
"value": "409",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Duplicate"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{status}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "http {status}"
},
{
"source": "{parsedBody.data.description}",
"operator": "is_not_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "http {status}: {parsedBody.data.description}"
}
]
}
]
}
}
},
{
"id": "1-7",
"type": "endNode",
"position": {
"x": 300,
"y": 160
},
"data": {
"formData": {
"active": true,
"title": "Rejected",
"subtitle": "",
"success": "failed"
}
}
}
],
"edges": [
{
"id": "edge-1-1-1-2",
"source": "1-1",
"target": "1-2",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-2-1-3",
"source": "1-2",
"target": "1-3",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-3-1-4",
"source": "1-3",
"target": "1-4",
"type": "customEdge",
"data": {
"active": true,
"title": "created",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "201",
"output2": ""
},
{
"value": "{parsedBody.data.redirect_url}",
"operator": "is_not_empty",
"output": "",
"output2": ""
}
]
}
},
{
"id": "edge-1-3-1-5",
"source": "1-3",
"target": "1-5",
"type": "customEdge",
"data": {
"active": true,
"title": "not created",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "regex_not_match",
"output": "^201$",
"output2": ""
}
]
}
},
{
"id": "edge-1-4-1-6",
"source": "1-4",
"target": "1-6",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-5-1-7",
"source": "1-5",
"target": "1-7",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
}
]
}How it works
- Copy the blueprint and paste it in your PalDock workspace– Create a new integration in your workspace and paste the blueprint. Every field arrives prefilled.
- Enter your credentials – Paste the secrets you received from advertiser and set your Pingtree
- Send a test lead – Verify the response, then switch the channel live.
FAQ
Do I need my own contract with this advertiser?
Yes. PalDock delivers leads on your behalf, so the commercial agreement and API credentials come from the advertiser directly.
What happens to rejected leads?
The advertiser returns its decision in the delivery response. PalDock reads it and moves rejected leads to the next buyer in your pingtree automatically, so a rejection does not need to end the lead’s journey.
Can I change the field mapping?
Yes, but we do not recommend it. Blueprints are already mapped to PalDock’s global fields. If you use local fields, you need to remap each integration separately.
How long does setup take?
Few clicks, if you already have credentials. The blueprint arrives prefilled and mapped to PalDock’s global fields, so if your lead structure uses them, there is nothing to map. If you use local fields, you map them once.
What the integration does
Start sending leads in 3 clicks
Copy the prebuilt blueprint, add your credentials and start sending leads. No coding, no integration work.
Real-time lead delivery
Send leads to the advertiser instantly as they arrive, without exports, batches or manual processing.
No field mapping headache
PalDock global fields work across all prebuilt integrations. Map your lead data once and reuse it everywhere.
Know exactly why leads fail
Get standardized rejection reasons for reporting and advertiser’s response for the full context and troubleshooting.
API & integration details
Single-step registration. There is no ping, one call creates the customer and returns the decision along with the redirect URL.
The thing to know before building this: CoolCredit answers business rejections with HTTP 241, a status code that does not exist in the standard. It is a real answer, not a fault, and it carries the reason.
What will be needed from advertiser
| Key | Purpose |
|---|---|
endpoint | Base API URL. |
token | Token sent in the query string. |
Flows
Post, POST /api/v2/registrations?token={token}. Creates the registration and decides in the same call.
Calls
POST {endpoint}/api/v2/registrations?token={token}
Content-Type: application/json
format: application/json
The token goes in the query string, not a header.
Request fields
| Field | Required | Value |
|---|---|---|
name | yes | {g_name_first} |
surname | yes | {g_name_last} |
nin | yes | {g_id_national_number} |
idCardNumber | yes | {g_id_card_number} |
phoneNumber | yes | {g_phone} |
email | yes | {g_email} |
street | yes | {g_address_street} |
streetNumber | yes | {g_address_street_number} |
city | yes | {g_address_city} |
zipCode | yes | {g_address_zip} |
deliveryStreet | no | {g_address_contact_street} |
deliveryStreetNumber | no | {g_address_contact_street_number} |
deliveryCity | no | {g_address_contact_city} |
deliveryZipCode | no | {g_address_contact_zip} |
moneySource | yes | {g_fin_type}, see enums |
netIncome | yes | {g_fin_income} |
costs | no | {g_fin_expenses} |
workingYears | yes | {g_employ_time}, see enums |
housing | yes | {g_home_type}, see enums |
accountNumber | yes | {g_bank_account_number} |
bank | yes | {g_bank_account_code}, see enums |
amount | yes | {g_amount}, capped at 25 000 |
days | yes | {g_period} |
employer | no | {g_employer_name} |
employerPosition | no | {g_employ_position} |
employerPhoneNumber | no | {g_employer_phone} |
selfEmployerIc | self-employed | {g_company_registration} |
ipAddress | yes | {ip_address} |
accountNumber and bank are separate fields, the account number goes in without the bank code, and the code becomes a numeric bank ID.
On capping the amount
Where a request exceeds the advertiser’s maximum, send the maximum rather than the requested figure, but agree it with them first. Translating a higher request down is right only when they would otherwise reject the lead outright. Where they would have made a smaller offer on their own, send what the applicant actually asked for and let them answer.
This is the one place the general rule bends: amount, term and product are the request itself, so they are normally passed through untouched.
Enums
bank is a numeric ID, not the Czech bank code. GET /api/v1/banks?token=… returns the current list; fetch it once and write the mapping into the blueprint rather than calling it per lead. A wrong ID is rejected with Bank is id not valid.
The mapping is long, roughly seventy Czech bank codes. Two warnings about writing it:
Put the fallback first in the section, not last. A fallback placed last with the field as its own source re-reads the original four-digit code and overwrites every mapping that just succeeded. This has happened, silently, across hundreds of leads.
Do not add a repair regex for the bank code itself. If codes arrive malformed, that is the form’s validation to fix, once, for every advertiser.
moneySource: numeric, 1 employed, 3 self-employed, 4 maternity, 5 pension, 6 unemployed or other.
workingYears and housing vary by contract, one configuration takes the form’s own values unchanged, another takes CoolCredit’s labels. Check which one the account uses before mapping.
Outcomes
| Recognised by | HTTP | Meaning | Reject reason | Frequency |
|---|---|---|---|---|
status.message ~ Created | 201 | Accepted | , | occasional |
data.description: KO | 241 | Refused, no reason given | Unspecified | common |
data.description: Scoring | 241 | Refused by scoring | Poor Credit | common |
data.description ~ Validation error | 400 | Payload refused, field named | Invalid Data | occasional |
data.description ~ Registration processing | 409 | An earlier registration is still running | Duplicate | rare |
The validation messages name the field: IdCardNumber is not valid, ZipCode is not valid, AccountNumber is not valid, Bank is id not valid. Choose bank id according to api documentation. Pass the whole description through in {reason_detail}; a run of one field name is a form problem, not an advertiser problem.
KO is the largest bucket and means nothing more than “no”. Unspecified, every time not Not Eligible, because no condition was named.
Reject reasons come from the standard list. See Reject reason for what each one means and when to use it.
Branching
Accepted, both parts checked on the same connection:
{status} equals 201
{parsedBody.status.message} contains Created
Everything else that is an answer. The catch-all is paired with the success status code so that only CoolCredit’s own responses can reach it:
{status}|{parsedBody.status.message} regex not match ^201\|.*Created.*$
241, 400 and 409 all carry a documented business result in the body, which is why they are branched rather than left to Dead End. A bare 401 or 5xx gets no branch.
Stored values
| Parameter | Source |
|---|---|
{external_id} | {parsedBody.data.id} |
{redirect_url} | {parsedBody.data.redirect_url} |
Advertiser APIs change without warning
When they do, leads stop being delivered, often before anyone notices. PalDock gives you delivery logs and alerts so you can catch it early. With Managed Integrations, we watch the connection and fix it for you.
