| Advertiser | Tando |
| Country | CZ |
| Segment | Finance |
| Product | Loan |
| Integration type | Lead generation |
| Flows | Ping → Post |
| Platform | CreditOnline |
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

Blueprint for new customers
{
"nodes": [
{
"id": "1-1",
"type": "startNode",
"position": {
"x": -980,
"y": -80
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "post",
"beType": "integration"
}
}
},
{
"id": "2-1",
"type": "startNode",
"position": {
"x": -980,
"y": 430
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "ping",
"beType": "integration"
}
}
},
{
"id": "1-2",
"type": "modifyFieldNode",
"position": {
"x": -760,
"y": -80
},
"data": {
"formData": {
"active": true,
"title": "Transform data",
"subtitle": "",
"data": [
{
"fieldName": "{data_requested_amount}",
"fields": [
{
"source": "{data_requested_amount}",
"operator": "is_greater_than",
"value": "30000",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "30000"
}
]
},
{
"fieldName": "{created_date}",
"fields": [
{
"source": "{created_date}",
"operator": "always",
"value": "",
"value2": "",
"modification": "modify_date",
"pattern": "",
"output": "+30 days"
},
{
"source": "{_1}",
"operator": "always",
"value": "",
"value2": "",
"modification": "format_date",
"pattern": "",
"output": "Y-m-d"
}
]
},
{
"fieldName": "{data_income_type}",
"fields": [
{
"source": "{data_income_type}",
"operator": "regex_match",
"value": "^(Zaměstnanec - plný pracovní úvazek|Nezaměstnaný|OSVČ|Mateřská / Rodičovská|Důchodce)$",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{data_income_type}"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "full-time",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Zaměstnanec - plný pracovní úvazek"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "unemployed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Nezaměstnaný"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "self-employed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "OSVČ"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "parental",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Mateřská / Rodičovská"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "pension",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Důchodce"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "other",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
},
{
"source": "{data_income_type}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_employer}",
"fields": [
{
"source": "{data_employer}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_job_title}",
"fields": [
{
"source": "{data_job_title}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
}
]
}
}
},
{
"id": "1-3",
"type": "httpNode",
"position": {
"x": -530,
"y": -80
},
"data": {
"formData": {
"active": true,
"title": "Create",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/?RPC=agents.registerClient",
"timeout": 30,
"format": "login-data-pass",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [
{
"key": "Content-type",
"value": "application/x-www-form-urlencoded; charset=UTF-8"
}
],
"query": [],
"body": [
{
"key": "pass",
"value": "{password}"
},
{
"key": "login",
"value": "{username}"
},
{
"key": "data.ip",
"value": "{ip_address}"
},
{
"key": "data.ref",
"value": "{username}"
},
{
"key": "data.city",
"value": "{data_city}"
},
{
"key": "data.costs",
"value": "{data_expenses}"
},
{
"key": "data.email",
"value": "{data_email}"
},
{
"key": "data.house",
"value": "{data_house_number}"
},
{
"key": "data.amount",
"value": "{data_requested_amount}"
},
{
"key": "data.income",
"value": "{data_monthly_income}"
},
{
"key": "data.address",
"value": "{data_street}"
},
{
"key": "data.surname",
"value": "{data_last_name}"
},
{
"key": "data.zipcode",
"value": "{data_zip}"
},
{
"key": "data.realname",
"value": "{data_first_name}"
},
{
"key": "data.id_number",
"value": "{data_identity_card_number}"
},
{
"key": "data.marketing",
"value": "0"
},
{
"key": "data.mob_phone",
"value": "{data_cell_phone}"
},
{
"key": "data.workplace",
"value": "{data_employer}"
},
{
"key": "data.contract_c",
"value": "1"
},
{
"key": "data.person_code",
"value": "{data_nin}"
},
{
"key": "data.other_income",
"value": "{data_income_type}"
},
{
"key": "data.chk9_formular",
"value": " "
},
{
"key": "data.account_number",
"value": "{data_account_number}/{data_bank_code}"
},
{
"key": "data.address_different",
"value": "0"
},
{
"key": "data.chk10_vop_smlouva",
"value": "Potvrzuji, že jsem si přečetl(a) a souhlasím s VOP a podmínkami smlouvy o úvěru"
},
{
"key": "data.workplace_position",
"value": "{data_job_title}"
},
{
"key": "data.chk11_politicky_ex_osoba",
"value": "Prohlašuji, že nejsem politicky exponovanou osobou a mnou uvedené informace jsou pravdivé"
},
{
"key": "data.chk12_osobni_udaje_registry",
"value": "Souhlasím se zpracováním mých osobních údajů pro úvěrové registry"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "1-4",
"type": "httpNode",
"position": {
"x": -120,
"y": -120
},
"data": {
"formData": {
"active": true,
"title": "Post",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/api/v1.0/creditLine/application",
"timeout": 30,
"format": "application/json",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"query": [
{
"key": "amount",
"value": "{data_requested_amount}"
},
{
"key": "apiKey",
"value": "{token}"
},
{
"key": "_method",
"value": "post"
},
{
"key": "apiLoan",
"value": "cz"
},
{
"key": "paydays",
"value": "{created_date}"
},
{
"key": "brokerId",
"value": "{partner_id}"
},
{
"key": "maxAmount",
"value": "{data_requested_amount}"
},
{
"key": "customerId",
"value": "{external_id}"
},
{
"key": "account_number",
"value": "{data_account_number}/{data_bank_code}"
}
],
"body": [],
"signature": null,
"insecure": null
}
}
},
{
"id": "1-6",
"type": "setNode",
"position": {
"x": 180,
"y": -120
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{redirect_url}",
"value": "{parsedBody.data.url}"
},
{
"key": "{external_id}",
"value": "{parsedBody.data.credit_id}"
}
]
}
}
},
{
"id": "1-9",
"type": "endNode",
"position": {
"x": 440,
"y": -120
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "1-5",
"type": "modifyFieldNode",
"position": {
"x": -315,
"y": 100
},
"data": {
"formData": {
"active": true,
"title": "Reject reason · Create",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{parsedBody.err}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
},
{
"source": "{parsedBody.err}",
"operator": "contains",
"value": "Already registered",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Existing Customer"
},
{
"source": "{parsedBody.err}",
"operator": "contains",
"value": "Already registered or invalid",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
},
{
"source": "{parsedBody.err}",
"operator": "contains",
"value": "Age check failed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Age"
},
{
"source": "{parsedBody.err}",
"operator": "contains",
"value": "Nesprávný formát",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Invalid Data"
},
{
"source": "{parsedBody.err}",
"operator": "contains",
"value": "JSON error",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Invalid Data"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "1-8",
"type": "endNode",
"position": {
"x": -35,
"y": 100
},
"data": {
"formData": {
"active": true,
"title": "Rejected · Create",
"subtitle": "",
"success": "failed"
}
}
},
{
"id": "1-7",
"type": "modifyFieldNode",
"position": {
"x": 180,
"y": 80
},
"data": {
"formData": {
"active": true,
"title": "Reject reason · Post",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "1-10",
"type": "endNode",
"position": {
"x": 440,
"y": 80
},
"data": {
"formData": {
"active": true,
"title": "Rejected · Post",
"subtitle": "",
"success": "failed"
}
}
},
{
"id": "2-3",
"type": "httpNode",
"position": {
"x": -700,
"y": 430
},
"data": {
"formData": {
"active": true,
"title": "Ping",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/?RPC=agents.checkPersonalData",
"timeout": 30,
"format": "login-data-pass",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [
{
"key": "Content-type",
"value": "application/x-www-form-urlencoded; charset=UTF-8"
}
],
"query": [],
"body": [
{
"key": "pass",
"value": "{password}"
},
{
"key": "login",
"value": "{username}"
},
{
"key": "data.city",
"value": "{data_city}"
},
{
"key": "data.email",
"value": "{data_email}"
},
{
"key": "data.house",
"value": "{data_house_number}"
},
{
"key": "data.address",
"value": "{data_street}"
},
{
"key": "data.surname",
"value": "{data_last_name}"
},
{
"key": "data.zipcode",
"value": "{data_zip}"
},
{
"key": "data.realname",
"value": "{data_first_name}"
},
{
"key": "data.id_number",
"value": "{data_identity_card_number}"
},
{
"key": "data.mob_phone",
"value": "{data_cell_phone}"
},
{
"key": "data.person_code",
"value": "{data_nin}"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "2-4",
"type": "endNode",
"position": {
"x": -230,
"y": 320
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "2-5",
"type": "modifyFieldNode",
"position": {
"x": -230,
"y": 500
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
},
{
"source": "{parsedBody.personalData.person_code}",
"operator": "equals",
"value": "registered",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Existing Customer"
},
{
"source": "{parsedBody.personalData.email}",
"operator": "equals",
"value": "registered",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Existing Customer"
},
{
"source": "{parsedBody.personalData.mob_phone}",
"operator": "equals",
"value": "registered",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Existing Customer"
},
{
"source": "{parsedBody.personalData.id_number}",
"operator": "equals",
"value": "registered",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Existing Customer"
},
{
"source": "{parsedBody.personalData.addinfo}",
"operator": "equals",
"value": "C_Loan",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Existing Customer"
},
{
"source": "{parsedBody.personalData.person_code}",
"operator": "equals",
"value": "age_check_failed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Age"
},
{
"source": "{parsedBody.personalData.person_code}",
"operator": "equals",
"value": "wrong_person_code",
"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": 60,
"y": 500
},
"data": {
"formData": {
"active": true,
"title": "Rejected",
"subtitle": "",
"success": "failed"
}
}
},
{
"id": "2-6",
"type": "breakerNode",
"position": {
"x": -498.80661577608,
"y": 699.40203562341
},
"data": {
"formData": {
"active": true,
"title": "Breaker 4x",
"subtitle": "",
"maxRepetition": "4"
}
}
},
{
"id": "2-8",
"type": "waitNode",
"position": {
"x": -355.45547073791,
"y": 633.8320610687
},
"data": {
"formData": {
"active": true,
"title": "Wait 3s",
"subtitle": "",
"type": "delay",
"delayValue": 3,
"delayUnit": "seconds",
"untilDate": null
}
}
},
{
"id": "1-11",
"type": "setNode",
"position": {
"x": -345,
"y": -120
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{external_id}",
"value": "{parsedBody.customer_id}"
}
]
}
}
}
],
"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-5",
"source": "1-3",
"target": "1-5",
"type": "customEdge",
"data": {
"active": true,
"title": "rejected",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_not_match",
"output": "(?=.*\"ok\"\\s*:\\s*1)(?=.*\"customer_id\"\\s*:\\s*(?:\"[^\"]+\"|\\d+))",
"output2": ""
}
]
}
},
{
"id": "edge-1-4-1-6",
"source": "1-4",
"target": "1-6",
"type": "customEdge",
"data": {
"active": true,
"title": "accepted",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.data.status}",
"operator": "equals",
"output": "success",
"output2": ""
},
{
"value": "{parsedBody.data.credit_id}",
"operator": "is_not_empty",
"output": "",
"output2": ""
},
{
"value": "{parsedBody.data.url}",
"operator": "is_not_empty",
"output": "",
"output2": ""
}
]
}
},
{
"id": "edge-1-4-1-7",
"source": "1-4",
"target": "1-7",
"type": "customEdge",
"data": {
"active": true,
"title": "rejected",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_not_match",
"output": "(?=.*\"status\"\\s*:\\s*200)(?=.*\"data\"\\s*:\\s*\\{)(?=.*\"status\"\\s*:\\s*\"success\")(?=.*\"credit_id\"\\s*:\\s*(?:\"[^\"]+\"|\\d+))(?=.*\"url\"\\s*:\\s*\"[^\"]+\")",
"output2": ""
}
]
}
},
{
"id": "edge-1-6-1-9",
"source": "1-6",
"target": "1-9",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-5-1-8",
"source": "1-5",
"target": "1-8",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-7-1-10",
"source": "1-7",
"target": "1-10",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-8-2-3",
"source": "2-8",
"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": "new customer",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.ok}",
"operator": "equals",
"output": "1",
"output2": ""
},
{
"value": "{parsedBody.personalData.person_code}",
"operator": "equals",
"output": "notFound",
"output2": ""
},
{
"value": "{parsedBody.personalData.email}",
"operator": "equals",
"output": "notFound",
"output2": ""
},
{
"value": "{parsedBody.personalData.mob_phone}",
"operator": "equals",
"output": "notFound",
"output2": ""
},
{
"value": "{parsedBody.personalData.id_number}",
"operator": "equals",
"output": "notFound",
"output2": ""
},
{
"value": "{parsedBody.personalData.addinfo}",
"operator": "is_empty",
"output": "",
"output2": ""
}
]
}
},
{
"id": "edge-2-3-2-5",
"source": "2-3",
"target": "2-5",
"type": "customEdge",
"data": {
"active": true,
"title": "rejected",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_not_match",
"output": "(?=.*\"person_code\"\\s*:\\s*\"notFound\")(?=.*\"email\"\\s*:\\s*\"notFound\")(?=.*\"mob_phone\"\\s*:\\s*\"notFound\")(?=.*\"id_number\"\\s*:\\s*\"notFound\")(?!.*\"addinfo\"\\s*:\\s*\"[^\"]+\")(?=.*\"ok\"\\s*:\\s*1)",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_not_match",
"output": "\"addinfo\"\\s*:\\s*\"CSAS Evaluation is in progress\"",
"output2": ""
}
]
}
},
{
"id": "edge-2-3-2-6",
"source": "2-3",
"target": "2-6",
"type": "customEdge",
"data": {
"active": true,
"title": "pending",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.ok}",
"operator": "equals",
"output": "1",
"output2": ""
},
{
"value": "{parsedBody.personalData.addinfo}",
"operator": "equals",
"output": "CSAS Evaluation is in progress",
"output2": ""
}
]
}
},
{
"id": "edge-2-5-2-7",
"source": "2-5",
"target": "2-7",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-6-2-8",
"source": "2-6",
"target": "2-8",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-3-1-11",
"source": "1-3",
"target": "1-11",
"type": "customEdge",
"data": {
"active": true,
"title": "registered",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.ok}",
"operator": "equals",
"output": "1",
"output2": ""
},
{
"value": "{parsedBody.customer_id}",
"operator": "is_not_empty",
"output": "",
"output2": ""
}
]
}
},
{
"id": "edge-1-11-1-4",
"source": "1-11",
"target": "1-4",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-1-2-3",
"source": "2-1",
"target": "2-3",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
}
]
}Blueprint for repeated customers
{
"nodes": [
{
"id": "1-1",
"type": "startNode",
"position": {
"x": -900,
"y": -60
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "post",
"beType": "integration"
}
}
},
{
"id": "2-1",
"type": "startNode",
"position": {
"x": -900,
"y": 430
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "ping",
"beType": "integration"
}
}
},
{
"id": "1-2",
"type": "modifyFieldNode",
"position": {
"x": -680,
"y": -60
},
"data": {
"formData": {
"active": true,
"title": "Transform data",
"subtitle": "",
"data": [
{
"fieldName": "{data_requested_amount}",
"fields": [
{
"source": "{data_requested_amount}",
"operator": "is_greater_than",
"value": "30000",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "30000"
}
]
},
{
"fieldName": "{created_date}",
"fields": [
{
"source": "{created_date}",
"operator": "always",
"value": "",
"value2": "",
"modification": "modify_date",
"pattern": "",
"output": "+30 days"
},
{
"source": "{_1}",
"operator": "always",
"value": "",
"value2": "",
"modification": "format_date",
"pattern": "",
"output": "Y-m-d"
}
]
}
]
}
}
},
{
"id": "1-3",
"type": "httpNode",
"position": {
"x": -430,
"y": -60
},
"data": {
"formData": {
"active": true,
"title": "Post",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/api/v1.0/creditLine/application",
"timeout": 30,
"format": "application/json",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"query": [
{
"key": "amount",
"value": "{data_requested_amount}"
},
{
"key": "apiKey",
"value": "{token}"
},
{
"key": "_method",
"value": "post"
},
{
"key": "apiLoan",
"value": "cz"
},
{
"key": "paydays",
"value": "{created_date}"
},
{
"key": "brokerId",
"value": "{partner_id}"
},
{
"key": "maxAmount",
"value": "{data_requested_amount}"
},
{
"key": "customerId",
"value": "{external_id}"
},
{
"key": "account_number",
"value": "{data_account_number}/{data_bank_code}"
}
],
"body": [],
"signature": null,
"insecure": null
}
}
},
{
"id": "1-4",
"type": "setNode",
"position": {
"x": -130,
"y": -100
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{redirect_url}",
"value": "{parsedBody.data.url}"
},
{
"key": "{external_id}",
"value": "{parsedBody.data.credit_id}"
}
]
}
}
},
{
"id": "1-6",
"type": "endNode",
"position": {
"x": 140,
"y": -100
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "1-5",
"type": "modifyFieldNode",
"position": {
"x": -130,
"y": 100
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "1-7",
"type": "endNode",
"position": {
"x": 140,
"y": 100
},
"data": {
"formData": {
"active": true,
"title": "Rejected",
"subtitle": "",
"success": "failed"
}
}
},
{
"id": "2-3",
"type": "httpNode",
"position": {
"x": -650,
"y": 430
},
"data": {
"formData": {
"active": true,
"title": "Ping",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/?RPC=agents.checkPersonalData",
"timeout": 30,
"format": "login-data-pass",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [
{
"key": "Content-type",
"value": "application/x-www-form-urlencoded; charset=UTF-8"
}
],
"query": [],
"body": [
{
"key": "pass",
"value": "{password}"
},
{
"key": "login",
"value": "{username}"
},
{
"key": "data.city",
"value": "{data_city}"
},
{
"key": "data.email",
"value": "{data_email}"
},
{
"key": "data.house",
"value": "{data_house_number}"
},
{
"key": "data.address",
"value": "{data_street}"
},
{
"key": "data.surname",
"value": "{data_last_name}"
},
{
"key": "data.zipcode",
"value": "{data_zip}"
},
{
"key": "data.realname",
"value": "{data_first_name}"
},
{
"key": "data.id_number",
"value": "{data_identity_card_number}"
},
{
"key": "data.mob_phone",
"value": "{data_cell_phone}"
},
{
"key": "data.person_code",
"value": "{data_nin}"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "2-4",
"type": "setNode",
"position": {
"x": -150,
"y": 320
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{external_id}",
"value": "{parsedBody.personalData.customer_id}"
}
]
}
}
},
{
"id": "2-7",
"type": "endNode",
"position": {
"x": 120,
"y": 320
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "2-5",
"type": "modifyFieldNode",
"position": {
"x": -150,
"y": 500
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
},
{
"source": "{parsedBody.personalData.person_code}",
"operator": "equals",
"value": "notFound",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Product Mismatch"
},
{
"source": "{parsedBody.personalData.person_code}",
"operator": "equals",
"value": "age_check_failed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Age"
},
{
"source": "{parsedBody.personalData.person_code}",
"operator": "equals",
"value": "wrong_person_code",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Invalid Data"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "2-8",
"type": "endNode",
"position": {
"x": 140,
"y": 500
},
"data": {
"formData": {
"active": true,
"title": "Rejected",
"subtitle": "",
"success": "failed"
}
}
},
{
"id": "2-6",
"type": "breakerNode",
"position": {
"x": -339.84160667145,
"y": 707.79332449237
},
"data": {
"formData": {
"active": true,
"title": "Breaker 4x",
"subtitle": "",
"maxRepetition": "4"
}
}
},
{
"id": "2-9",
"type": "waitNode",
"position": {
"x": -204.29954528635,
"y": 641.7438107868
},
"data": {
"formData": {
"active": true,
"title": "Wait 3s",
"subtitle": "",
"type": "delay",
"delayValue": 3,
"delayUnit": "seconds",
"untilDate": null
}
}
}
],
"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": "accepted",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.data.status}",
"operator": "equals",
"output": "success",
"output2": ""
},
{
"value": "{parsedBody.data.credit_id}",
"operator": "is_not_empty",
"output": "",
"output2": ""
},
{
"value": "{parsedBody.data.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": "rejected",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_not_match",
"output": "(?=.*\"status\"\\s*:\\s*200)(?=.*\"data\"\\s*:\\s*\\{)(?=.*\"status\"\\s*:\\s*\"success\")(?=.*\"credit_id\"\\s*:\\s*(?:\"[^\"]+\"|\\d+))(?=.*\"url\"\\s*:\\s*\"[^\"]+\")",
"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": []
}
},
{
"id": "edge-2-9-2-3",
"source": "2-9",
"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": "eligible existing customer",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.ok}",
"operator": "equals",
"output": "1",
"output2": ""
},
{
"value": "{parsedBody.personalData.addinfo}",
"operator": "equals",
"output": "C_Loan",
"output2": ""
},
{
"value": "{parsedBody.personalData.customer_id}",
"operator": "is_not_empty",
"output": "",
"output2": ""
}
]
}
},
{
"id": "edge-2-3-2-5",
"source": "2-3",
"target": "2-5",
"type": "customEdge",
"data": {
"active": true,
"title": "rejected",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_not_match",
"output": "(?=.*\"addinfo\"\\s*:\\s*\"C_Loan\")(?=.*\"customer_id\"\\s*:\\s*(?:\"[^\"]+\"|\\d+))(?=.*\"ok\"\\s*:\\s*1)",
"output2": ""
},
{
"value": "{parsedBody}",
"operator": "regex_not_match",
"output": "\"addinfo\"\\s*:\\s*\"CSAS Evaluation is in progress\"",
"output2": ""
}
]
}
},
{
"id": "edge-2-3-2-6",
"source": "2-3",
"target": "2-6",
"type": "customEdge",
"data": {
"active": true,
"title": "pending",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.ok}",
"operator": "equals",
"output": "1",
"output2": ""
},
{
"value": "{parsedBody.personalData.addinfo}",
"operator": "equals",
"output": "CSAS Evaluation is in progress",
"output2": ""
}
]
}
},
{
"id": "edge-2-4-2-7",
"source": "2-4",
"target": "2-7",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-5-2-8",
"source": "2-5",
"target": "2-8",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-6-2-9",
"source": "2-6",
"target": "2-9",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-1-2-3",
"source": "2-1",
"target": "2-3",
"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
Tando uses the CreditOnline backend and is split into two client flows: new clients for genuinely new customers and repeated clients for an existing customer marked C_Loan. Both use the same creditLine/application endpoint after a successful Ping; only new clients run registerClient first.
The API can return CSAS Evaluation is in progress during Ping. That is not a rejection: both client flows wait and retry behind a Breaker.
What will be needed from advertiser
| Key | Purpose |
|---|---|
endpoint | CreditOnline tenant API base URL. |
token | Application API key sent as apiKey. |
username | RPC login. |
password | RPC password. |
partner_id | Broker identifier sent as brokerId. |
Flows
New clients — Ping, checkPersonalData. Success means all four checked identity fields are notFound and addinfo is empty.
New clients — Post, transform data → registerClient → store customer_id → creditLine/application.
Repeated clients — Ping, checkPersonalData. Success means addinfo: C_Loan and a non-empty customer_id.
Repeated clients — Post, transform amount/date → creditLine/application directly with the customer ID from Ping.
Calls
POST {endpoint}/?RPC=agents.checkPersonalData
POST {endpoint}/?RPC=agents.registerClient # new clients only
POST {endpoint}/api/v1.0/creditLine/application?…
The RPC calls use format: login-data-pass with Content-Type: application/x-www-form-urlencoded; charset=UTF-8. Their form body has three top-level keys: login, pass and data, with the advertiser payload written as data.* fields. login is {username} and pass is {password}. Do not build the form by hand. The creditLine/application call is a plain query-string POST using {token} as apiKey and {partner_id} as brokerId.
Response model
checkPersonalData answers with HTTP 200 for normal business decisions, including refusals, so the Ping decision is always made from ok and personalData. Identity fields are returned as states such as notFound/registered; addinfo carries the customer state used by Tando. New clients accept only an all-notFound client with empty addinfo; repeated clients accept addinfo: C_Loan with a customer_id. CSAS Evaluation is in progress is a temporary state and is retried rather than rejected.
An authentication failure may also arrive as HTTP 200 with an err payload and no usable ok/personalData. That is technical and must not be interpreted as either a successful Ping or a business rejection.
New clients call registerClient only after the Ping. A successful registration provides the customer_id used by the application. Any URL returned by registration is not the application conversion URL. Registration failures use err; the current blueprint maps only the concrete messages shown under Outcomes. Repeated clients skip registration because Ping already supplied customer_id.
creditLine/application returns a top-level status plus nested data. The current Tando success branch is deliberately stricter than CreditGO: it requires HTTP 200, top-level status: 200, nested data.status: success, a non-empty credit_id and a non-empty data.url.
Request fields
Ping
| Field | Required | Value |
|---|---|---|
realname | yes | {g_name_first} |
surname | yes | {g_name_last} |
email | yes | {g_email} |
mob_phone | yes | {g_phone} |
person_code | yes | {g_id_national_number} |
id_number | yes | {g_id_card_number} |
address | yes | {g_address_street} |
house | yes | {g_address_street_number} |
city | yes | {g_address_city} |
zipcode | yes | {g_address_zip} |
New clients — registration
The current blueprint sends the same identity/address data plus income, costs, other_income, workplace, workplace_position, account_number, ip, consent/declaration fields, and amount. Empty employer and job-title values are omitted.
Application
| Parameter | Value |
|---|---|
customerId | customer ID from registration or Ping |
amount | capped {g_amount}, max 30000 |
maxAmount | the same capped amount |
paydays | due date = creation date + 30 days, Y-m-d |
account_number | {g_bank_account_number}/{g_bank_account_code} |
brokerId | {partner_id} |
apiLoan | cz |
_method | post |
apiKey | {token} |
Transforms
Both Post variants cap the amount at 30000 and derive paydays as created_date + 30 days formatted Y-m-d.
New clients additionally translate income types for registration: full-time → Zaměstnanec - plný pracovní úvazek, unemployed → Nezaměstnaný, self-employed → OSVČ, parental → Mateřská / Rodičovská, pension → Důchodce. other and an empty value are not sent as other_income.
Outcomes
| Variant | Recognised by | Meaning | Reject reason |
|---|---|---|---|
| New clients Ping | all four identity fields notFound, empty addinfo | New customer | |
| Repeated clients Ping | addinfo: C_Loan + customer_id | Eligible existing customer | |
| either Ping | addinfo: CSAS Evaluation is in progress | Pending, wait and retry | |
| Ping reject | any checked identity field registered / C_Loan in the new clients flow | Already known | Existing Customer |
| Ping reject | person_code: age_check_failed | Age check failed | Age |
| Ping reject | person_code: wrong_person_code | Invalid national ID | Invalid Data |
| Repeated clients Ping reject | person_code: notFound | Wrong customer state for repeated clients | Product Mismatch |
| New clients Create | ok: 1 + non-empty customer_id | Client registered | |
New clients Create err ~ Already registered | Existing customer | Existing Customer | |
New clients Create err ~ Age check failed | Age check failed | Age | |
New clients Create err ~ Nesprávný formát or JSON error | Invalid payload | Invalid Data | |
| Application | HTTP 200, top-level status: 200, data.status: success, non-empty credit_id and url | Accepted | |
| recognised HTTP-200 non-success application | Refused | Unspecified |
{reason_detail} is always the raw {body} on reject nodes.
Branching
New clients Ping accepted:
{status} equals 200
{parsedBody.ok} equals 1
{parsedBody.personalData.person_code} equals notFound
{parsedBody.personalData.email} equals notFound
{parsedBody.personalData.mob_phone} equals notFound
{parsedBody.personalData.id_number} equals notFound
{parsedBody.personalData.addinfo} is empty
Repeated clients Ping accepted:
{status} equals 200
{parsedBody.ok} equals 1
{parsedBody.personalData.addinfo} equals C_Loan
{parsedBody.personalData.customer_id} is not empty
Pending:
{status} equals 200
{parsedBody.ok} equals 1
{parsedBody.personalData.addinfo} equals CSAS Evaluation is in progress
Application accepted:
{status} equals 200
{parsedBody.status} equals 200
{parsedBody.data.status} equals success
{parsedBody.data.credit_id} is not empty
{parsedBody.data.url} is not empty
Stored values
| Parameter | Source |
|---|---|
{external_id} before application | customer_id from Ping or registration |
{external_id} after application | {parsedBody.data.credit_id} |
{redirect_url} | {parsedBody.data.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.
