Sell leads to Tando (CZ)

Maximize revenue from your leads by connecting this advertiser to your PalDock workspace. The integration is prebuilt, so you can go live in a few clicks, no developer needed.

AdvertiserTando
CountryCZ
SegmentFinance
ProductLoan
Integration typeLead generation
FlowsPing → Post
PlatformCreditOnline

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

  1. 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.
  2. Enter your credentials – Paste the secrets you received from advertiser and set your Pingtree
  3. 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

KeyPurpose
endpointCreditOnline tenant API base URL.
tokenApplication API key sent as apiKey.
usernameRPC login.
passwordRPC password.
partner_idBroker 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
FieldRequiredValue
realnameyes{g_name_first}
surnameyes{g_name_last}
emailyes{g_email}
mob_phoneyes{g_phone}
person_codeyes{g_id_national_number}
id_numberyes{g_id_card_number}
addressyes{g_address_street}
houseyes{g_address_street_number}
cityyes{g_address_city}
zipcodeyes{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
ParameterValue
customerIdcustomer ID from registration or Ping
amountcapped {g_amount}, max 30000
maxAmountthe same capped amount
paydaysdue date = creation date + 30 days, Y-m-d
account_number{g_bank_account_number}/{g_bank_account_code}
brokerId{partner_id}
apiLoancz
_methodpost
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

VariantRecognised byMeaningReject reason
New clients Pingall four identity fields notFound, empty addinfoNew customer
Repeated clients Pingaddinfo: C_Loan + customer_idEligible existing customer
either Pingaddinfo: CSAS Evaluation is in progressPending, wait and retry
Ping rejectany checked identity field registered / C_Loan in the new clients flowAlready knownExisting Customer
Ping rejectperson_code: age_check_failedAge check failedAge
Ping rejectperson_code: wrong_person_codeInvalid national IDInvalid Data
Repeated clients Ping rejectperson_code: notFoundWrong customer state for repeated clientsProduct Mismatch
New clients Createok: 1 + non-empty customer_idClient registered
New clients Create err ~ Already registeredExisting customerExisting Customer
New clients Create err ~ Age check failedAge check failedAge
New clients Create err ~ Nesprávný formát or JSON errorInvalid payloadInvalid Data
ApplicationHTTP 200, top-level status: 200, data.status: success, non-empty credit_id and urlAccepted
recognised HTTP-200 non-success applicationRefusedUnspecified

{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

ParameterSource
{external_id} before applicationcustomer_id from Ping or registration
{external_id} after application{parsedBody.data.credit_id}
{redirect_url}{parsedBody.data.url}

Author

Affiliate and lead generation expert with 15+ years as partner, advertiser and network, including end to end product design from concept to rollout of an affiliate tracking platform. Background in lending, telco, gambling and other verticals with a focus on tracking, affiliate management, fraud prevention, integrations and lead generation.

The Affiliate Platform Guide

Everything you need to choose the right affiliate platform in one place. Download the complete guide and keep it as your handy reference.