Signal Export
A Signal Export pushes conversion event data from your data warehouse to an ad platform for offline conversion attribution, enhanced measurement, and value-based bidding.
How it works
- BPP reads your event table and applies the signal's trigger filters (e.g., rows where
Stage = Closed Won). - For each qualifying event, BPP:
- Looks up the user identifiers (email, phone, click IDs) configured for the destination.
- Computes the conversion value using your formula.
- Builds the platform-specific payload, normalising identifiers and hashing at send time if required by the destination.
- BPP sends the events to the destination platform in batches.
- The sync result (events processed, events failed, latest event date, timestamp) is saved to Sync History.
What gets sent
| Destination | Data sent |
|---|---|
| Google Ads Enhanced Conversions | Conversion action, event timestamp, Order ID (optional), value, hashed identifiers |
| Google Ads Conversion Adjustment | Conversion action, Order ID, restated value |
| Google Ads Store Sales | Conversion action, event timestamp, value, hashed identifiers (on the Data Manager API also Order ID and Store ID) |
| Google Ads Online Conversions (multi-source) | Website conversion action, event timestamp, transaction ID, value, hashed identifiers and click IDs, optional session attributes, consent and IP addresses |
| Meta Ads Conversions API | Pixel, event name (Meta's standard name for predefined events), value, currency, hashed identifiers, and optionally a predicted LTV (only when configured and greater than 0) — see Meta Ads |
| Google Analytics 4 | Measurement ID, event name, value, currency, client_id/user_id identity |
| OpenAI Ads Conversions API | Pixel, event type, timestamp, action source, value, currency, hashed and raw identifiers |
| API Endpoint | Custom metric fields with your formula-computed values, plus user identifiers |
How old an event can be
Each platform accepts conversions only up to a certain age. BPP reads and sends only the events inside that window, and the signal preview count applies the same window:
| Destination | Oldest event sent |
|---|---|
| Google Ads Enhanced Conversions for Leads | 90 days |
| Microsoft Ads | 90 days |
| Meta Ads, OpenAI Ads | 7 days |
| Google Analytics 4 | 72 hours |
| Google Ads adjustments and store sales, API endpoints | No limit |
The destination form says so for each platform, for example Meta Ads only accepts events from the last 7 days: older events are not sent to this destination. A new destination therefore does not backfill events older than its window.
Incremental syncs — no duplicate sends
Signal exports track the latest event date processed. On each run, BPP only picks up events newer than the last successful push. This prevents the same conversion event from being sent to the ad platform twice.
Each destination independently tracks its own high-water mark, so if one destination is paused or fails, the others continue independently.
Order ID deduplication
For Google Ads Enhanced Conversions, you can send an Order ID with each event. If your site pixel and BPP both send the same conversion event with the same Order ID, Google Ads will count it only once. This prevents double-counting in your conversion reporting.
Using Order ID is strongly recommended when your site pixel and BPP might both send the same lead or purchase event.
Scheduling
Signal syncs run daily by default. The signal must be in Ready status (enabled) for runs to execute.
Partial syncs
If some events fail to push (e.g., a missing required identifier or a platform rejection), the events that were successfully sent are still counted — a partial failure does not cancel the whole sync. The destination still shows Complete; when a significant share of its events was rejected, the status carries a warning icon and its tooltip explains the rejections. See Execution History.