Set up postback tracking
Get your Wevion postback URL, configure it in your tracker with macros, test, verify events arriving. Step-by-step setup.
Written By Salvatore Sinigaglia
Last updated About 5 hours ago
Get your Wevion postback URL, configure it in your tracker with macros, test, verify events arriving. Step-by-step setup.
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/configreturns your postback URL template and total conversion stats. The receiver template looks like:
https://api.wevion.ai/meta/postback/conversion?sheet_id={your_sheet_id}&transaction_id={transaction_id}&payout={payout}¤cy={currency}&campaign_id={campaign_id}&adset_id={adset_id}&ad_id={ad_id}Copy the postback URL (it already contains your sheet_id).
Step 2: Translate macros to your tracker's syntax
Fill the receiver parameters with your tracker's macros:
Keep sheet_id as the fixed value from your Wevion postback URL. Example for Keitaro:
https://api.wevion.ai/meta/postback/conversion? sheet_id=YOUR_SHEET_ID &transaction_id={conversion_id} &payout={revenue} ¤cy={currency}Step 3: Configure in your tracker
For Keitaro
- Keitaro Admin β Campaigns β pick the campaign
- Postback URL field β paste the URL with Keitaro macros
- Save
- Repeat per campaign OR set as default postback at Settings β Postback URLs
For Voluum
- Voluum β Settings β Postback Templates β New
- Postback URL with
${...}Voluum macros - Apply to campaigns via campaign settings
For RedTrack
- RedTrack β Conversions β Postback URLs β Add
- URL with RedTrack macros
- Trigger conditions: on Conversion event
For BeMob
- BeMob β Tools β Postback URLs β New
- Trackmaster-style macros
- Save
For TG Tracker
- TG Tracker Admin β Settings β Webhooks / Postback
- URL with TG-style macros
- Save
For custom server-side fire
If you're firing from your own server (no tracker):
curl "https://api.wevion.ai/meta/postback/conversion?sheet_id=YOUR_SHEET_ID&transaction_id=conv-12345&payout=99.99¤cy=USD"The receiver is a GET endpoint. Fire it from your conversion code (Node, Python, PHP, whatever).
Step 4: Generate test traffic
Manually trigger a conversion to test:
- Click on one of your live ads (or use a test ad)
- Complete the funnel β go through to your offer + convert
- Your tracker/network should log the conversion + fire the postback to Wevion's receiver URL
- Check your stored conversions via
GET /api/v1/postback/conversions, or switch the Ads Manager conversion source to postback
If the conversion appears: setup correct. If not: see Common issues below.
Step 5: Verify and monitor
Verify your conversions are landing:
- List stored conversions via
GET /api/v1/postback/conversions(server-side paginated + filterable) - In Ads Manager, switch the conversion source to postback to see the stored conversion counts + revenue
GET /api/v1/postback/configreturns the total conversion count
Healthy setup: conversions from your network appear in the list shortly after they fire.
How storage + idempotency works
When Wevion receives a postback at GET /meta/postback/conversion:
- Read
sheet_idfrom the query (identifies your account) - Store the conversion row (
transaction_id,payout,currency,campaign_id/adset_id/ad_id,received_at) inmeta_postback_conversion - If a row with the same
(sheet_id, transaction_id)already exists, the delivery is treated as a duplicate and not double-counted
If sheet_id doesn't match a real account, the receiver rejects the request.
No forwarding to ad platforms
The postback store is Meta-only and used for Wevion reporting. Wevion does not re-send the stored conversion to Meta CAPI, Google Conversions API, or TikTok Events API. If you need server-side CAPI sends, configure them through the pixel/CAPI flow (meta-105).
Best practices
- Test before going live: always do a manual test conversion first
- Use a stable transaction_id: pass your tracker's conversion ID so Wevion can dedup reliably
- Keep the sheet_id fixed: it identifies your account in the receiver URL β don't alter it
- Set up postback per campaign: even if your tracker supports a default URL, per-campaign customization helps pass attribution keys
- Keep tracker logs: useful for debugging if conversions disappear
Common issues
- "Network sends but Wevion doesn't show conversions": wrong URL, wrong
sheet_id, or the network can't reach Wevion (firewall, DNS). Test with curl. - "Conversions with wrong currency / value": tracker macros not replacing correctly. Test by hardcoding values to isolate.
- "Conversion rejected": the
sheet_iddoesn't match a real account. Copy the URL from/connect/postbackcleanly. - "Duplicate conversions": pass a stable
transaction_id; Wevion dedups on(sheet_id, transaction_id)automatically.
Deduplication (transaction_id)
Deduplication is automatic. Wevion enforces a unique constraint on (sheet_id, transaction_id), so a redelivered postback with the same transaction_id for your account is collapsed and not double-counted. Best practice: pass a stable transaction_id from your tracker (e.g. the Keitaro conversion ID).
FAQ
How do I get my Wevion postback URL?
In Wevion, go to Connect β Postback or visit /connect/postback and click Get URL. You can also call GET /api/v1/postback/config, which returns your postback URL template and total conversion stats. Copy the receiver URL (it already contains your sheet_id), then fill in your tracker's macros for transaction_id, payout, and currency.
Where do my postback conversions show up in Wevion?
Stored conversions are listed via GET /api/v1/postback/conversions (server-side paginated and filterable), and they appear as the switchable postback conversion source in Ads Manager reporting. The postback store is Meta-only and used for Wevion reporting β Wevion does not re-send the conversion to Meta CAPI, Google, or TikTok.
How do I test my postback setup in Wevion?
Trigger a manual conversion: click one of your live ads, complete the funnel through to your offer, and convert. Your tracker/network should log the conversion and fire the postback to Wevion's receiver URL. Then check your stored conversions via GET /api/v1/postback/conversions, or switch the Ads Manager conversion source to postback. If the conversion appears, your setup is correct.
How do I prevent duplicate conversions in Wevion?
Deduplication is automatic. Wevion enforces a unique constraint on (sheet_id, transaction_id), so a redelivered postback with the same transaction_id for your account is collapsed and not double-counted. Best practice is to pass a stable ID from your tracker, such as a Keitaro conversion ID, as the transaction_id.