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": 220
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "ping",
"beType": "integration"
}
}
},
{
"id": "2-1",
"type": "startNode",
"position": {
"x": -620,
"y": -180
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "post",
"beType": "integration"
}
}
},
{
"id": "1-2",
"type": "modifyFieldNode",
"position": {
"x": -420,
"y": 220
},
"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": "2"
},
{
"source": "{data_income_type}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_requested_amount}",
"fields": [
{
"source": "{data_requested_amount}",
"operator": "is_greater_than",
"value": "15000",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "15000"
},
{
"source": "{data_requested_amount}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_identity_card_number}",
"fields": [
{
"source": "{data_identity_card_number}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_city}",
"fields": [
{
"source": "{data_city}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_zip}",
"fields": [
{
"source": "{data_zip}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_street}",
"fields": [
{
"source": "{data_street}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_house_number}",
"fields": [
{
"source": "{data_house_number}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_monthly_income}",
"fields": [
{
"source": "{data_monthly_income}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_expenses}",
"fields": [
{
"source": "{data_expenses}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_account_number}",
"fields": [
{
"source": "{data_account_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_street}",
"fields": [
{
"source": "{data_contact_street}",
"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": ""
}
]
},
{
"fieldName": "{data_contact_house_number}",
"fields": [
{
"source": "{data_contact_house_number}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_bank_code}",
"fields": [
{
"source": "{data_bank_code}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
}
]
}
}
},
{
"id": "1-3",
"type": "httpNode",
"position": {
"x": -180,
"y": 220
},
"data": {
"formData": {
"active": true,
"title": "Ping",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/Clients/ClientChecks",
"timeout": 30,
"format": "application/json",
"parser": "json",
"notsend": "null",
"convert_data": null,
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"query": [],
"body": [
{
"key": "name",
"value": "{data_first_name}"
},
{
"key": "email",
"value": "{data_email}"
},
{
"key": "surname",
"value": "{data_last_name}"
},
{
"key": "addressCity",
"value": "{data_city}"
},
{
"key": "nationality",
"value": "1"
},
{
"key": "phoneNumber",
"value": "{data_cell_phone}"
},
{
"key": "subjectCode",
"value": "{token}"
},
{
"key": "addressStreet",
"value": "{data_street}"
},
{
"key": "amtLoanAmount",
"value": "{data_requested_amount}"
},
{
"key": "documentNumber",
"value": "{data_identity_card_number}"
},
{
"key": "personalNumber",
"value": "{data_nin}"
},
{
"key": "amtClientIncomes",
"value": "{data_monthly_income}"
},
{
"key": "addressPostalCode",
"value": "{data_zip}"
},
{
"key": "amtClientExpenses",
"value": "{data_expenses}"
},
{
"key": "bankAccountNumber",
"value": "{data_account_number}"
},
{
"key": "addressMailingCity",
"value": "{data_contact_city}"
},
{
"key": "addressStreetNumber",
"value": "{data_house_number}"
},
{
"key": "bankAccountBankCode",
"value": "{data_bank_code}"
},
{
"key": "addressMailingStreet",
"value": "{data_contact_street}"
},
{
"key": "clientIncomesSourceCode",
"value": "{data_income_type}"
},
{
"key": "addressMailingPostalCode",
"value": "{data_contact_zip}"
},
{
"key": "addressMailingStreetNumber",
"value": "{data_contact_house_number}"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "1-4",
"type": "endNode",
"position": {
"x": -22.910723984683,
"y": 109.66171480503
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "1-5",
"type": "modifyFieldNode",
"position": {
"x": 80,
"y": 300
},
"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-6",
"type": "endNode",
"position": {
"x": 320,
"y": 300
},
"data": {
"formData": {
"active": true,
"title": "Rejected",
"subtitle": "",
"success": "failed"
}
}
},
{
"id": "2-2",
"type": "modifyFieldNode",
"position": {
"x": -420,
"y": -180
},
"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": "2"
},
{
"source": "{data_income_type}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_requested_amount}",
"fields": [
{
"source": "{data_requested_amount}",
"operator": "is_greater_than",
"value": "15000",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "15000"
},
{
"source": "{data_requested_amount}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_identity_card_number}",
"fields": [
{
"source": "{data_identity_card_number}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_city}",
"fields": [
{
"source": "{data_city}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_zip}",
"fields": [
{
"source": "{data_zip}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_street}",
"fields": [
{
"source": "{data_street}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_house_number}",
"fields": [
{
"source": "{data_house_number}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_monthly_income}",
"fields": [
{
"source": "{data_monthly_income}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_expenses}",
"fields": [
{
"source": "{data_expenses}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_account_number}",
"fields": [
{
"source": "{data_account_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_street}",
"fields": [
{
"source": "{data_contact_street}",
"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": ""
}
]
},
{
"fieldName": "{data_contact_house_number}",
"fields": [
{
"source": "{data_contact_house_number}",
"operator": "is_empty",
"value": "",
"value2": "",
"modification": "do_not_send",
"pattern": "",
"output": ""
}
]
}
]
}
}
},
{
"id": "2-3",
"type": "httpNode",
"position": {
"x": -180,
"y": -180
},
"data": {
"formData": {
"active": true,
"title": "Post",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/Clients",
"timeout": 30,
"format": "application/json",
"parser": "json",
"notsend": "null",
"convert_data": null,
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"query": [],
"body": [
{
"key": "name",
"value": "{data_first_name}"
},
{
"key": "email",
"value": "{data_email}"
},
{
"key": "surname",
"value": "{data_last_name}"
},
{
"key": "addressCity",
"value": "{data_city}"
},
{
"key": "nationality",
"value": "1"
},
{
"key": "phoneNumber",
"value": "{data_cell_phone}"
},
{
"key": "subjectCode",
"value": "{token}"
},
{
"key": "addressStreet",
"value": "{data_street}"
},
{
"key": "amtLoanAmount",
"value": "{data_requested_amount}"
},
{
"key": "documentNumber",
"value": "{data_identity_card_number}"
},
{
"key": "personalNumber",
"value": "{data_nin}"
},
{
"key": "amtClientIncomes",
"value": "{data_monthly_income}"
},
{
"key": "addressPostalCode",
"value": "{data_zip}"
},
{
"key": "amtClientExpenses",
"value": "{data_expenses}"
},
{
"key": "bankAccountNumber",
"value": "{data_account_number}"
},
{
"key": "addressMailingCity",
"value": "{data_contact_city}"
},
{
"key": "addressStreetNumber",
"value": "{data_house_number}"
},
{
"key": "bankAccountBankCode",
"value": "{data_bank_code}"
},
{
"key": "addressMailingStreet",
"value": "{data_contact_street}"
},
{
"key": "clientIncomesSourceCode",
"value": "{data_income_type}"
},
{
"key": "addressMailingPostalCode",
"value": "{data_contact_zip}"
},
{
"key": "addressMailingStreetNumber",
"value": "{data_contact_house_number}"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "2-4",
"type": "setNode",
"position": {
"x": 80,
"y": -180
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{redirect_url}",
"value": "{headers.Location}"
},
{
"key": "{external_id}",
"value": "{parsedBody.id}"
}
]
}
}
},
{
"id": "2-6",
"type": "endNode",
"position": {
"x": 320,
"y": -180
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "2-5",
"type": "modifyFieldNode",
"position": {
"x": 178.37917367995,
"y": 82.360639825252
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Duplicate"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "2-7",
"type": "endNode",
"position": {
"x": 373.78438025996,
"y": 84.658036535246
},
"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-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": ""
}
]
}
},
{
"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": "406",
"output2": ""
}
]
}
},
{
"id": "edge-1-5-1-6",
"source": "1-5",
"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": "201",
"output2": ""
},
{
"value": "{parsedBody.id}",
"operator": "is_not_empty",
"output": "",
"output2": ""
},
{
"value": "{headers.Location}",
"operator": "is_not_empty",
"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.id}",
"operator": "is_not_empty",
"output": "",
"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": []
}
}
]
}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
A REST API where the HTTP status code is the answer and the body is usually empty.
That is the whole integration in one line: the pre-check returns 200 or 406 with no body at all, and the create returns 201 with the new client’s ID and the redirect in the Location header rather than in the response body.
Expect the great majority of leads to be refused at the pre-check, with nothing said about why.
What will be needed from advertiser
| Key | Purpose |
|---|---|
endpoint | Base API URL. |
token | Advertiser subject code sent as subjectCode. |
Flows
Ping, POST /Clients/ClientChecks. Predicts whether the client would be approved. Nothing is stored.
Post, POST /Clients. Creates the client. Returns id and a Location header.
Creating a client does not mean the client was approved. It means the record exists and the applicant can be sent to the URL in Location to continue.
The status code on the create says which kind of applicant this is, and the Location header confirms it:
| HTTP | Location | Meaning |
|---|---|---|
201 | /zadost-prvni-partner?kod=... | New applicant, a fresh application is opened |
200 | /prihlaseni?prihlasit-se | Already a customer, sent to sign in |
Roughly one create in seven comes back 200. The record already existed, so nothing new was opened and the kod parameter that carries the application is absent.
Calls
POST {endpoint}/Clients/ClientChecks
POST {endpoint}/Clients
Content-Type: application/json
format: application/json
notsend: null
Authentication is subjectCode in the body rather than a header or a token.
Request fields
Both calls take the same body. The advertiser is explicit that the prediction improves with more data, so send everything the form collects.
| Field | Required | Value |
|---|---|---|
subjectCode | yes | {token} |
name | yes | {g_name_first} |
surname | yes | {g_name_last} |
phoneNumber | yes | {g_phone} |
email | yes | {g_email} |
personalNumber | yes | {g_id_national_number}, no slash |
documentNumber | no | {g_id_card_number} |
nationality | yes | 1 Czech, 2 other |
addressStreet | no | {g_address_street} |
addressStreetNumber | no | {g_address_street_number} |
addressCity | no | {g_address_city} |
addressPostalCode | no | {g_address_zip} |
addressMailingStreet | no | {g_address_contact_street} |
addressMailingStreetNumber | no | {g_address_contact_street_number} |
addressMailingCity | no | {g_address_contact_city} |
addressMailingPostalCode | no | {g_address_contact_zip} |
clientIncomesSourceCode | no | {g_fin_type}, see enums |
amtClientIncomes | no | {g_fin_income} |
amtClientExpenses | no | {g_fin_expenses} |
amtLoanAmount | no | {g_amount}, capped at 15 000 |
bankAccountNumber | no | {g_bank_account_number} |
bankAccountBankCode | no | {g_bank_account_code} |
Optional fields the form leaves empty should be dropped with do-not-send rather than sent as empty strings.
On capping the amount
Where a request exceeds 15 000, send 15 000 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.
Enums
clientIncomesSourceCode is a numeric ID, 1 for employed and 2 for self-employed, with the current list at GET /Parameters/IncomeSources. There are only two, so anything else has no option: drop the field with do-not-send rather than forcing a value the applicant did not give.
bankAccountBankCode likewise comes from GET /Parameters/BankId. Fetch both lists once and write the mapping into the blueprint rather than calling them per lead.
Outcomes
| Recognised by | HTTP | Meaning | Reject reason | Frequency |
|---|---|---|---|---|
| empty body | 200 | Pre-check passed | occasional | |
id present, Location ~ zadost-prvni-partner | 201 | New applicant created | common | |
| empty body | 406 | Pre-check refused, no reason given | Unspecified | common |
id present, Location ~ prihlaseni | 200 | Already a customer, sent to sign in | Existing Customer | occasional |
| empty body | 400 | Payload refused, no detail given | Invalid Data | rare |
HTML 404 Not Found | 404 | Wrong endpoint or path | rare | |
Errors[].procedure: dbo.asmRCM_ISIR_CheckCustomer | 500 | Advertiser’s database failed | rare |
406 is the whole rejection vocabulary. The advertiser documents it as “client was not approved or repaid”, and returns no body with it. There is nothing to map beyond Unspecified, and {reason_detail} will be empty because {body} is empty. That is a report line worth taking to them: several thousand leads refused, no reason given, please send reason codes.
The 500 returns a raw SQL Server exception naming an internal stored procedure. It is their fault, not the lead’s, and it gets no branch.
The 404 returns an HTML page rather than JSON, which means the request never reached the API. Also no branch.
The 200 on the create is Existing Customer, not Duplicate. Duplicate means the same application already exists; here it is the person who is already on file, and Kamali still offers them a way in. Whether that counts as a sale is a contract question rather than an API one, so the branch is worth keeping separate from the plain refusal either way.
Reject reasons come from the standard list. See Reject reason for what each one means and when to use it.
Branching
There is no business field to branch on, so here the status code is all there is. That is the exception rather than the rule, and it is only safe because the advertiser documents each code as a decision.
Ping, passed:
{status} equals 200
Ping, refused:
{status} equals 406
Post, created:
{status} equals 201
{parsedBody.id} is not empty
{headers.Location} is not empty
Post, already a customer:
{status} equals 200
{parsedBody.id} is not empty
{headers.Location} is not empty
400, 404 and 500 get no branch.
Stored values
| Parameter | Source |
|---|---|
{external_id} | {parsedBody.id} from the create |
{redirect_url} | {headers.Location} from the create |
The redirect is in a header rather than the body, so it is read from {headers.Location} and not from {parsedBody}.
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.
