Ads Platform
Launch and manage ad campaigns, pull cross-platform attribution, and fire pixel events without leaving Callix.
In progress
Launch and manage ad campaigns without leaving Callix. This is under active development — request/response shapes are likely to change before it's finalized.
Endpoints
| POST | /experimental/campaigns | Launch a new ad campaign |
| GET | /experimental/campaigns | List campaigns |
| GET | /experimental/campaigns/:id | Fetch a single campaign, with live stats |
| PATCH | /experimental/campaigns/:id | Update budget or pause/resume/archive a campaign |
| GET | /experimental/attribution | Aggregated spend/lead/revenue report across campaigns |
| GET | /experimental/attribution/:prospectId | Full attribution path for a single prospect |
| POST | /experimental/pixel-events | Fire a pixel event to all connected ad destinations |
| GET | /experimental/pixel-events | List recently fired pixel events |
Campaigns
Launch and manage ad campaigns on connected platforms (Meta, Google, TikTok) directly from Callix, targeting audiences built from your own Callix segments and conversion data instead of hand-building audiences in each ad platform.
POST /experimental/campaigns
{
"name": "Q3 Retargeting — Warm Leads",
"platform": "meta",
"adAccountId": "act_123456789",
"objective": "conversions",
"dailyBudget": 150,
"audience": {
"source": "callix_segment",
"segmentId": "k9a...",
"lookalikePercent": 3
},
"conversionEventId": "k17...",
"creative": {
"headline": "Stop losing warm leads",
"primaryText": "You booked a call. Here's why you should show up.",
"destinationUrl": "https://yoursite.com/book-a-call"
},
"status": "paused"
}namestringCampaign nameplatformstringmeta, google, or tiktokadAccountIdstringThe connected ad account to launch underobjectivestringconversions, traffic, leads, or awarenessdailyBudgetnumberDollars/dayaudienceobjectSee Audience belowconversionEventIdstring?A Conversion Event config id to optimize delivery towardcreativeobjectheadline, primaryText, destinationUrlstatusstring?active or paused at creation — defaults to pausedReturns 201 with the created campaign, including its Callix id and (once synced to the platform) a platformCampaignId.
Audience
source(string, required) —callix_segment(built from your Prospects/Events data) orcustom_audience(uploaded list)segmentId(string?) — required when source iscallix_segmentlookalikePercent(number?) — 1-10, expands the segment into a lookalike audience on the destination platformcustomAudienceId(string?) — required when source iscustom_audience
GET /experimental/campaigns
Query params: platform, status (active | paused | archived). Returns a paginated list of campaigns for your account.
GET /experimental/campaigns/:id
Returns the campaign config plus live stats synced from the platform: spend, impressions, clicks, conversions, cpa.
{
"data": {
"_id": "k88...",
"name": "Q3 Retargeting — Warm Leads",
"platform": "meta",
"status": "active",
"dailyBudget": 150,
"stats": { "spend": 842.13, "impressions": 118422, "clicks": 1904, "conversions": 37, "cpa": 22.76 }
}
}PATCH /experimental/campaigns/:id
Partial update — change dailyBudget, or transition status between active, paused, and archived.
{ "status": "paused" }Attribution
Attribute prospects, calls, and revenue back to the campaign, ad, and platform that produced them — stitched from click ids (gclid/fbclid/ttclid) and UTM params captured on your Prospects, joined against Conversion Events fired for that prospect.
GET /experimental/attribution
Query params: campaignId, platform, from, to, groupBy (campaign | platform | day, defaults to campaign). Returns aggregated performance and revenue per group.
{
"data": [
{
"campaignId": "k88...",
"campaignName": "Q3 Retargeting — Warm Leads",
"platform": "meta",
"spend": 842.13,
"leads": 61,
"callsBooked": 24,
"callsShowed": 19,
"revenue": 3800,
"roas": 4.51
}
]
}GET /experimental/attribution/:prospectId
Returns the full attribution path for one prospect: first-touch and last-touch campaigns, every touchpoint in between, and any revenue ultimately tied to them.
{
"data": {
"prospectId": "k57...",
"firstTouch": { "platform": "meta", "campaignId": "k88...", "timestamp": 1745200000000 },
"lastTouch": { "platform": "google", "campaignId": "k91...", "timestamp": 1745800000000 },
"touchpoints": [
{ "platform": "meta", "campaignId": "k88...", "clickId": "fb.1.169...", "timestamp": 1745200000000 },
{ "platform": "google", "campaignId": "k91...", "clickId": "Cj0KCQ...", "timestamp": 1745800000000 }
],
"revenue": 250
}
}Pixel Events
A single server-side pixel — fire one event to Callix and it fans out to every ad destination connected to your account (Meta CAPI, Google Enhanced Conversions, TikTok Events API), instead of wiring up each platform's pixel separately.
POST /experimental/pixel-events
{
"event": "Lead",
"prospectId": "k57...",
"email": "jane@acme.co",
"clickIds": { "fbclid": "fb.1.169...", "gclid": "Cj0KCQ..." },
"value": 49,
"currency": "USD",
"sourceUrl": "https://yoursite.com/book-a-call"
}eventstringPageView, Lead, Schedule, Purchase, or CompleteRegistrationprospectIdstring?Links the event to an existing prospect for attributionemailstring?Used to match/create a prospect when prospectId is omittedphonestring?Used to match/create a prospect when prospectId is omittedclickIdsobject?fbclid, gclid, ttclid — captured from the visitor's landing URLvaluenumber?Required for Purchasecurrencystring?Required for PurchasesourceUrlstring?Page the event fired fromResponse
{ "data": { "eventId": "k12...", "dispatchedTo": ["meta", "google"] } }dispatchedTo lists which connected destinations the event was forwarded to; a destination is skipped if it isn't connected or the event type isn't relevant to it.
GET /experimental/pixel-events
Query params: prospectId, event, from, to. Returns recently fired pixel events with per-destination dispatch status.
{
"data": [
{ "eventId": "k12...", "event": "Lead", "prospectId": "k57...", "dispatchedTo": ["meta", "google"], "timestamp": 1745800000000 }
]
}