Documentation
Pixels & destinations
Per-account CAPI setup for GA4, Meta, TikTok, LinkedIn, Reddit, and more — plus how to test delivery.
Intently routes conversions via server-side destination deliveries (GA4, Meta CAPI, TikTok, LinkedIn, Pinterest, X, Reddit, and Segment). Attribution links successful deliveries back to conversions as delivery proof. Client-side ad pixels are not part of the current product.
Platform apps vs your destinations
These are two different things:
| Platform apps (Intently / admin) | Destinations (each customer) | |
|---|---|---|
| What | OAuth apps Intently uses once (Google login, Microsoft Ads spend sync, etc.) | Your own Pixel / Measurement / Conversions API credentials |
| Who sets up | Intently operators | You, for each ad or analytics account you own |
| Where | Env / admin connectors | Destinations |
| Shared? | One app serves many tenants | No — every Intently account pastes its own IDs and tokens |
So: connecting Meta, TikTok, LinkedIn, Reddit, and so on is pixel / CAPI setup you repeat per customer account, not a one-time Intently developer-app setup.
Where to configure
- Destinations — add destinations and open the Delivery log (
/pixels#delivery-log) - Test conversion — fire a $1 synthetic
purchaseto every enabled server-side destination (no verified origin required) - Platform setup — install the Intently snippet / connectors (separate from destinations)
After you save a destination, use Test conversion. Then confirm in that vendor’s Events / Debug UI when the platform does not validate tokens on accept (especially GA4 and Segment).
Recommended order
- GA4, Meta, TikTok — core analytics + paid social
- LinkedIn — B2B Conversions API
- Reddit — pixel + conversion access token
- X (Twitter) — Pixel ID + Event ID + OAuth 1.0a (large paid social channel)
- Pinterest — when you run that channel
- Segment — CDP fan-out last (not ad bidding)
---
Google Analytics 4
- GA4 Admin → Data streams → your web stream.
- Copy Measurement ID (
G-…). - Same stream → Measurement Protocol API secrets → Create → copy the secret.
| Intently field | Value |
|---|---|
| Measurement ID | G-… |
| API secret | Measurement Protocol secret |
Verify: GA4 DebugView or Realtime. GA4 can return success even with bad credentials — DebugView is the real check.
---
Meta Conversions API
- Events Manager → your Pixel / dataset.
- Copy Pixel ID.
- Settings → Generate access token (needs Business Manager developer privileges).
- Optional: copy a Test event code from Test Events.
| Intently field | Value |
|---|---|
| Pixel ID | Meta pixel ID |
| Access token | CAPI token |
| Test event code | Optional |
Verify: Events Manager → Test Events (highest-signal check of any destination).
---
TikTok Events API
- TikTok Ads Manager → Tools → Events → Web Events.
- Select your pixel → copy Pixel ID.
- Settings → Generate Access Token (Business Center admin).
- Optional: Test Event Code from the Test Event tool.
| Intently field | Value |
|---|---|
| Pixel ID | TikTok pixel code |
| Access token | Events API token |
| Test event code | Optional |
Verify: events.tiktok.com → Test Event. Intently maps purchase → TikTok CompletePayment.
---
LinkedIn Conversions API
From Campaign Manager:
- Partner ID — Measure → Signals Manager → Insight Tag → Manage Insight Tag.
- Access token — Signals Manager → Direct API → Generate access token (shown once; does not expire).
- Conversion rule ID — Measure → Conversion tracking → Create conversion → Conversions API / Direct API → category Purchase. Copy the ID from the rule URL after
/conversions/. Associate at least one campaign when you want attribution in LinkedIn.
| Intently field | Value |
|---|---|
| Partner ID | Insight Tag partner ID |
| Access token | Direct API token |
| Conversion rule ID | Numeric ID or urn:lla:llaPartnerConversion:… |
Verify: Conversion tracking rule status leaves Awaiting activity / Unverified after a successful test fire. Insight Tag “Unverified” is OK for Direct API-only setups.
---
Reddit Conversions API
From Reddit Ads → Events Manager:
- Pixel ID — shown on Configure events tracking (e.g.
a2_…). Prefer Conversions API Only (server-side). - Access token — sidebar Conversions API → Generate Access Token (shown once).
- Optional Test ID — Event testing.
| Intently field | Value |
|---|---|
| Pixel ID | Reddit pixel ID |
| Access token | Conversion access token |
| Test ID | Optional |
Verify: Events Manager overview / Event testing after Test conversion.
---
Pinterest Conversions API
Portals:
- Pinterest Ads Manager
- Getting started with Conversions API (Business Help)
- Track conversions in the API (developer docs)
- Create an advertiser account if you do not have one yet
You need a Pinterest Business account and an advertiser / ad account. A full Developers app is optional if you only send conversions via the Ads Manager conversion token.
Get credentials
- Sign in at ads.pinterest.com with your Business account
- Open Ad account overview → Conversions → Conversions API → Set up API
(path names can vary slightly; look for Conversions / Set up API / Conversion access token)
- Click Generate new token (Conversion access token)
- Copy both:
- Ad account ID — numeric (also visible in the Ads Manager URL:
…/advertiser/5497…/…) - Access token — shown with the account ID; treat it like a password
| Intently field | Value |
|---|---|
| Ad account ID | Numeric Pinterest advertiser / ad account ID |
| Access token | Conversion access token from Set up API |
| Test mode (optional) | Enable in Intently so events use Pinterest’s test flag and show in Events Manager as tests |
- In Intently: Destinations → Add → Pinterest → paste Ad account ID + Access token → save → enable server-side
- Prefer Test mode on while validating, then turn it off for production
Test mode sends ?test=true on the Conversions API request (Pinterest sandbox). Confirm under Ads Manager → Conversions → Test events.
Verify
- Test conversion from Intently
- Confirm in Pinterest Ads Manager → Conversions → Test events (when test mode is on)
Event mapping: Intently maps purchase → Pinterest checkout (Pinterest’s purchase-equivalent CAPI event).
Spend / ROAS: Pinterest spend is CSV import today (pinterest_ads) — see Ad spend & ROAS. Destination delivery is separate from spend sync.
---
Segment
Portals:
- Segment app · Sign up (free workspace is enough to test)
- HTTP API source
- Find your write key
Segment is a CDP destination (fan-out), not an ad bidder. Intently only needs a source Write Key.
Get credentials
- Sign in at app.segment.com (or create a workspace)
- Connections → Sources → Add source
- Choose HTTP API (server / HTTP — not Analytics.js website)
- Name it e.g.
Intently→ create - Open the source → Settings → API Keys (or source overview) → copy the Write Key
| Intently field | Value |
|---|---|
| Write key | Source write key |
- In Intently: Destinations → Add → Segment → paste Write key → save → enable server-side
- Test conversion
Verify (mandatory)
Open Segment → that HTTP API source → Debugger.
Segment (like GA4) may return HTTP 200 even for a bad write key. Intently’s delivery log can show success while nothing lands in Segment — the Debugger is the only proof.
Do not put the write key in public repos. Rotate it in Segment Source settings if it leaks (changing some source settings regenerates the key).
---
X (Twitter) Conversions API
X Ads API web conversions need an Ads Manager Event ID (not your order id), OAuth 1.0a credentials, and an app that is approved for Ads API access.
Prerequisite: Ads API access on your developer app
A normal Development app can sign OAuth requests but still get:
UNAUTHORIZED_CLIENT_APPLICATION — The client application making this request does not have access to Twitter Ads API
Fix:
- Note your App ID (Developer Console → Apps → app details URL, e.g.
…/apps/33320044). - Submit the Ads API Access Form for that App ID.
- Request at least Conversion Only (web conversion endpoints). Standard also works.
- After approval, regenerate the Access Token + Secret, then update Intently.
Approval is on X’s side (often 1–5 business days). Intently cannot bypass this.
Important: App approval alone does not fix existing destinations. Tokens created before Ads API approval keep returning INSUFFICIENT_USER_AUTHORIZED_PERMISSION until you regenerate them and paste the new Access Token + Access Token Secret into Intently. The token user must have AD_MANAGER or ACCOUNT_ADMIN on the ad account that owns the Pixel.
Credentials
- ads.x.com → Tools → Events Manager → add an X Pixel event source if needed → copy Pixel ID.
- Inside that source → Add events → Define with code (Conversion API) → type Purchase → copy Event ID.
- Developer Console → Apps → Keys & Tokens → OAuth 1.0a: Consumer Key (= API Key), Consumer Secret, Access Token, Access Token Secret. The token user needs AD_MANAGER or ACCOUNT_ADMIN on the ad account.
| Intently field | Value |
|---|---|
| Pixel ID | X Pixel event source ID |
| Event ID | Ads Manager conversion Event ID |
| OAuth access token | User access token |
| Consumer key / secret | App consumer keys |
| Access token secret | Matching token secret |
Verify: Test conversion → X Success. Intently sends event_id = your Ads Manager Event ID and conversion_id = the unique hit id for dedup.
---
Attribution signals for destinations
The SDK collects sticky click IDs and cookies (_fbp / _fbc, gclid, ttclid, rdt_cid, li_fat_id, …) so server routes can forward them. See SDK reference. Match scores on Test conversion stay low without real click IDs and PII — that is expected for synthetic tests.
Delivery proof
When conversions dispatch, Intently can attach delivery proof rows (success/fail per destination). Consent-blocked destinations are skipped before send and do not appear as log rows. The on-site Debug overlay can still show · skip chips for those destinations; that is expected and is not the same as a failed delivery log row.
If destinations are configured but proofs are empty, check Destinations → Delivery log, confirm the destination is enabled, and confirm consent allowed the dispatch.