Set up postback tracking

Last updated: May 19, 2026

Set up postback tracking

Step-by-step setup for postback tracking. Get your Wevion postback URL, configure it in your tracker with the right macros, test, verify events arriving. Total time: 10-20 minutes per tracker.

Who is this for

Mediabuyers ready to enable server-side conversion tracking. Read com-109 postback overview first for context.

Before you start

  • A tracker connected (Keitaro / Voluum / RedTrack / BeMob / TG Tracker — see com-107) OR your own server capable of HTTP POST

  • Your ad campaigns running on Meta / Google / TikTok with click_id passed in UTM (Wevion auto-generates these)

  • Your tracker logging conversions with click_id

Step 1: Get your Wevion postback URL

In Wevion:

  • Sidebar → Connect → Postback or visit /connect/postback

  • Click Get URL or directly: GET /api/v1/postback/config returns:

{
  "postback_url_template": "https://api.wevion.ai/api/v1/postback/conversions?event={event_name}&value={value}&currency={currency}&click_id={click_id}",
  "supported_macros": ["click_id", "value", "currency", "event_name", "user_email", "custom_data"],
  "your_workspace_id": "ws-abc123",
  "rate_limit_per_minute": 1000
}

Copy the postback_url_template.

Step 2: Translate macros to your tracker's syntax

Wevion uses {macro_name} syntax. Translate to your tracker:

Wevion macro

Keitaro

Voluum

RedTrack

BeMob

{click_id}

{click_id}

${click_id}

{clickid}

{click_id}

{value}

{revenue}

${payout}

{sum}

{value}

{currency}

{currency}

${currency}

{currency}

{currency}

{event_name}

hardcode (e.g. Purchase)

hardcode

hardcode

hardcode

{user_email}

{email} (if available)

${customer_email}

{email}

{user_email}

Example for Keitaro converting Wevion's URL:

https://api.wevion.ai/api/v1/postback/conversions?
  event=Purchase
  &value={revenue}
  &currency={currency}
  &click_id={click_id}
  &user_email={email}

Step 3: Configure in your tracker

For Keitaro

  1. Keitaro Admin → Campaigns → pick the campaign

  2. Postback URL field → paste the URL with Keitaro macros

  3. Save

  4. Repeat per campaign OR set as default postback at Settings → Postback URLs

For Voluum

  1. Voluum → Settings → Postback Templates → New

  2. Postback URL with ${...} Voluum macros

  3. Apply to campaigns via campaign settings

For RedTrack

  1. RedTrack → Conversions → Postback URLs → Add

  2. URL with RedTrack macros

  3. Trigger conditions: on Conversion event

For BeMob

  1. BeMob → Tools → Postback URLs → New

  2. Trackmaster-style macros

  3. Save

For TG Tracker

  1. TG Tracker Admin → Settings → Webhooks / Postback

  2. URL with TG-style macros

  3. Save

For custom server-side fire

If you're firing from your own server (no tracker):

curl -X POST "https://api.wevion.ai/api/v1/postback/conversions?event=Purchase&value=99.99&currency=USD&click_id=abc123"

Fire from your conversion code (Node, Python, PHP, whatever).

Step 4: Generate test traffic

Manually trigger a conversion to test:

  1. Click on one of your live ads (or use a test ad)

  2. Note the click_id in the URL (e.g. ?wevion_click_id=test123)

  3. Complete the funnel — go through to your offer + convert

  4. Tracker should log the conversion + fire postback to Wevion

  5. Check Wevion /connect/postbackRecent events tab

If event appears: setup correct. If not: see Common issues below.

Step 5: Verify and monitor

/connect/postback shows:

  • Recent events list (last 50)

  • Per-event: timestamp, event name, click_id, value, status (received / matched / forwarded / failed)

  • Attribution success rate (% of events successfully matched to an ad campaign)

  • Forwarding success rate per ad platform

Healthy setup: > 90% attribution + > 95% forwarding success.

How attribution works

When Wevion receives a postback:

  1. Extract click_id from URL params

  2. Look up click_id in meta_postback_conversion table — was this click tracked by Wevion?

  3. If yes: get the associated ad campaign (from when the click was tracked at Wevion)

  4. Forward conversion to that campaign's ad platform via CAPI / Conversions API

  5. Mark event as matched + forwarded

If click_id NOT found:

  • Event marked received but not matched

  • May be a click from before postback was set up

  • May be a click_id from a non-tracked source

Forwarding to ad platforms

Configure per ad platform in /connect/postback:

  • Meta CAPI: enabled by default for Meta-connected campaigns

  • Google Conversions API: enabled for Google campaigns

  • TikTok Events API: enabled for TikTok campaigns

For each: Wevion uses the ad platform's standard API to fire the conversion event. Event name normalized (e.g. Wevion Purchase → Meta CAPI Purchase → Google purchase).

Best practices

  • Test before going live: always do a manual test conversion first

  • Use click_id consistently: Wevion auto-injects via UTM in Campaign Creator; your tracker must read and store it

  • Set up postback per campaign: even if your tracker supports default URL, per-campaign customization helps

  • Monitor the attribution rate: if drops below 80%, investigate click_id flow

  • Keep tracker logs: useful for debugging if events disappear

Common issues

  • "Event received but not matched": click_id mismatch. Verify tracker is receiving + forwarding the same click_id Wevion injected.

  • "Tracker sends but Wevion doesn't show events": wrong URL or tracker can't reach Wevion (firewall, DNS). Test with curl.

  • "Events with wrong currency / value": tracker macros not replacing correctly. Test by hardcoding values to isolate.

  • "Forwarding to Meta CAPI fails": Meta CAPI access token missing for that ad account (meta-105).

  • "Rate limit exceeded": tracker firing too fast (> 1000/min). Throttle tracker side OR request elevated limit (Enterprise).

  • "Duplicate events": tracker firing postback multiple times for same conversion. Add deduplication on tracker side OR enable Wevion-side dedup via event_id.

Event ID for deduplication

Pass event_id parameter for explicit deduplication:

...&event_id=conv-12345

Wevion deduplicates events with the same event_id within 7 days. Best practice: use a stable ID from your tracker (e.g. Keitaro conversion ID).

Related