Integrations
Integrations bring external data into Apex — ad spend from your campaigns, deals from your CRM, payments from Stripe, and behavior data from analytics tools. Once connected, Apex uses this data for attribution, revenue matching, and experiment analysis.
Outcomes, methods, and integrations
As of the Integration UX Foundation Build (May 2026), Apex models integrations in three layers:
| Layer | Description | Examples |
|---|---|---|
| Outcome | What you want Apex to do | Connect revenue, Connect ad platform, Track conversions |
| Method | How that outcome can be satisfied | Stripe OAuth, Web SDK, Server Events API |
| Integration | The specific platform/network behind a method | Stripe, HubSpot, Meta Ads |
When you click "Connect revenue" anywhere in the dashboard, Apex opens a drawer with the right method recommended for your business — Stripe OAuth for most B2B SaaS workspaces, the Web SDK for e-commerce stores where the conversion happens on-page, the Mobile SDK if your app is already firing events. Other methods are one click away under "Other ways."
The outcomes you need are determined by your vertical (B2B SaaS, e-commerce, marketplace, agency, other). Every workspace gets a recommended set of outcomes; the dashboard checklist tracks which ones have data flowing.
See the registry source for the full Outcome × Method matrix.
How integrations work
Every integration follows the same pattern:
Authenticate
Most integrations use OAuth 2.0. You click Connect, authorize access on the platform's consent screen, and Apex stores the tokens securely. Microsoft Clarity uses an API key instead.
Select an account
For platforms with multiple accounts (ad accounts, properties, portals), you pick which one to sync.
Sync data
Apex pulls metrics for the configured date range. Syncs run automatically on a schedule and can be triggered manually from the Integrations page.
Use the data
Synced data feeds into the dashboard, attribution engine, and experiment analysis. Ad spend appears in channel breakdowns. CRM deals link to leads. Payments enable revenue attribution.
Integration categories
| Category | Integrations | What they provide |
|---|---|---|
| Ads | Google Ads, LinkedIn Ads, Meta Ads | Campaign spend, impressions, clicks, conversions |
| CRM | HubSpot | Deal pipeline, contact data, revenue attribution |
| Payments | Stripe | Charges, refunds, subscriptions, actual revenue |
| Analytics | Google Analytics, Microsoft Clarity | Sessions, pageviews, engagement, heatmaps |
OAuth Flow
For OAuth integrations, the flow is:
- User clicks Connect on the Integrations page
- Apex redirects to the platform's authorization screen
- User grants access and is redirected back to
/api/connectors/{type}/callback - Apex exchanges the authorization code for access and refresh tokens
- Tokens are stored encrypted in the workspace's integration config
Apex handles token refresh automatically. When an access token expires, the framework refreshes it using the stored refresh token before the next sync.
Info
Integrations are read-only by default. Syncing a platform only pulls data into Apex — it never writes back. Sending data out to a platform is a separate, explicit opt-in; see Outbound writes below.
Outbound writes
Two features send data from Apex to a connected ad platform. Neither is on by default. You turn each on per platform, from that platform's page under Integrations or from Set up Apex → Attribution, and you acknowledge the legal basis for the transfer before anything sends.
| Feature | What it sends | Why |
|---|---|---|
| Conversions | Your sales and the other events the platform can learn from, with customer identifiers hashed SHA-256 before they leave Apex | Lets the platform attribute and optimize against conversions its own pixel missed |
| Buyer lists | Membership of a Segment you choose, as SHA-256 hashed identifiers | Builds an audience on the ad platform for targeting or suppression |
Conversions go to Meta, Google, LinkedIn, TikTok, Snapchat, Reddit, and Microsoft Ads. Buyer lists go to Meta, Google, and LinkedIn. Every outbound send is written to an egress audit log you can review, and outbound sends are metered as activations on your bill.
What each platform receives
Each ad platform's page lists what Apex sends it, kind by kind, with this week's count and a switch for each:
| Kind | Sent when |
|---|---|
| Sales | A revenue connection such as Stripe or Shopify, or a purchase event, records one. Renewals count as sales. |
| New subscriptions | Stripe reports a new subscription on a subscription business. Google, LinkedIn, Meta, TikTok, Microsoft, and Snap each get it as its own conversion. |
| Leads | A form on your site is submitted. |
| Leads that became customers | A lead Apex already sent later makes a purchase. Needs both form leads and sales. |
| App installs | The Apex mobile SDK reports an install. See Mobile Measurement. |
| Sign-ups, checkouts, carts, bookings, quote requests, contacts | You start the send and pick which of your events stands for it. |
Each kind goes under the platform's own name for it (a sign-up reaches Meta as CompleteRegistration). Below the list, Apex shows the kinds the platform could use that the workspace doesn't send yet, with the ones that fit its business first and a Set up button on each.
On Google Ads and LinkedIn, a conversion has to exist in the ad account before it can count anything. Apex proposes one per kind and makes them for you.
Testing a conversion
Each kind that's sending has a Test button that sends one made-up conversion of that kind and shows what the platform said back. Meta, TikTok, Google, Snapchat, and Reddit keep tests out of your reporting. LinkedIn and Microsoft have no test mode, so a test there arrives as a real conversion from a made-up person. Apex hides the per-kind test on those two and says so under the connection test.
When a send is turned down
The receipt for every send shows the platform's own reason when it refuses one. Google sometimes refuses conversions for a few minutes while it finishes setting up a new conversion action. Apex keeps those and sends them to Google again on its own.
Warning
Outbound writes transfer customer data to a third party. Turn them on only for events and Segments where you have a lawful basis to share that data, and check your own privacy policy and consent flows first.
Sync Process
Each sync pulls data for a date range (default: last 30 days). The sync process:
- Checks if the access token needs refreshing
- Calls the platform API to fetch metrics
- Normalizes the data into Apex's unified format
- Stores the results and updates the sync timestamp
Syncs include automatic retry with exponential backoff for transient errors. If a sync fails (expired token, revoked access, API error), the error is classified and displayed on the Integrations page.
Ad platforms are pulled every hour. Each hourly pull re-reads the last three days from the last good pull, because platforms keep revising recent spend and conversions, and once a day Apex re-reads the full 30 days. A connection with nothing to pull is skipped.
When a connection is made or stops working
Every owner and admin of the workspace gets a letter when a connection goes live, saying what it lets Apex do. If a connection stops working because its sign-in expired or the platform removed access, every admin gets a letter saying what stopped and how to fix it, then one reminder three days later if it's still off. Signing in again from the connection's page fixes it, and nothing you set up there is lost.
Data Normalization
Each integration normalizes platform-specific data into a common structure:
- Channel metrics — visitors, leads, conversion rate, cost, cost per lead
- Raw data — platform-specific rows preserved for detailed analysis
- Deals (CRM) — amount, stage, close date, contact email
- Charges (Payments) — amount, currency, customer email, timestamp
This normalization enables cross-channel comparison and unified attribution.
Tip
Connect your ad platforms and payment provider together for the most valuable insight: which campaigns actually drive revenue, not just clicks.
Next Steps
- Connect your first integration — step-by-step walkthrough
- Browse individual integration guides for platform-specific details