Skip to main content

Conversion Pixel

The Conversion Pixel records a conversion event — a sale, lead, signup, or custom action — and attributes it back to the click that brought the visitor in. Drives revenue, ROI, ROAS, EPC, and conversion-rate reports.

You install it on thank-you pages, order-confirmation pages, post-signup pages — anywhere you want to mark "this visitor completed the action."

How Conversions Are Attributed

The conversion pixel needs to know which click to attribute the conversion to. It looks for the click ID in three places, in priority order:

  1. URL query parameter?click_id=... or ?_ct=... on the thank-you page's URL.
  2. sessionStorage._aida_cid — set by the Tracking Pixel earlier in the funnel. Works only if the thank-you page is on the same origin (same domain) as the landing page.
  3. data-click-id attribute — manual override on the script tag, when your server-side code can interpolate the click ID.

If none of these is present, the pixel logs a warning to the browser console and doesn't fire. (You'd see "no click_id found; conversion not recorded".)

How to Install

Easiest. Drops into any page, reads click_id automatically, no template variables.

  1. Open the link's edit page.
  2. Scroll to Pixels → Conversion Pixel.
  3. Pick the Action Type (sale / lead / signup / custom) and optional Revenue amount.
  4. Copy the snippet.
  5. Paste in the <body> of your thank-you page (anywhere — no <head> requirement).
<script async src="https://click.yourdomain.com/embeds/conversion.js"
data-action-type="sale"
data-revenue="49.99"
data-transaction-id="ORD-12345"></script>

The script reads click_id from sessionStorage or URL. The conversion is recorded.

Option B: HTML img pixel (no JS)

Use when JavaScript isn't available, or when you can interpolate click_id server-side and want a no-JS solution.

In the Pixels section, expand Advanced: HTML pixel (no JavaScript). Copy:

<img src="https://click.yourdomain.com/api/clicktracking/conversions/pixel?click_id=YOUR_CLICK_ID&action_type=sale&revenue=49.99"
width="1" height="1" alt="" style="display:none" />

You'll need to replace YOUR_CLICK_ID with the actual click ID. Most likely your e-commerce platform or CMS lets you template it from a session variable.

Conversion Pixel Fields

The customizations on the Conversion Pixel form:

Action Type

What kind of conversion this is. Affects how the conversion is grouped in reports.

ValueUse For
saleCompleted purchase / order
leadForm submission, contact request, demo booking
signupFree account creation, newsletter signup
customAnything else; pair with action_name to label it

Revenue

The dollar value of this conversion. Used in revenue, ROI, EPC reports.

Set to 0 (or leave blank) if the conversion isn't directly revenue-bearing — e.g. a lead form that hasn't been valued yet. You can leave revenue blank in the pixel and update the click row later via API or postback.

Action Name

Optional human-readable label, especially useful with action_type=custom. Free-form text.

Examples: webinar_signup, whitepaper_download, consultation_booking.

Transaction ID

Optional unique transaction reference from your e-commerce or CRM system. Stored on the conversion row for cross-system reconciliation.

Examples: ORD-12345, STRIPE-pi_abc123, INVOICE-2026-001.

Use this to deduplicate conversions if your thank-you page can be refreshed (the pixel fires once per page load, but having a transaction_id lets you detect duplicate firings server-side).

Order ID

Optional separate order identifier when your e-commerce platform distinguishes orders from transactions. Stored alongside transaction_id.

What the Pixel Does

When the script runs:

  1. Find the script tag in the document.
  2. Read data-action-type, data-revenue, etc. attributes from it.
  3. Look for click_id (URL → sessionStorage → data-attr).
  4. If found, fire a 1×1 GIF request to:
    https://click.yourdomain.com/api/clicktracking/conversions/pixel?click_id=...&action_type=...&revenue=...
  5. The server records a row in clicktracking_conversions, then rolls totals onto the click row (revenue, conversions_count, first_conversion_at).

The pixel is fire-and-forget — the page doesn't wait for the response. If the request fails (network error, ad blocker), the conversion is missed but the page UX is unaffected.

Server-to-Server Postback (Alternative)

If you can't paste a pixel on the thank-you page (e.g. payment is processed externally and you only get a webhook), use a server-to-server postback instead.

In your link's advanced settings, set:

https://click.yourdomain.com/api/clicktracking/conversions/postback

Your backend POSTs to this URL after a conversion with JSON body:

{
"click_id": "550e8400-e29b-41d4-a716-446655440000",
"action_type": "sale",
"revenue": 49.99,
"transaction_id": "ORD-12345"
}

Same effect as the pixel, but server-driven.

Multiple Conversions per Click

A single click can have multiple conversions (e.g. a tripwire purchase, then an upsell, then a cross-sell). Each fires the conversion pixel separately, each gets its own row in clicktracking_conversions. The click row's revenue and conversions_count columns accumulate.

The first conversion's timestamp is stored as first_conversion_at; the time between click and first conversion is time_to_conversion (in seconds).

Reporting

Conversion data shows up in:

  • Click Log — per-click columns: revenue, conversions_count, first_conversion_at, time_to_conversion.
  • Reports — aggregate views: total conversions, total revenue, conversion rate (CR), revenue per click (EPC), return on ad spend (ROAS), profit (revenue − cost), ROI ((revenue − cost) / cost).

Group reports by source, country, device, etc., to find your highest-converting traffic.

Worked Example: E-Commerce Funnel

Your funnel: Facebook Ad → Landing Page → Add to Cart → Checkout → Order Confirmation.

Step 1: Tracking Pixel on Landing Page + Add-to-Cart + Checkout pages — captures engagement and stashes click_id in sessionStorage.

Step 2: Conversion Pixel on Order Confirmation:

<script async src="https://click.yourdomain.com/embeds/conversion.js"
data-action-type="sale"
data-revenue="{{ order.total }}"
data-transaction-id="{{ order.id }}"></script>

(Your platform's templating syntax substitutes order.total and order.id.)

Step 3: Watch your reports. After a few clicks/conversions you'll see:

  • Per-click revenue
  • Conversion rate (% of clicks that became sales)
  • ROI per ad campaign (revenue − cost) / cost
  • ROAS per source
  • Average time-to-conversion (how long from click to sale)

If your post-purchase upsell page has its own conversion pixel with action_type=sale, its revenue stacks on the click row.

Troubleshooting

SymptomCauseFix
Console says "no click_id found"The pixel can't find click_id in URL or sessionStoragePass ?click_id=... on the thank-you page URL OR ensure sessionStorage was set on the same-origin landing page earlier
Conversion fires but isn't on the click rowClick row was deleted (TTL hit, soft-delete) OR click_id is for a different tenantVerify click_id matches a real click in the Click Log
Revenue is 0 in reports despite conversionsdata-revenue not set or set to non-numeric valueConfirm the script tag has a numeric data-revenue="..."
Duplicate conversions on a refreshThe thank-you page reloaded and re-fired the pixelUse server-side postback OR check transaction_id server-side and dedupe

Next Steps

  • Tracking Pixel — Sets up _aida_cid in sessionStorage so this pixel can read it
  • Click Log — See per-click revenue and conversion summaries
  • Reports — Aggregate revenue, ROI, ROAS, EPC, conversion rate
  • Links — Server-to-server postback URL configuration