WP Ads (Wirtualna Polska)
Datafly Signal delivers conversion events to Wirtualna Polska server-to-server for campaign attribution and optimisation across the WP advertising network, through the documented WP Pixel S2S API. WP is Poland’s largest web portal; its tracking is normally the WP JS Pixel in the browser, which Signal replaces.
Why route WP Ads (Wirtualna Polska) through Datafly Signal
- Events survive ad blockers and tracking prevention. Signal sends events from your own server, so the conversions WP optimises against are not filtered by the browser.
- Email is hashed before leaving your infrastructure. Signal normalises (trim and lowercase) and applies SHA-256 inside your own deployment, so WP receives
email_hash, never the address. - Client IP and user agent are preserved in WP’s
origin_metaobject, so WP can attribute the event to the right device. - One consent decision governs every destination. The marketing consent state is sent as
tracking_consentand gates delivery like every other destination.
Prerequisites
- A WP Ads advertiser account and your Pixel ID (
pixel_id, e.g.WP-ADS-123-456-789). - S2S API credentials: an OAuth 2.0 Client ID and Client Secret, issued by WP during S2S onboarding. Each client may send events only for the pixel IDs WP has granted it.
Known limitation: WP’s token endpoint takes a JSON request and answers in camelCase (accessToken). Signal’s shared OAuth client does not support that shape yet, so delivery fails with an explicit token error until it does. Nothing is sent unauthenticated.
Configuration fields
| Field | Required | Notes |
|---|---|---|
pixel_id | Yes | WP Pixel identifier, sent as pixel_id on every event. |
client_id | Yes | OAuth 2.0 client ID for the S2S API. |
client_secret | Yes | OAuth 2.0 client secret. Stored as a secret. |
API endpoint
POST https://pixel.wp.pl/s2s/v1/oauth/token (client credentials, scope s2s.events.push)
POST https://pixel.wp.pl/s2s/v1/events/batch
Authorization: Bearer {accessToken}
{"events":[{"pixel_id":"WP-ADS-123-456-789","event_type":"Purchase", ...}]}Identity signals
Sent on every event:
| WP field | Source | Treatment |
|---|---|---|
user_id, session_id | properties.wp_user_id, properties.wp_session_id | WP’s own identifiers (10 digits, a dot, epoch milliseconds). Required by WP for correct processing. |
statid | properties.wp_statid | WP device identifier from GET /s2s/v1/device. |
longterm_id | user_id | Your CRM user ID. |
provider_user_id | anonymous_id | The Signal visitor ID. |
email_hash | properties.email or traits.email | Normalised, SHA-256 hashed. |
tracking_consent | marketing consent | 1 when granted, 0 otherwise. |
origin_meta.source_ip, origin_meta.user_agent | context.ip, context.user_agent | Sent as-is. |
Signal does not yet generate or migrate the WP identifiers. If you are replacing the WP JS Pixel, pass the existing values (the pixel stores the user ID in local storage as __wph_a.key and __wph_a.ts) as wp_user_id, wp_session_id and wp_statid event properties so WP keeps continuity.
Event mapping
| Signal event | WP event_type | content_name | Preset |
|---|---|---|---|
page | ViewContent | View | Default, Ecommerce |
view_item | ViewContent | ViewProduct | Default, Ecommerce |
add_to_cart | AddToCart | Default, Ecommerce | |
generate_lead | Conversion | Default, Ecommerce | |
purchase | Purchase | Default, Ecommerce | |
view_item_list, view_search_results | ViewContent | ProductList | Ecommerce |
remove_from_cart | RemoveFromCart | Ecommerce | |
view_cart | ViewCart | Ecommerce | |
begin_checkout | StartOrder | Ecommerce | |
sign_up, login | ViewContent | Register, Login | Ecommerce |
Items are sent as WP’s contents[] (id, name, quantity, price, category, brand, discount); purchases carry transaction_id, value, currency, shipping_cost and discount_value.
Configure in Signal
- Add the WP Ads integration to the pipeline serving your Polish traffic and pick the Default or Ecommerce preset.
- Enter the Pixel ID, Client ID and Client Secret.
- Save and deploy the pipeline.
Troubleshooting
Token error. See the known limitation above.
401 or 403. The client credentials are wrong, or the client has not been granted this pixel ID.
400. Usually a missing pixel_id or event_type, the two fields WP rejects an event without.
See also
- RTB House
- Ringier Axel Springer Polska (Onet Ads)
- Trusted proxies for correct client IP resolution