> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

# EZmob Conversion Tracking & Postback Setup

> Set up EZmob conversion tracking in ClickFlare: the {conversion} click ID, the qualiclicks S2S postback with value, {bid} cost and pixel vs postback.

![EZmob traffic source template](https://mintcdn.com/clickflare/JnEca3lx3v_LxcNj/images/integrations/covers/templates/ezmob.png?fit=max\&auto=format\&n=JnEca3lx3v_LxcNj\&q=85\&s=6e340531964ce07a83477d157cc1d5b1)

EZmob is a self-serve ad network and XML feed platform. It sells push, in-page push, direct click and keyword traffic on CPC, and pop, banner and video traffic on CPM. This guide sets up EZmob as a traffic source in ClickFlare. It covers passing EZmob's click data into your reports and sending conversions, with their value, back to EZmob so its metrics and your stats agree.

You do everything from the **campaign editor**. The EZmob traffic source is created inline, without leaving the campaign.

## At a glance

| | |
| - | - |
| **Ad formats** | Push, in-page push, pop, banner, video, direct click, keyword |
| **Click ID macro** | `{conversion}` (alias `{pixel}`), mandatory for conversion tracking |
| **Conversion tracking** | S2S postback to `xml.qualiclicks.com`. No account ID or token needed. |
| **Payout passed back** | Yes, in the `value` parameter |
| **Multiple events** | Not documented by EZmob. Send one conversion event. |
| **Cost** | Passed by the template as EZmob's `{bid}` macro, the cost per click or per view. Cost Model: **Not Tracked**. |
| **Conversion API** | No |

## How it works

**1. EZmob sends the click**

A visitor clicks your ad, or a pop opens. EZmob opens your ClickFlare campaign URL and fills in its macros: the click ID in `clickid`, the cost in `bid`, plus the campaign, ad, source, SubID, site, keyword, country, device and other details.

**2. ClickFlare stores the EZmob click ID**

ClickFlare saves the value of `clickid` as the visit's **External ID**, records the cost, and redirects the visitor to your lander or offer.

**3. The conversion reaches ClickFlare**

Your affiliate network or store posts the conversion back to ClickFlare, matched on the ClickFlare click ID.

**4. ClickFlare posts it back to EZmob**

ClickFlare fires the EZmob postback, replacing `{external_id}` with the stored click ID and `{payout}` with the revenue. EZmob matches it to the original click and shows it in its Conversions and Conv. Value columns.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`clickid`) and *EZmob's* macro (`{conversion}`). The template does this for you. In the **postback URL** you write *EZmob's* parameter (`c`) and *ClickFlare's* token (`{external_id}`). EZmob's macros use curly braces like ClickFlare's tokens, so check which side of the mirror you are on.

## Before you start

* **Set up your own tracking domain.** Run the campaign and the postback on your own custom domain. Shared domains get flagged by networks and blocked by browsers. See [Custom Domains](/docs/en/settings/custom-domains.md).
* **Have an offer ready in ClickFlare**, and its affiliate network set up to post conversions back to ClickFlare. See [Creating an Offer](/docs/en/tracking/creating-an-offer-1.md) and [Adding an Affiliate Network](/docs/en/tracking/adding-an-affiliate-network.md).
* **Nothing to copy from EZmob for the postback.** EZmob's postback URL has no account ID or token, so the template's postback works as it is.
* **Fire only confirmed conversions.** EZmob asks for the postback only after the conversion is confirmed, and only once per conversion. Decide which ClickFlare event that is before you start.

***

## Step 1 – Create the campaign and the EZmob traffic source

1. Go to **Campaigns** and click **New**.
2. In **Traffic Source**, open the dropdown and click **+ New Traffic Source**.
3. Type `ezmob` in the search box and select the **EZmob** template.
4. Enter a **Name**, for example `EZmob`.
5. Leave **Cost currency** on **USD** unless your EZmob account is billed in another currency.

The template fills in the **Parameters** table for you:

| Name | TS Parameter | TS Token (EZmob macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| External ID | `clickid` | `{conversion}` | `{external_id}` | EZmob's click ID. Required for the postback. |
| Cost | `bid` | `{bid}` | `{cost}` | EZmob's cost per click or per view. See [Cost](#cost). |
| Campaign ID | `campaign` | `{campaign}` | `{trackingField1}` | Your EZmob campaign ID |
| Ad ID | `banner` | `{banner}` | `{trackingField2}` | The ad. EZmob calls the macro `banner` on every format. |
| Source | `source` | `{source}` | `{trackingField3}` | The traffic source. On XML traffic, the feed ID and SubID joined by a dot. On display, the site or app ID. |
| Sub ID | `subid` | `{subid}` | `{trackingField4}` | The publisher feed's SubID |
| Site ID | `site_id` | `{site_id}` | `{trackingField5}` | The publisher site |
| Keyword | `keyword` | `{keyword}` | `{trackingField6}` | The matched keyword, on keyword and feed traffic |
| Country | `country` | `{country}` | `{trackingField7}` | The visitor's two-letter country code |
| Device Type | `device_type` | `{device_type}` | `{trackingField8}` | The visitor's device type |
| OS | `os` | `{os}` | `{trackingField9}` | The operating system, with version |
| Browser | `browser` | `{browser}` | `{trackingField10}` | The visitor's browser |

![The EZmob template's Parameters table in ClickFlare, with EZmob's macros pre-filled](https://mintcdn.com/clickflare/JnEca3lx3v_LxcNj/images/integrations/templates/ezmob/parameters.png?fit=max\&auto=format\&n=JnEca3lx3v_LxcNj\&q=85\&s=0d53b4a096531c2dd17e10f6bea8e16b)

Each tracking field becomes a column you can group reports by. **Sub ID** and **Source** are the ones you will use most: EZmob lets you block or allow SubIDs in the campaign editor's **SubID** step, so a SubID that doesn't convert in ClickFlare can be blocked in EZmob.

> [!WARNING]
>
> Don't change or remove the **External ID** row. Without `{conversion}` in the campaign URL, EZmob cannot match conversions. Don't swap it for `{click_id}` either: EZmob rejects `{click_id}` in a destination URL when you save the campaign.

To pass more EZmob data, click **Add Parameter**, give it a name and parameter, and enter the EZmob macro as the **TS Token**. ClickFlare assigns the next free tracking field. Useful extras include `{pubfeed}`, `{pubzone}`, `{publisher}`, `{carrier}`, `{city}`, `{device_brand}`, `{app_bundle}` and `{referrer_domain}`.

EZmob is strict about macros: they are case-sensitive (`{country}` works, `{Country}` doesn't) and any macro not in EZmob's list is rejected. Copy macro names exactly from EZmob's list.

## Step 2 – Set up the postback

The postback is what sends conversions to EZmob. It lives on the traffic source, so every campaign that uses this EZmob traffic source sends conversions the same way.

### Check your postback URL in EZmob

1. In EZmob, click **Postbacks** in the sidebar to open **Conversion Tracking**.
2. On the **Postback URL** tab, look at **Your Postback URL**:

```text theme={null}
https://xml.qualiclicks.com/conversion?c={click_id}&value={value}
```

EZmob's `{click_id}` and `{value}` are placeholders for your tracker to fill. ClickFlare's template already has its own tokens in their place. ClickFlare is not under **Tracking Partners**, so you don't need to select anything there.

### Add it to the traffic source in ClickFlare

1. Back in the **New Traffic Source** form, scroll to **Passing conversion info to traffic source**.
2. Turn on **Traffic source postback URL**. The template's postback appears:

```text theme={null}
https://xml.qualiclicks.com/conversion?c={external_id}&value={payout}
```

![The Traffic source postback URL switched on, showing the EZmob template's postback](https://mintcdn.com/clickflare/JnEca3lx3v_LxcNj/images/integrations/templates/ezmob/postback.png?fit=max\&auto=format\&n=JnEca3lx3v_LxcNj\&q=85\&s=401dedccc2e7f28f7169fe2a60dcf92e)

It sends the click ID (`{external_id}`) in `c` and the payout (`{payout}`) in `value`, both as ClickFlare tokens. There is nothing to replace.

3. In the dropdown on the left, choose the ClickFlare event that should fire the postback. Keep **Conversions** to send every conversion. If your final, confirmed action is a custom conversion (for example `purchase`), choose that instead.
4. Click **Save**. You are back in the campaign editor with the EZmob traffic source selected.

> [!WARNING]
>
> Don't paste EZmob's URL as it is. `{click_id}` and `{value}` are not ClickFlare tokens, so ClickFlare would send them as literal text, and EZmob would receive a postback with no real click ID.

`value` carries your payout. EZmob shows it in the **Conv. Value** column. If your offers pay in a currency other than USD, see [Multicurrency in ClickFlare](/docs/en/tracking/multicurrency-support-in-click-flare-how-it-works.md).

To learn what each postback token does, see [How to Configure a Traffic Source S2S Postback URL](/docs/en/tracking/how-to-configure-a-traffic-source-s2s-postback-url.md).

## Step 3 – Finish the campaign and copy its URL

1. Name the campaign.
2. Set the **Cost Model** to **Not Tracked**, so ClickFlare uses the cost EZmob passes. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for EZmob's pop, push and direct click traffic.
4. Click **Next** and, on **Destination**, add your lander (optional) and your offer.
5. Save, open **Tracking**, select your own tracking domain and copy the **campaign URL**.

The campaign URL already contains every EZmob macro from the template, for example `clickid={conversion}` and `subid={subid}`.

If you use a lander, its call-to-action must link to the ClickFlare **click URL**, not to the offer directly. Otherwise the visit reaches the offer without a ClickFlare click ID, and the conversion cannot be traced back to EZmob.

See [Creating a Campaign in ClickFlare](/docs/en/campaigns/creating-a-campaign-in-click-flare.md).

## Step 4 – Create the campaign in EZmob

1. In EZmob, create a campaign and choose the format: push, in-page push, pop, banner, video, direct click or keyword.
2. Set targeting and your bid as usual.
3. Paste the ClickFlare campaign URL into the **Destination URL** field. Pop, direct click and keyword creatives need only a destination URL.
4. Submit the campaign for approval.

Paste the URL exactly as ClickFlare gives it. EZmob replaces each `{...}` macro with real values when the ad is clicked.

EZmob checks the URL when you save. It must start with `https://` (or `http://`) and use a public domain, so use your own tracking domain. If EZmob flags an error under the field, fix it rather than removing macros. Errors usually come from a space, a missing `https://`, an empty `{}` or an unsupported macro, and EZmob offers a one-click fix for those.

## Step 5 – Test the integration

1. Once the campaign runs, check the first visits in ClickFlare. The **Sub ID** column should show real values, not the text `{subid}`.
2. Complete a test conversion on your offer, or post one to ClickFlare from your affiliate network.
3. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. A successful request to `xml.qualiclicks.com` confirms ClickFlare sent the postback. The fired URL should look like `c=ABC123&value=1.50`, with a real click ID, not the text `{external_id}`.
4. In EZmob, check the **Conversions** and **Conv. Value** columns under **Metrics**.

***

## Using the pixel instead

EZmob also offers an image pixel, for pages where a server-side postback isn't possible. The postback is the better choice with ClickFlare:

> **Why the postback is better**
>
> * The pixel does not send a conversion value. To report **Conv. Value**, EZmob requires the postback.
> * The pixel reads the click ID from a `clickid` parameter in the page URL. With ClickFlare in between, your offer's thank-you page doesn't have EZmob's click ID in its URL. ClickFlare does, and the postback sends it.
> * A pixel on a page visitors can reload fires again on each reload, which creates duplicate conversions.

> **If you must use the pixel**
>
> Copy it from **Postbacks → Image Pixel** in EZmob and paste it inside the `<body>` of a page that loads only after a confirmed conversion. That page's URL must carry `clickid` with EZmob's click ID. Turn off **Traffic source postback URL** on the EZmob traffic source, or the conversion is counted twice.

> **Sending only some conversions**
>
> EZmob doesn't document separate events. Keep a single postback and map it to the event EZmob should count, usually your final sale. Earlier steps still show in ClickFlare.
>
> To send a postback only for some conversions, for example only those above a certain payout, use **Event filter** under the postback to add conditions.

## Cost

The template passes cost through the **Cost** row, which sends EZmob's `{bid}` macro. ClickFlare records it as the visit's cost. On the campaign, set the **Cost Model** to **Not Tracked** so ClickFlare uses the cost passed in the URL.

What `{bid}` holds depends on how you buy:

| Buying | `{bid}` carries |
| - | - |
| CPC formats (push, in-page push, direct click, keyword) and XML feed traffic | The cost of the click |
| CPV and display buying (EZmob prices pop, banner and video on CPM) | The cost of the view |

> [!NOTE]
>
> EZmob prices pop, banner and video on CPM, per 1,000 impressions, but documents `{bid}` as the cost per view on those formats. After launch, compare the **Cost** column with your EZmob spend. If ClickFlare shows about 1,000 times more, `{bid}` is carrying the CPM price: switch the Cost Model to **CPC** and enter your CPM bid divided by 1,000 as the cost value. A pop impression is roughly one visit. On banner and video, the result is only an estimate.

When the recorded spend differs from your EZmob spend, correct it with a [manual cost upload](/docs/en/settings/manual-cost-upload.md). Note that EZmob's reporting day runs on Pacific time, so compare the same dates in the same time zone. See [Cost Models](/docs/en/core-platform-concepts/cost-models.md).

## Delayed revenue

If you run search arbitrage (RSOC or AFD) behind EZmob, the feed reports revenue hours or days after the click. To pass that revenue to EZmob once it arrives, see [Sending Delayed Revenue to Traffic Sources](/docs/en/advanced-tracking-configuration/how-to-send-delayed-revenue-to-traffic-sources.md).

***

## Troubleshooting

> **EZmob doesn't record the conversion**
>
> * The campaign's **Destination URL** in EZmob is missing `clickid={conversion}`, or the macro was edited. Copy the URL from ClickFlare again.
> * The postback was replaced with EZmob's URL, so it sends the literal text `{click_id}`.
> * The `External ID` row was removed from the traffic source.

> **Conversions show in ClickFlare but not in EZmob**
>
> * **Traffic source postback URL** is off on the EZmob traffic source.
> * **Disable sending postbacks to traffic source** is on in the campaign.
> * The postback is mapped to a different event than the one the conversion logged. Check **Logs → Event Logs** to see which event was recorded.
> * Check **Logs → Postback Status**: a failed request shows the status code EZmob returned.

> **EZmob counts more conversions than ClickFlare**
>
> You run both the pixel and the postback, or the pixel sits on a page visitors reload. Use the postback only.

> **Numbers differ between EZmob and ClickFlare**
>
> EZmob's reporting day is Pacific time (America/Los\_Angeles). Compare the same campaigns and dates in the same time zone, and check that both count the same conversion event.

> **EZmob won't save the campaign URL**
>
> A macro is misspelled, in the wrong case or not in EZmob's list. Remove any macro you added by hand, or check its spelling against EZmob's macro list. See [Traffic Source Tokens Arriving Empty](/docs/en/troubleshooting/tokens-arriving-empty.md) if macros save but arrive empty.

For the general checklist, see [Conversions not showing](/docs/en/troubleshooting/conversions-not-showing.md).

***

**FREQUENTLY ASKED QUESTIONS**

> **Q1:** Can I use the same EZmob traffic source for all my EZmob campaigns?

**A1:** Yes. The postback has no account or campaign ID in it, so one EZmob traffic source serves every campaign.

> **Q2:** Why is it `clickid` in the campaign URL and `c` in the postback?

**A2:** They are two halves of the same value. ClickFlare reads EZmob's click ID from its own `clickid` parameter. EZmob expects it back in its own `c` parameter. Change neither.

> **Q3:** EZmob's docs mention `{pixel}`. Should I use it instead of `{conversion}`?

**A3:** No need. `{pixel}` is an alias of `{conversion}` and carries the same click ID. The template uses `{conversion}`.

> **Q4:** Should I use Redirect or Direct tracking with EZmob?

**A4:** Redirect is the usual choice and works with every EZmob format. Use Direct only if EZmob must see your lander's domain as the destination. See [Direct Campaign Tracking](/docs/en/campaigns/direct-campaign-tracking.md).

> **Q5:** Can I send registrations and sales as separate events?

**A5:** EZmob doesn't document an event parameter in its postback, so every postback counts as the same conversion. Send the event that matters most and keep the rest in ClickFlare.

## Related

> **[Traffic source postbacks](/docs/en/tracking/how-to-configure-a-traffic-source-s2s-postback-url.md)**
>
> Every token you can use in a postback.

> **[Custom conversions](/docs/en/settings/custom-conversions.md)**
>
> Pick the one event EZmob should count.

> **[Cost models](/docs/en/core-platform-concepts/cost-models.md)**
>
> How CPC, CPA and RevShare costs are calculated.

> **[Conversions not showing](/docs/en/troubleshooting/conversions-not-showing.md)**
>
> The general checklist when postbacks don't arrive.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.