Skip to main content

Server-to-Server (S2S) Conversion Tracking

Send conversion data directly from your server without a browser pixel.

Overview

Server-to-Server (S2S) conversion tracking lets you send conversion events directly from your backend server to Vibe, without relying on a browser-based pixel. This is useful when conversions happen outside of a web browser (e.g., phone orders, CRM events, in-store purchases) or when you want more control over what data is sent to Vibe.

S2S events are used for attribution and reporting in your Vibe campaigns. They appear alongside pixel-tracked conversions in your campaign reports.


Prerequisites

Before using S2S conversion tracking, you need to set up a Vibe Pixel in your account. The S2S endpoint requires your Pixel ID, which is generated when you create a pixel.

If you haven't set up a pixel yet, here's how:

How to install the Vibe pixel

  1. Click your username in the top right corner of your Vibe dashboard.

  2. Select Tracking from the dropdown menu. You'll be routed to the Web Pixel page.

  3. Select your installation method (ex. Manual Javascript).

  4. Choose your Advertiser and click Continue.

  5. Vibe generates your tracking snippet. Your Pixel ID is the second argument passed to vbpx('init', ...) inside that snippet — for example, in vbpx('init','wZwSfW');, the Pixel ID is wZwSfW.

See Finding your Pixel ID below for the full snippet and where to copy it from.


How it works

  1. A conversion happens on your side (e.g., a purchase, a lead form submission).

  2. Your server sends an HTTP request to Vibe's S2S endpoint with the event details.

  3. Vibe matches the event to a household using the IP address provided.

  4. The conversion is attributed to the relevant Vibe campaign and appears in your reporting.


Endpoint

Send a GET or POST request to:

https://t.vibe.co/s2s-conversion/events
  • GET: pass all parameters in the query string.

  • POST: pass parameters as a JSON body with header Content-Type: application/json.

Both methods are fully supported and behave identically — use whichever fits your server setup better.


Required parameters

All parameters below can be passed as query string parameters (GET) or JSON body fields (POST).

Parameter

Description

Required

aid

Your Pixel ID. Find this from your username menu → Tracking → Web Pixel page.

Yes

a

The conversion action name. Use the same action names configured in your Vibe pixel events: purchase, lead, pageview, install, or signup. install and signup are used for app-tracking campaigns (e.g., installs/registrations fed through an MMP). For on-site signup forms not tied to an app, use lead instead.

Yes

eid

A unique event ID to deduplicate events. Use your internal transaction or event ID.

Yes

ip

The IP address of the user who converted. This is how Vibe matches the event to a household. Must be a valid IPv4 address — IPv6 is not currently supported. Make sure your server isn't passing an IPv6 address here.

Yes

ts

The timestamp of when the conversion occurred, in milliseconds since epoch (Unix timestamp × 1000).

Yes


Optional parameters

Parameter

Description

ed

Event details, passed as a URL-encoded JSON string. Use price_usd for the conversion revenue (in USD), and optionally purchase_id for the order ID. Example (before URL-encoding): {"price_usd": 49.99, "purchase_id": "order-12345"}.

gid

Google Analytics ID, if you want to attribute the reported event from Vibe to Google Analytics.

ua

The user agent of the converting user.

url

The URL of the page where the action was performed.

Note: Revenue must be sent inside the ed JSON via price_usd. The endpoint does not read standalone rev, oid, or cur parameters — events sent that way will record $0 revenue.


Example requests

GET, with URL-encoded parameters:

GET
https://t.vibe.co/s2s-conversion/events?aid=YOUR_PIXEL_ID&a=purchase&eid=txn_12345&ip=203.0.113.42&ts=1711540800000&ed=%7B%22price_usd%22%3A49.99%2C%22purchase_id%22%3A%22order-12345%22%7D

The ed value above is the URL-encoded form of {"price_usd": 49.99, "purchase_id": "order-12345"}.

POST, with a JSON body:

POST https://t.vibe.co/s2s-conversion/events
Content-Type: application/json

{
"aid": "YOUR_PIXEL_ID",
"a": "purchase",
"eid": "txn_12345",
"ip": "203.0.113.42",
"ts": 1711540800000,
"ed": "{\"price_usd\": 49.99, \"purchase_id\": \"order-12345\"}"
}

Response: A successful request returns a 200 OK with a JSON body:

{"Status": "ok"}

Finding your Pixel ID

  1. Click your username in the top right corner of your Vibe dashboard, then select Tracking to go to the Web Pixel page.

  2. Select your installation method (ex. Manual Javascript) and open the Page view event tab.

  3. Your Pixel ID appears inside the generated tracking snippet, as the second argument to vbpx('init', ...):

html
<script>
!function(v,i,b,e,c,o){if(!v[c]){var s=v[c]=function(){s.process?s.process.apply(s,
arguments):s.queue.push(arguments)};s.queue=[],s.b=1*new Date;var t=i.createElement
(b);t.async=!0,t.src=e;var n=i.getElementsByTagName(b)[0];n.parentNode.insertBefore
(t,n)}}(window,document,"script","https://s.vibe.co/vbpx.js","vbpx");
vbpx('init','YOUR_PIXEL_ID');
vbpx('event', 'page_view');
</script>

For example, if your snippet reads vbpx('init','wZwSfW');, your Pixel ID is wZwSfW.

If you haven't set up a pixel yet, follow the How to install the Vibe pixel steps under Prerequisites above to generate your snippet.


Best practices

  • Always include the end user's IP address — this is the primary matching key. Without it, Vibe cannot attribute the conversion to a household. Make sure you send the user's IP, not your server's IP.

  • Use unique event IDs — the eid parameter prevents duplicate conversions from being counted twice.

  • Send revenue inside ed — put the amount in price_usd and remember to URL-encode the whole JSON string before adding it to the query.

  • Send events in real time — for best attribution accuracy, send events as soon as they occur rather than batching them.

  • Use the same action names as your pixel — this ensures S2S conversions are grouped with pixel conversions in your reports.


Good to know

  • S2S events are used for attribution and reporting. They do not currently populate retargeting audiences.

  • Matching is based on IP address at the household level. Shared IPs (e.g., an apartment building) cannot currently be disambiguated into separate households.

  • S2S tracking requires a Vibe Pixel to be set up first — the Pixel ID is used to identify your account.

  • IPv4 only. IPv6 requests are not currently supported.

  • Placeholder or test IP values (e.g. ip=test) and non-US/CA IPs are silently dropped as unparseable — the request will still return a 200, but the event will not be recorded.

  • There is no dedicated sandbox environment for testing. Send a real test event with a valid US-based IP and share the eid with your account team to confirm it was received and parsed correctly.

  • S2S is different from CAPI (Conversion API, used for integration partners). S2S is designed for advertisers who want to send conversion data directly from their own servers.


Need help?

If you have questions about setting up S2S conversion tracking, reach out to your Vibe account team or contact support.

Did this answer your question?