IntegrationsAdvertisingWP Ads (Wirtualna Polska)

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_meta object, so WP can attribute the event to the right device.
  • One consent decision governs every destination. The marketing consent state is sent as tracking_consent and 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

FieldRequiredNotes
pixel_idYesWP Pixel identifier, sent as pixel_id on every event.
client_idYesOAuth 2.0 client ID for the S2S API.
client_secretYesOAuth 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 fieldSourceTreatment
user_id, session_idproperties.wp_user_id, properties.wp_session_idWP’s own identifiers (10 digits, a dot, epoch milliseconds). Required by WP for correct processing.
statidproperties.wp_statidWP device identifier from GET /s2s/v1/device.
longterm_iduser_idYour CRM user ID.
provider_user_idanonymous_idThe Signal visitor ID.
email_hashproperties.email or traits.emailNormalised, SHA-256 hashed.
tracking_consentmarketing consent1 when granted, 0 otherwise.
origin_meta.source_ip, origin_meta.user_agentcontext.ip, context.user_agentSent 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 eventWP event_typecontent_namePreset
pageViewContentViewDefault, Ecommerce
view_itemViewContentViewProductDefault, Ecommerce
add_to_cartAddToCartDefault, Ecommerce
generate_leadConversionDefault, Ecommerce
purchasePurchaseDefault, Ecommerce
view_item_list, view_search_resultsViewContentProductListEcommerce
remove_from_cartRemoveFromCartEcommerce
view_cartViewCartEcommerce
begin_checkoutStartOrderEcommerce
sign_up, loginViewContentRegister, LoginEcommerce

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

  1. Add the WP Ads integration to the pipeline serving your Polish traffic and pick the Default or Ecommerce preset.
  2. Enter the Pixel ID, Client ID and Client Secret.
  3. 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