| Advertiser | Creditportal |
| Country | CZ |
| Segment | Finance |
| Product | Loan |
| Integration type | Lead generation |
| Flows | Ping → Post |
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": 0
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "ping",
"beType": "integration"
}
}
},
{
"id": "2-1",
"type": "startNode",
"position": {
"x": -620,
"y": 350
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "post",
"beType": "integration"
}
}
},
{
"id": "3-1",
"type": "startNode",
"position": {
"x": -620,
"y": 700
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "postVerify",
"beType": "integration"
}
}
},
{
"id": "1-2",
"type": "modifyFieldNode",
"position": {
"x": -420,
"y": 0
},
"data": {
"formData": {
"active": true,
"title": "Transform data",
"subtitle": "",
"data": [
{
"fieldName": "{data_created-date}",
"fields": [
{
"source": "{data_created-date}",
"operator": "always",
"value": "",
"value2": "",
"modification": "modify_date",
"pattern": "",
"output": "+{period} days"
},
{
"source": "{_1}",
"operator": "always",
"value": "",
"value2": "",
"modification": "format_date",
"pattern": "",
"output": "d.m.Y"
}
]
},
{
"fieldName": "{data_nin}",
"fields": [
{
"source": "{data_nin}",
"operator": "always",
"value": "",
"value2": "",
"modification": "regex_replace",
"pattern": "(\\d{6})(\\d{4})",
"output": "\\1/\\2"
}
]
},
{
"fieldName": "{data_contact_street}",
"fields": [
{
"source": "{data_contact_street}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": " "
}
]
},
{
"fieldName": "{data_contact_city}",
"fields": [
{
"source": "{data_contact_city}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": " "
}
]
},
{
"fieldName": "{data_contact_zip}",
"fields": [
{
"source": "{data_contact_zip}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": " "
}
]
},
{
"fieldName": "{data_income_type}",
"fields": [
{
"source": "{data_income_type}",
"operator": "equals",
"value": "parental",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "maternity"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "pension",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "pension - old-age"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "other",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "part-time"
}
]
},
{
"fieldName": "{data_employer}",
"fields": [
{
"source": "{data_employer}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "nezadáno"
}
]
},
{
"fieldName": "{data_employer_phone}",
"fields": [
{
"source": "{data_employer_phone}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "777777777"
}
]
},
{
"fieldName": "{data_home_status}",
"fields": [
{
"source": "{data_home_status}",
"operator": "equals",
"value": "owner",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "home owner"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "family",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "with parents"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "employ-benefits",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "employee benefit"
}
]
},
{
"fieldName": "{data_job_title}",
"fields": [
{
"source": "{data_job_title}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "nezadáno"
}
]
},
{
"fieldName": "{data_employer_address}",
"fields": [
{
"source": "{data_employer_address}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "nezadáno"
}
]
},
{
"fieldName": "{custom_gender}",
"fields": [
{
"source": "{data_nin}",
"operator": "always",
"value": "",
"value2": "",
"modification": "first_regex_match",
"pattern": "",
"output": "(?<=^\\d{2})\\d{2}"
},
{
"source": "{_1}",
"operator": "is_greater_than",
"value": "12",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "F"
},
{
"source": "{_1}",
"operator": "is_less_than",
"value": "13",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "M"
}
]
}
]
}
}
},
{
"id": "1-3",
"type": "httpNode",
"position": {
"x": -150,
"y": 0
},
"data": {
"formData": {
"active": true,
"title": "Ping",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/cs/api",
"timeout": 30,
"format": "x-www-form-urlencoded+json-data",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [],
"query": [],
"body": [
{
"key": "format",
"value": "json"
},
{
"key": "data.ip",
"value": "{ip_address}"
},
{
"key": "data.date",
"value": "{data_created-date}"
},
{
"key": "data.name",
"value": "{data_first_name}"
},
{
"key": "data.town",
"value": "{data_city}"
},
{
"key": "data.email",
"value": "{data_email}"
},
{
"key": "data.phone",
"value": "{data_cell_phone}"
},
{
"key": "data.amount",
"value": "{data_requested_amount}"
},
{
"key": "data.bankId",
"value": "{data_bank_code}"
},
{
"key": "data.gender",
"value": "{custom_gender}"
},
{
"key": "data.street",
"value": "{data_street}"
},
{
"key": "data.birthId",
"value": "{data_nin}"
},
{
"key": "data.command",
"value": "checkFullLeadWithoutContact"
},
{
"key": "data.partner",
"value": "{token}"
},
{
"key": "data.product",
"value": "online"
},
{
"key": "data.surname",
"value": "{data_last_name}"
},
{
"key": "data.version",
"value": "1.4"
},
{
"key": "data.chanelId",
"value": "API"
},
{
"key": "data.expenses",
"value": "{data_expenses}"
},
{
"key": "data.jobTitle",
"value": "{data_job_title}"
},
{
"key": "data.citizenId",
"value": "{data_identity_card_number}"
},
{
"key": "data.requestId",
"value": "{eid}"
},
{
"key": "data.timestamp",
"value": "toInt({timestamp})"
},
{
"key": "data.birthPlace",
"value": "{data_city}"
},
{
"key": "data.homeStatus",
"value": "{data_home_status}"
},
{
"key": "data.postalCode",
"value": "{data_zip}"
},
{
"key": "data.bankAccount",
"value": "{data_account_number}"
},
{
"key": "data.companyName",
"value": "{data_employer}"
},
{
"key": "data.townContact",
"value": "{data_contact_city}"
},
{
"key": "data.birthCountry",
"value": "Česká republika"
},
{
"key": "data.companyPhone",
"value": "{data_employer_phone}"
},
{
"key": "data.employedTime",
"value": "{data_employed_time}"
},
{
"key": "data.incomeAmount",
"value": "{data_monthly_income}"
},
{
"key": "data.incomeSource",
"value": "{data_income_type}"
},
{
"key": "data.companyNumber",
"value": "{data_company_number}"
},
{
"key": "data.contactPerson",
"value": "nezadáno"
},
{
"key": "data.streetContact",
"value": "{data_contact_street}"
},
{
"key": "data.employerAddress",
"value": "{data_employer_address}"
},
{
"key": "data.contactPersonType",
"value": "unclassifiable"
},
{
"key": "data.postalCodeContact",
"value": "{data_contact_zip}"
},
{
"key": "data.contactPersonPhone",
"value": "111111111"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "1-4",
"type": "modifyFieldNode",
"position": {
"x": 120,
"y": 100
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{parsedBody.status}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
},
{
"source": "{parsedBody.message}",
"operator": "contains",
"value": "Validation failed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Invalid Data"
},
{
"source": "{parsedBody.message}",
"operator": "contains",
"value": "Invalid parameter",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Invalid Data"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "1-5",
"type": "endNode",
"position": {
"x": 390,
"y": -70
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "1-6",
"type": "endNode",
"position": {
"x": 390,
"y": 100
},
"data": {
"formData": {
"active": true,
"title": "Rejected",
"subtitle": "",
"success": "failed"
}
}
},
{
"id": "2-2",
"type": "modifyFieldNode",
"position": {
"x": -420,
"y": 350
},
"data": {
"formData": {
"active": true,
"title": "Transform data",
"subtitle": "",
"data": [
{
"fieldName": "{data_created-date}",
"fields": [
{
"source": "{data_created-date}",
"operator": "always",
"value": "",
"value2": "",
"modification": "modify_date",
"pattern": "",
"output": "+{period} days"
},
{
"source": "{_1}",
"operator": "always",
"value": "",
"value2": "",
"modification": "format_date",
"pattern": "",
"output": "d.m.Y"
}
]
},
{
"fieldName": "{custom_birth_id}",
"fields": [
{
"source": "{data_nin}",
"operator": "always",
"value": "",
"value2": "",
"modification": "regex_replace",
"pattern": "^(\\d{6})/?(\\d{3,4})$",
"output": "\\1/\\2"
}
]
},
{
"fieldName": "{data_income_type}",
"fields": [
{
"source": "{data_income_type}",
"operator": "equals",
"value": "parental",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "maternity"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "pension",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "pension - old-age"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "other",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "part-time"
}
]
},
{
"fieldName": "{data_employer}",
"fields": [
{
"source": "{data_employer}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "nezadáno"
}
]
},
{
"fieldName": "{data_employer_phone}",
"fields": [
{
"source": "{data_employer_phone}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "777777777"
}
]
},
{
"fieldName": "{data_home_status}",
"fields": [
{
"source": "{data_home_status}",
"operator": "equals",
"value": "owner",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "home owner"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "family",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "with parents"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "employ-benefits",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "employee benefit"
}
]
},
{
"fieldName": "{data_job_title}",
"fields": [
{
"source": "{data_job_title}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "nezadáno"
}
]
},
{
"fieldName": "{data_employer_address}",
"fields": [
{
"source": "{data_employer_address}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "nezadáno"
}
]
}
]
}
}
},
{
"id": "2-3",
"type": "httpNode",
"position": {
"x": -150,
"y": 350
},
"data": {
"formData": {
"active": true,
"title": "Post",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/cs/api",
"timeout": 30,
"format": "x-www-form-urlencoded+json-data",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [],
"query": [],
"body": [
{
"key": "format",
"value": "json"
},
{
"key": "data.ip",
"value": "{ip_address}"
},
{
"key": "data.date",
"value": "{data_created-date}"
},
{
"key": "data.name",
"value": "{data_first_name}"
},
{
"key": "data.town",
"value": "{data_city}"
},
{
"key": "data.email",
"value": "{data_email}"
},
{
"key": "data.phone",
"value": "{data_cell_phone}"
},
{
"key": "data.amount",
"value": "{data_requested_amount}"
},
{
"key": "data.bankId",
"value": "{data_bank_code}"
},
{
"key": "data.gender",
"value": "{data_nin}"
},
{
"key": "data.street",
"value": "{data_street}"
},
{
"key": "data.birthId",
"value": "{custom_birth_id}"
},
{
"key": "data.command",
"value": "submitLead"
},
{
"key": "data.partner",
"value": "{token}"
},
{
"key": "data.product",
"value": "online"
},
{
"key": "data.surname",
"value": "{data_last_name}"
},
{
"key": "data.version",
"value": "1.4"
},
{
"key": "data.chanelId",
"value": "API"
},
{
"key": "data.expenses",
"value": "{data_expenses}"
},
{
"key": "data.jobTitle",
"value": "{data_job_title}"
},
{
"key": "data.citizenId",
"value": "{data_identity_card_number}"
},
{
"key": "data.timestamp",
"value": "toInt({timestamp})"
},
{
"key": "data.birthPlace",
"value": "{data_city}"
},
{
"key": "data.homeStatus",
"value": "{data_home_status}"
},
{
"key": "data.postalCode",
"value": "{data_zip}"
},
{
"key": "data.bankAccount",
"value": "{data_account_number}"
},
{
"key": "data.companyName",
"value": "{data_employer}"
},
{
"key": "data.requestedId",
"value": "{eid}"
},
{
"key": "data.townContact",
"value": "{data_contact_city}"
},
{
"key": "data.birthCountry",
"value": "Česká republika"
},
{
"key": "data.companyPhone",
"value": "{data_employer_phone}"
},
{
"key": "data.employedTime",
"value": "{data_employed_time}"
},
{
"key": "data.incomeAmount",
"value": "{data_monthly_income}"
},
{
"key": "data.incomeSource",
"value": "{data_income_type}"
},
{
"key": "data.companyNumber",
"value": "{data_company_number}"
},
{
"key": "data.contactPerson",
"value": "nezadáno"
},
{
"key": "data.streetContact",
"value": "{data_contact_street}"
},
{
"key": "data.employerAddress",
"value": "{data_employer_address}"
},
{
"key": "data.contactPersonType",
"value": "unclassifiable"
},
{
"key": "data.postalcodeContact",
"value": "{data_contact_zip}"
},
{
"key": "data.contactPersonPhone",
"value": "111111111"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "2-4",
"type": "setNode",
"position": {
"x": 120,
"y": 280
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{token_id}",
"value": "{parsedBody.data.tokenId}"
},
{
"key": "{token_code}",
"value": "{parsedBody.data.tokenCode}"
},
{
"key": "{external_id}",
"value": "{parsedBody.data.loanNumber}"
}
]
}
}
},
{
"id": "2-6",
"type": "endNode",
"position": {
"x": 390,
"y": 280
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "2-5",
"type": "modifyFieldNode",
"position": {
"x": 120,
"y": 440
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{parsedBody.status}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
},
{
"source": "{parsedBody.message}",
"operator": "contains",
"value": "Validation failed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Invalid Data"
},
{
"source": "{parsedBody.message}",
"operator": "contains",
"value": "Invalid parameter",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Invalid Data"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "2-7",
"type": "endNode",
"position": {
"x": 390,
"y": 440
},
"data": {
"formData": {
"active": true,
"title": "Rejected",
"subtitle": "",
"success": "failed"
}
}
},
{
"id": "3-2",
"type": "httpNode",
"position": {
"x": -350,
"y": 700
},
"data": {
"formData": {
"active": true,
"title": "Verify",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/cs/api",
"timeout": 30,
"format": "x-www-form-urlencoded+json-data",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [],
"query": [],
"body": [
{
"key": "command",
"value": "submitToken"
},
{
"key": "partner",
"value": "{token}"
},
{
"key": "tokenId",
"value": "{token_id}"
},
{
"key": "version",
"value": "1.4"
},
{
"key": "timestamp",
"value": "toInt({timestamp})"
},
{
"key": "tokenCode",
"value": "{token_code}"
},
{
"key": "tokenValue",
"value": "{code}"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "3-3",
"type": "setNode",
"position": {
"x": -70,
"y": 630
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{redirect_url}",
"value": "{parsedBody.data.redirectUri}"
}
]
}
}
},
{
"id": "3-5",
"type": "endNode",
"position": {
"x": 220,
"y": 630
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "3-4",
"type": "modifyFieldNode",
"position": {
"x": -70,
"y": 790
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{parsedBody.status}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
},
{
"source": "{parsedBody.data.status}",
"operator": "equals",
"value": "incorrect",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Invalid Data"
},
{
"source": "{parsedBody.data.status}",
"operator": "equals",
"value": "expired",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Expired"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "3-6",
"type": "endNode",
"position": {
"x": 220,
"y": 790
},
"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-2-1-2-2",
"source": "2-1",
"target": "2-2",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-3-1-3-2",
"source": "3-1",
"target": "3-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": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_match",
"output": "(?:\"status\"\\s*:\\s*\"error\"|\"accepted\"\\s*:\\s*false)",
"output2": ""
}
]
}
},
{
"id": "edge-1-3-1-5",
"source": "1-3",
"target": "1-5",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.status}",
"operator": "equals",
"output": "ok",
"output2": ""
},
{
"value": "{parsedBody.data.accepted}",
"operator": "is_true",
"output": "",
"output2": ""
}
]
}
},
{
"id": "edge-1-4-1-6",
"source": "1-4",
"target": "1-6",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-2-2-3",
"source": "2-2",
"target": "2-3",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-3-2-4",
"source": "2-3",
"target": "2-4",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.status}",
"operator": "equals",
"output": "ok",
"output2": ""
},
{
"value": "{parsedBody.data.accepted}",
"operator": "is_true",
"output": "",
"output2": ""
}
]
}
},
{
"id": "edge-2-3-2-5",
"source": "2-3",
"target": "2-5",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_match",
"output": "(?:\"status\"\\s*:\\s*\"error\"|\"accepted\"\\s*:\\s*false)",
"output2": ""
}
]
}
},
{
"id": "edge-2-4-2-6",
"source": "2-4",
"target": "2-6",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-5-2-7",
"source": "2-5",
"target": "2-7",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-3-2-3-3",
"source": "3-2",
"target": "3-3",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.status}",
"operator": "equals",
"output": "ok",
"output2": ""
},
{
"value": "{parsedBody.data.accepted}",
"operator": "is_true",
"output": "",
"output2": ""
},
{
"value": "{parsedBody.data.status}",
"operator": "equals",
"output": "ok",
"output2": ""
}
]
}
},
{
"id": "edge-3-2-3-4",
"source": "3-2",
"target": "3-4",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_match",
"output": "(?:\"status\"\\s*:\\s*\"error\"|\"accepted\"\\s*:\\s*false)",
"output2": ""
}
]
}
},
{
"id": "edge-3-3-3-5",
"source": "3-3",
"target": "3-5",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-3-4-3-6",
"source": "3-4",
"target": "3-6",
"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
CreditPortal uses one endpoint for three independent flows: a prescore Ping, lead submission, and SMS verification. Every call is an HTTP POST to /cs/api; the operation is chosen by the command field.
The live/legacy flow in the current blueprint is checkFullLeadWithoutContact → submitLead → submitToken. The newer advertiser note about sending an smsCode directly with submitLead is not activated because its rollout and exact contract are not proven by the current integration.
What will be needed from advertiser
| Key | Purpose |
|---|---|
endpoint | Base API URL; the blueprint appends /cs/api. |
token | Partner identifier sent as partner. |
sign_secret | Shared secret used for the CreditPortal MD5 request signature. |
Flows
Ping, command checkFullLeadWithoutContact. Sends the lead data and checks data.accepted.
Post, command submitLead. On success stores the loan number and SMS token identifiers.
Verify, command submitToken. Verifies the SMS code and returns redirectUri when accepted.
These flows are independent Start paths; do not connect Ping directly to Post or Post directly to Verify in the integration canvas.
Calls
POST {endpoint}/cs/api
Ping and Post use the JSON-in-form shape (format: x-www-form-urlencoded+json-data) with format=json plus data.* fields. The current blueprint dump also shows Verify in this format.
CreditPortal signs requests as MD5 of the sent values joined by |, followed by | and the shared secret. The secret itself is never sent. The current blueprint dump has signature: null on Ping, Post and Verify even though the advertiser contract requires signing, so those nodes must be configured with the MD5-values-secret signature using sign_secret before production.
Request fields
Common lead fields — Ping and Post
| Field | Value |
|---|---|
partner | {token} |
version | 1.4 |
timestamp | toInt({timestamp}) |
ip | {ip_address} |
date | due date derived from the lead date + requested period, d.m.Y |
name, surname | applicant name |
email, phone | contact data |
birthId | national ID with slash |
citizenId | ID-card number |
gender | derived helper in Ping; current Post preserves the production-proven raw-source behavior |
birthPlace | current blueprint maps residential city; verify upstream semantics if a real birthplace field becomes available |
birthCountry | Česká republika |
street, town, postalCode | permanent address |
streetContact, townContact, contact postal code | contact address |
amount | {g_amount} / current requested amount; the latest blueprint sends it without an integration-level cap |
bankAccount, bankId | account number and bank code |
incomeSource, incomeAmount, expenses | finance data |
companyName, companyNumber, companyPhone, employerAddress, jobTitle, employedTime | employment data |
product | online |
chanelId | API |
requestId / requestedId | {send_id}-style source identifier; field spelling differs between Ping and Post |
The current payload intentionally preserves two production-proven asymmetries: Ping uses requestId and postalCodeContact; Post uses requestedId and postalcodeContact.
Verify
| Field | Value |
|---|---|
command | submitToken |
partner | {token} |
version | 1.4 |
timestamp | toInt({timestamp}) |
tokenId | value stored from Post |
tokenCode | value stored from Post |
tokenValue | verification code entered by the client |
Transforms
The due date is calculated as the lead date plus {g_period} days and formatted d.m.Y.
National ID is normalised to the slash form for birthId. Income and housing labels are translated to the advertiser vocabulary. The current blueprint also fills several fields the API historically expected even when source data is empty; these are compatibility placeholders, not credentials.
An older signed preflight used a 30000 amount cap, but the latest blueprint dump no longer contains that transform. This page follows the latest blueprint; if 30000 is still the commercial maximum, align the blueprint separately rather than documenting a cap that is not currently there.
Outcomes
| Flow | Recognised by | Meaning | Reject reason |
|---|---|---|---|
| Ping | HTTP 200, status: ok, data.accepted: true | Advertiser wants the lead | |
| Ping | HTTP 200, recognised status: error or data.accepted: false | Business refusal | Unspecified, or Invalid Data when message names validation |
| Post | HTTP 200, status: ok, data.accepted: true | Lead accepted; SMS verification data returned | |
| Post | HTTP 200, recognised error / accepted: false | Business refusal | Unspecified / Invalid Data |
| Verify | HTTP 200, status: ok, data.accepted: true, data.status: ok | SMS verified | |
| Verify | data.status: incorrect | Wrong SMS code | Invalid Data |
| Verify | data.status: expired | SMS token expired | Expired |
technical HTTP 5xx | Advertiser failure | technical error, not a business rejection |
Every reject node carries raw {body} in {reason_detail}.
Branching
Ping accepted:
{status} equals 200
{parsedBody.status} equals ok
{parsedBody.data.accepted} is true
Post accepted uses the same three predicates.
Verify accepted:
{status} equals 200
{parsedBody.status} equals ok
{parsedBody.data.accepted} is true
{parsedBody.data.status} equals ok
Unexpected/malformed HTTP-200 shapes should not be flattened into a generic rejection unless they match a documented business response. A real 5xx is left technical.
Stored values
| Parameter | Source |
|---|---|
{token_id} | {parsedBody.data.tokenId} from Post |
{token_code} | {parsedBody.data.tokenCode} from Post |
{external_id} | {parsedBody.data.loanNumber} from Post |
{redirect_url} | {parsedBody.data.redirectUri} from Verify |
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.
