---
title: "Custom / Affiliate Connector"
description: "The Custom Connector lets you deliver Tracklution event data to external systems in two ways: Webhook : send a server side HTTP request (S2S postback) to any URL Custom Pixel : (Beta) fire custom HTML/JavaScript client side in the tracking response You can enable one or both depending on your use case. Common use cases: Sending conversion postbacks to affiliate or performance marketing networks Firing client side conversion or remarketing pixels for ad platforms that provide …"
slug: "custom--affiliate-connector"
category_slug: "data-destinations"
category_name: "Data Destinations"
order: 5000000048
published_at: "2025-11-11T18:50:40+00:00"
updated_at: "2026-04-21T12:53:28+00:00"
language_code: "en-US"
tags: []
---

The Custom Connector lets you deliver Tracklution event data to external systems in two ways:

- **Webhook**: send a server-side HTTP request (S2S postback) to any URL
- **Custom Pixel**: *(Beta)* fire custom HTML/JavaScript client-side in the tracking response

You can enable one or both depending on your use case.

**Common use cases:**

- Sending conversion postbacks to affiliate or performance marketing networks
- Firing client-side conversion or remarketing pixels for ad platforms that provide their own pixel snippet
- Hybrid affiliate tracking setups that require both a server-side postback *and* a client-side pixel

## Step 1: Open the Custom Connector

From your tracking container dashboard, go to the **Connectors** section. Find the Custom Connector and click **Add** to create a new one, or **Edit** to update an existing one.
 
 ![Aff_select.png](https://support.tracklution.com/kb/agent/attachment/article/48/inline?token=eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjE4OSIsIm9yZ2lkIjoiMTQ3NzgiLCJpc3MiOiJzdXBwb3J0LnRyYWNrbHV0aW9uLmNvbSJ9.R1PR_mJUi-WXcoVt4v2IKCBoCLm0gg6hh6YpnwzNdhI)

## Step 2: Name the Connector and Choose Trigger Events

In the **Connector name** field, give your connector a descriptive name (e.g. *Affiliate Network X* or *Display Campaign Pixel*). This helps you identify it in the dashboard when you have multiple Custom Connectors.

Click the **Trigger Events** field and select the events that should trigger this connector. You can select one or more Standard or Custom events.
 
 ![Aff_trigger_events.png](https://support.tracklution.com/kb/agent/attachment/article/48/inline?token=eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjE5MyIsIm9yZ2lkIjoiMTQ3NzgiLCJpc3MiOiJzdXBwb3J0LnRyYWNrbHV0aW9uLmNvbSJ9.2Z-bW3f3D2gZEkD9W5c_GoiHAxNdyn_tViNL7ZWiW5E)

:::Info
Don't see your event in the list? Make sure Tracklution has received it at least once in your container before configuring it here.
:::

## Step 3: Choose What to Enable: Webhook, Pixel, or Both

The Custom Connector supports three configurations. Enable the relevant toggles based on your needs:

| Configuration | When to use |
|---|---|
| **Webhook only** | You need a server-side postback and no client-side pixel |
| **Custom Pixel only** | You need to fire a client-side tag and no postback |
| **Both** | Hybrid tracking, e.g. an affiliate network that requires both |

Use the **Enable Webhook** and **Enable Custom Pixel** toggles to enable each independently. You can disable either at any time without removing its configuration.
 
 ![Aff_enable.jpg](https://support.tracklution.com/kb/agent/attachment/article/48/inline?token=eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjE5MCIsIm9yZ2lkIjoiMTQ3NzgiLCJpc3MiOiJzdXBwb3J0LnRyYWNrbHV0aW9uLmNvbSJ9.-8aO41eUHysps2_ejM2RCsrfA61YtSzc6zv5CUWM-NQ)

## Step 4: Configure the Webhook

### HTTP Method

Select the HTTP method for your request using the **Method** selector.

- **GET**: parameters are appended to the URL as a query string
- **POST**: parameters are sent in the request body

### Webhook URL

Enter the destination URL in the **Webhook URL** field.

Example: `https://example.com/webhook`

### Query Parameters

Add one or more parameters using the **Parameter Name** and **Parameter Value** fields. Values can be static text or dynamic parameters *(including custom dynamic parameters)*.

Click **View available dynamic parameters >>** to browse all supported parameters. Hover over a parameter to see its description, and click to copy it.

**Example mapping:**

| Parameter Name | Parameter Value |
|---|---|
| `value` | `{{VALUE}}` |
| `track` | `{{EVENT_NAME}}` |
| `gclid` | `{{GCLID}}` |
| `fbc` | `{{FBC}}` |
| `email` | `{{EMAIL}}` |
| `phone` | `{{PHONE}}` |

The **URL Preview** field shows how the final URL will look once variables are resolved:

```
https://example.com/webhook?value=15&track=Purchase&gclid=12a34bC&email=example@email.com
```

You can also pass custom dynamic parameters from your own event data. If your event includes `{"transaction_id": 12345, "extra": "something"}`, you can use `{{TRANSACTION_ID}}` and `{{EXTRA}}` to access those values.

### Event Name Renaming

When you use `{{EVENT_NAME}}` as a parameter value, you get the option to rename the event before it is sent. Useful when the receiving platform expects a different event name format than the one you use in Tracklution.

### HTTP Headers

Use the **HTTP Headers** section to add request headers if required by the receiving platform. Click **Add Header** to add a new row.

Example:

| Header Name | Header Value |
|---|---|
| `Authorization` | `Bearer abc123` |

## Step 5: Configure the Custom Pixel  *(Beta)*

The Custom Pixel fires HTML or JavaScript in the browser when a trigger event occurs. Dynamic parameters (e.g. `{{VALUE}}`, `{{EVENT_NAME}}`) are substituted server-side before the code is delivered to the browser.

### Add your pixel code

Paste your HTML or JavaScript into the **HTML / Script** editor.

Example:

```html
<script>
  somePixelLibrary.track("{{EVENT_NAME}}", { value: "{{VALUE}}", orderId: "{{TRANSACTION_ID}}" });
</script>
```

Click **View available dynamic parameters >>** to see all parameters available inside pixel code.

### Sandbox vs Main Window

Use the **Run in sandbox** toggle to control how the pixel executes.

| Mode | When to use |
|---|---|
| **Sandbox** *(toggle on, default)* | Tracking pixels, conversion pixels, image pixels, anything that just needs to fire a request without needing access to the page. |
| **Main window** *(toggle off)* | Pixels or scripts that need access to the page's DOM, cookies, dataLayer, or other scripts already loaded on the page. |

:::Info
If your pixel references `window.dataLayer`, page cookies, or relies on other scripts being present, disable the sandbox so it runs in the main window context. Note that running the pixel in the main window context exposes the full parent website. This gives the pixel full access, which the sandbox option protects against.
:::

### Approval

Custom Pixels are in **Beta**. Before a pixel fires on live traffic, it must be reviewed and approved by Tracklution. The connector will display an **Approved on [date]** status once it has passed review.
 
 ![Aff_pixel.png](https://support.tracklution.com/kb/agent/attachment/article/48/inline?token=eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjE5MiIsIm9yZ2lkIjoiMTQ3NzgiLCJpc3MiOiJzdXBwb3J0LnRyYWNrbHV0aW9uLmNvbSJ9.n_0S9ijUqn9pjVIrZIdg7GGDR4UDgMECT2jXoL4jDq0)

## Step 6: Enable Click ID Matching

If your destination or partner platform requires its own click ID to be returned in a postback, use Click ID Matching.

### How it works

E.g. when a partner platform sends traffic to your site, it appends a unique click ID to the landing page URL. Tracklution captures and stores this value. When a conversion occurs, Tracklution sends the same click ID back to the platform so it can attribute the conversion correctly.

### Setup steps

**1. Confirm the click ID parameter name** used by your partner platform.

Example landing page URL: `https://yourstore.com/?click_id=12345`

Here the parameter name is `click_id`. Common names include `cid`, `aff_id`, and `subid`. Check your platform's documentation.

**2. Turn on Click ID Matching** in the connector settings.

**3. Enter the click ID query parameter**, the exact parameter name the platform appends to your URLs.

**4. *(Optional)* Add a Click Source parameter**. Use this if you have multiple Custom Connectors that all use the same click ID parameter name. This tells Tracklution which platform a given click came from. You can use **Strict Source query parameter value** to include exactly which source should trigger your custom connector.

Example URL: `https://yourstore.com/?click_id=12345&utm_source=platform_x`
- **Click ID query parameter** → `click_id`
- **Click source parameter** → `utm_source`, value → `platform_x`

## Step 7: Configure Attribution *(for Click ID Matching)*

Once Click ID Matching is enabled, set how Tracklution should look up stored click IDs at conversion time.

| Setting | Options | Notes |
|---|---|---|
| **Attribution model** | Last click | Fires only if this connector was the most recent click source. |
| | Any click | Fires if a click from this connector occurred anywhere within the attribution window. |
| **Attribution window** | e.g. 14 days | How far back Tracklution searches for a matching click ID in session history. |

## Step 8: Test Before Going Live

Set the connector to **Test Mode** and validate your setup before enabling it on live traffic.

In Test Mode, Tracklution logs the webhook structure and pixel payload without sending or firing anything. Use the **Webhook Log** to review what would have been sent.

To force a real request while in Test Mode, for example, to verify your receiving platform picks it up correctly, add the parameter `trl_test` with value `1` to the URL.

You can also use **Test Webhook** to simulate a single webhook request on demand.

## Step 9: Activate the Connector

Once you are satisfied with the test output, switch the connector to **Enabled**.

| Mode | Behaviour |
|---|---|
| **Enabled** | Live. Fires on all matching events |
| **Test Mode** | Logs requests and pixel payloads without sending or firing |
| **Disabled** | Connector is fully paused |

After activating, monitor the **Webhook Log** *(top right)* regularly to catch any delivery failures early. Each log entry includes:

- Timestamp
- Full request URL
- HTTP response code (200, 500, etc.)

## Example Use Cases

### Affiliate network postback

An affiliate network sends traffic to your site with a click ID in the URL (`?aff_click_id=abc123`). You want to notify the network when a purchase happens so it can pay the referring publisher.

Enable the webhook, set the trigger event to `Purchase`, turn on Click ID Matching with `aff_click_id` as the parameter, and map `{{VALUE}}` and the click ID variable to your postback URL. Use **Last click** attribution with the window your network specifies.

### Display ad remarketing pixel

You are running a display campaign through an ad network that provides its own JavaScript pixel for conversion tracking. The pixel needs to fire in the browser with the order value attached.

Enable the Custom Pixel only, paste the network's pixel snippet into the editor, replace the hardcoded value field with `{{VALUE}}`, and set execution to **Sandbox** (since no page context is needed).

### Hybrid affiliate tracking

Some affiliate networks require both a server-side postback *and* a client-side pixel to verify conversions. Previously this meant splitting setup between Tracklution and a tag manager.

Enable both the webhook and the Custom Pixel on the same connector. Configure the postback URL for the server side and paste the network's client pixel into the pixel editor. Both fire together on the trigger event.

### Sending events to a custom internal system

You have an internal analytics or CRM endpoint that should receive purchase events in real time. Enable the webhook, set the method to **POST**, map the parameters you need, and add an `Authorization` header with your internal API key.
