Tracking pixel

Pixel tracking places a small script on the advertiser’s confirmation page. When the page loads, the pixel fires and sends the conversion to PalDock through the visitor’s browser.

It is the easiest method to deploy, but it runs in the browser, so it depends on cookies and can be blocked. Pair it with an S2S postback so you do not lose conversions when the pixel does not fire.

The two pixels

  • The initiation pixel goes on every page. It captures the click and remembers it.
  • The conversion pixel goes on the confirmation page only. It reports the conversion.

Both are needed. Without the initiation pixel there is nothing to attribute the conversion to.

There is also an update pixel, used to add URL and cookie data to a conversion that already exists.

Initiation pixel

On every page load, this pixel reads the click ID from the URL, stores it for the length of your attribution window, and hands it to the conversion pixel later. That is what credits the conversion to the right affiliate.

<script async src="https://palpxl.com/paldock-pixel-1.0.3.js?t=YOUR_TENANT&cookie=1&expiration=43200&pcidParam=pdcid"></script>
  • t: your PalDock account identifier (slug). Required.
  • cookie: where the value is stored. 1 for a cookie (recommended), 2 for localStorage, 0 for sessionStorage.
  • expiration: the attribution window in minutes. 1440 is one day, 43200 is 30 days. Without it, 30 days is used. A conversion that happens after the window closes is not attributed.
  • pcidParam: the name of the URL parameter that carries the click ID. Without it, the pixel looks for pcid.

⚠️ Initiation scripts are versioned. When we release an update, you normally only change the version number in the script, not the implementation.

Conversion pixel

Placed on the confirmation page only. It creates the conversion and attaches everything needed for attribution and reporting.

<script>
 (function(w,p){p=w.paldock=w.paldock||{};p.q=p.q||[];p.conversion=p.conversion||function(){p.q.push(["conversion"].concat([].slice.call(arguments)))}})(window);

  // Create a new conversion of type "sale"
  paldock.conversion({
    action: 'create',
    type: 'sale',
    advertiser_id: 'advertiser_id',
    external_id: 'external_id',
    result: 'approved',
    value: 100.55,
    commission: 100.55,
    commission_id: 'commission_id',
    affs1: 'affs1',
    advs10: 'advs10',
    pcidCookie: 'custom_name',
    pcidCookieFallback: true,
    queryParam: {
      key1: 'utm_content',
      key2: 'utm_medium',
      key3: 'utm_source'
    },
    cookieParam: {
      key1: '_ga',
      key2: 'fbp',
      key3: 'fbc'
    }
  });
</script>

Required: type, advertiser_id, and external_id.

The most common optional ones:

  • result: approved or rejected. Without it, the transaction is created as pending.
  • value: the order value, used by percentage commissions.
  • commission: the payout amount, when the advertiser sends it directly.
  • commission_id: which commission applies, when the type has more than one.

The full list is on Tracking parameters.

Who the pixel belongs to

The same conversion type has two pixel versions, and you pick the one that matches who places it.

  • Advertisers report conversions, so they can create and update. Requires the advertiser ID and the external ID.
  • Affiliate partners enrich their own conversions with URL and cookie data, so they can only update. Requires the affiliate ID.

Both are in Workspace Settings, Tracking, Conversion types and pixels. Pick the conversion type, then choose the advertiser or affiliate view. Custom types are added in the same place, and each of them gets its own pixel.

Matching the conversion

The pixel needs to say which click or lead the conversion belongs to.

  • Origin ID, taken from the cookie by the initiation pixel, or passed explicitly.
  • Advertiser ID with External ID, when the advertiser has their own order ID.

Affiliate links can only use the Origin ID, because the External ID does not exist yet at click time. iFrame and API integrations can use either. Sending both is safest.

See Conversion IDs explained and Tracking processing.

Using your own cookie

If the advertiser does not want the PalDock initiation pixel, the conversion pixel can read the click ID from a cookie you control.

  • pcidCookie: 'custom_name' reads the value from your cookie instead of pdc_pcid_[tenant-name]. PalDock’s own cookie handling is then not used, and storing the click ID is up to you.
  • pcidCookieFallback: true falls back to the PalDock cookie when your cookie is empty. The default is false.

pcidCookie cannot read HttpOnly cookies. Remove the flag or write a non-HttpOnly mirror cookie. To check: press F12, open the Application tab in Chrome or Edge, or Storage in Firefox, expand Cookies, select the domain, and look at the HttpOnly column.

The cookie

The initiation pixel stores the value in pdc_pcid_[tenant-name]:

{"pcid":"1245","expiration":1779778729419}

The expiration timestamp comes from the expiration setting in the initiation pixel.

The cookie itself lives longer than that timestamp on purpose. Always check the timestamp before using the value, not whether the cookie still exists.

Cookie consent

  • ⚠️ If you use Cookiebot or a similar tool, set it to reload the page after consent, or at least to fire the scripts that were blocked. Otherwise the initiation pixel never runs, no click ID is stored, and you have to handle it yourself.
  • The conversion pixel does not need consent. It stores nothing in the browser, it only reports an event, so it falls outside cookie consent under GDPR.

Troubleshooting

See How to set up pixel tracking for placement, triggers, ad blockers, and CSP problems.

Insights that
helps you grow

  • Release notes 2026/08/14
    This was a big one. We went through roughly 200 pages of our knowledge base and rewrote the whole thing. Clearer structure, consistent terminology, and…
  • Release notes 2026/07/31
    What’s new in PalDock? A lot of this month went into things you won’t see directly – query optimisation, indexing, and general tuning under the…
  • Free Affiliate tracking software
    Many companies (inlcuding YOU) search for free affiliate tracking software because they want to launch an affiliate program without committing to expensive monthly fees. The…