Ad platforms
X Conversion API
Send outcomes to X Conversion API through the approval gate, matched by click id or hashed email and phone.
Live: shipped in OrcLink's production release before this one. Built, not yet tested live: built and tested with sample data, not yet run against a live account of the vendor. Coming soon: listed, not available to connect yet.
How to connect
- Conversions > Destinations > X Conversion API: X pixel (base tag) ID; Event map: OrcLink event name = X event id (ol288 or tw-o8z6j-ol288), separated by ;; X app API key (consumer key) (stored encrypted); X app API secret (consumer secret) (stored encrypted); Access token (user with access to the ad account) (stored encrypted); Access token secret (stored encrypted).
- Then send a test event and check Conversions > Audit log.
What OrcLink reads
- Ad cost: imported by API in Conversions > Ad costs (campaign, ad group and keyword, with impressions and clicks), once a day while the scheduled jobs ad-spend and jobs run (your OrcLink operator schedules them). Cost days are the ad account's calendar days (in the ad account's time zone); conversion and outcome days are UTC days. Near midnight, a cost and its conversions can be on different days.
What OrcLink writes back
- Conversions for the stages you set to relay (Outcomes > Stages), each with its click id and the hashed email and phone the platform matches on. Each batch waits for approval when approval is on (the default).
Never stored
- Raw email or phone: only hashes leave OrcLink.
- Page paths, page titles, referrers and IP addresses: never sent to an ad platform.
Known limits
- X needs an app with X Ads API access and an access token of a user who can manage the ad account (OAuth 1.0a). Set up one event per conversion in X Ads Manager and map OrcLink event names to the X event ids. Under a neutral-name rule the names are the generic labels from the Compliance tab (event_1, ...): map those. In HIPAA mode and for health workspaces nothing is sent to X. X matches on its click id (twclid) or the hashed email; the hashed phone number is added. X has no test mode: the test button sends a real conversion to the event mapped for event_test, and nothing when none is mapped.
Status: endpoint, example body and signing built from X's docs (read 2026-10-05; the OAuth 1.0a signer passes X's own signature example; the phone hash includes the +, as the docs' example hash shows). Not checked against a live account. UNVERIFIED: the price_currency field name, which event id form X takes (see below), the campaigns list shape, and the Audience Platform placement name.
Conversions (X Conversion API)
What OrcLink sends: the X event id you mapped, the conversion time, the event id as conversion_id (dedupe with the X pixel), the X click id (twclid), the hashed email and the hashed phone number (E.164, only with a country code), and the value with its currency. No event name, no IP address, no user agent, no URL.
- Matching: the click id or the hashed email. Otherwise skipped. A click id that does not look like one (letters, digits,
_and-, 10 to 128 characters, with a letter: never a phone number, an IP address or an email) is not stored and not sent; the hashed email still goes. - Event map: X has no free event names. In X Ads Manager > Events Manager, create one event per conversion you want (for example "Purchase") and copy its id. X's docs send the bare base-36 event id (
ol288); Ads Manager shows the event tag astw-<pixel id>-<event id>. Either may be typed: atw-value of this destination's own pixel is sent as the bare id. In OrcLink set Event map topurchase=ol288; appointment=ol289(the stage templates name X eventsappointmentandpurchase). Which form X takes is UNVERIFIED (see the smoke test below). When a neutral-name rule applies the names are the generic labels from the Compliance tab: mapevent_1=.... An event with no mapping is skipped. - HIPAA mode: nothing is sent, whatever the ad category (a workspace in HIPAA mode is treated as a health workspace for this platform). The destination cannot be connected or switched on while HIPAA mode is on; one connected before shows "Blocked: HIPAA mode" and sends nothing. Withheld events show as Blocked in the Audit log with the reason
hipaa_mode. - Health workspaces: nothing is sent (not even page views). To open this platform for health workspaces, the owner must first confirm its terms on health data in writing.
Credentials: X Ads API access for an X developer app (apply in the X developer portal; the owner's step), its API key and secret, and an access token and secret of a user who can manage the ad account. All four are stored encrypted.
Smoke test (owner): map event_test=<a test event id> and click Send test event. X has no test mode: the button asks you to type SEND REAL CONVERSION, then records one conversion on that event (with the hash of [email protected]). A good answer reads "X accepted the test. X has no test mode: it is a real conversion for the event mapped to event_test." (conversions_processed: 1). Remove the mapping afterwards.
Event id form (UNVERIFIED; part of the same smoke test). X's docs send the bare id; Ads Manager shows the tag. Try, in this order, for the event you created (pixel o8z6j, event ol288 as the example):
event_test=ol288: OrcLink sends"event_id":"ol288". Expected:conversions_processed: 1.- If X refuses form 1 (an INVALID_PARAMETER error on
event_id), the second form is"event_id":"tw-o8z6j-ol288". OrcLink cannot send it today: atw-value of this destination's own pixel is sent as the bare id (xWireEventIdinapp/lib/conversions/platforms/x.ts). Report the answer of form 1 to the OrcLink team; sending form 2 is a one-line change there.
Ad cost (X Ads API)
Ad costs > Connect X Ads with the ads account ID, the same four keys, and the ad account currency and time zone. OrcLink lists campaigns (deleted ones too) and reads billed_charge_local_micro, impressions and link clicks per campaign and day, for both placements (on X, and the X Audience Platform), summed. X may revise spend for up to 3 days; each day's pull reads the last 3 days again, while the scheduled jobs ad-spend and jobs run (your OrcLink operator schedules them).