Tier 1 — Push Data In

Conversion Events

Create, read, and update Conversion Event configs — the same trigger → event type → logic/value → destination configuration built from the Conversion Event Builder in the Callix dashboard (Settings → Conversions).

A Conversion Event config is evaluated and sent by Callix's dispatcher whenever one of its triggers fires (a call gets analyzed, a payment lands, a Callix Event matches, or an inbound webhook/API call arrives) — or you can fire one directly with POST /conversion-events/:id/fire below, useful if you're running your own scoring/logic outside Callix and just want Callix to evaluate the rule and send. Destination support: Google Ads is live; Meta, Whop, and Custom webhook destinations are still being built and currently no-op (the fire attempt is logged as skipped, never silently dropped).

Endpoints

POST/conversion-eventsCreate a conversion event config
GET/conversion-events/:idFetch a single conversion event config
PATCH/conversion-events/:idPartially update a conversion event config
POST/conversion-events/:id/fireManually fire a conversion event with your own context data

POST /conversion-events

Creates a new conversion event config. Returns 201 with the created record.

Request body

json
{
  "name": "High-Intent Lead",
  "description": "Fires when a call scores high and the payment clears $200+",
  "triggers": ["call_analyzed", "payment_received"],
  "eventType": "purchase",
  "rules": [
    { "field": "lead_quality", "comparator": "gt", "threshold": 70, "value": 50 },
    { "field": "payment_amount", "comparator": "gt", "threshold": 200, "value": 100 }
  ],
  "destinationPlatform": "meta",
  "destinationMetaPixels": [
    { "integrationId": "k17...", "adAccountId": "act_123456789", "pixelId": "123456789012345" }
  ]
}
namestringConversion event name
descriptionstring?Optional description
triggersstring[]call_analyzed, payment_received, webhook, or event_<callixEventTypeId> — fires on ANY selected trigger
eventTypestringschedule, purchase, lead, subscribe_start_trial, or custom
customEventTypeNamestring?Required when eventType is custom
rulesarrayAt least one if/then rule — see Rules below
destinationPlatformstringmeta, google, whop, or custom
destinationMetaPixelsarray?Required when destinationPlatform is meta — see Destination below
destinationGoogleAdAccountIdstring?Used when destinationPlatform is google
destinationWhopBusinessIdsstring[]?Used when destinationPlatform is whop
destinationCustomUrlstring?Used when destinationPlatform is custom

Rules

Each rule is an if/then — the first rule that matches at send time sets the conversion's reported value.

fieldstringlead_quality, call_outcome, payment_amount, payment_processor, payment_product, or always
comparatorstring?gt or lt — used with lead_quality / payment_amount
thresholdnumber?Percentage (lead_quality) or dollar amount (payment_amount) compared against
outcomeValuestring?Call stage slug — used with call_outcome
paymentMatchValuestring?Processor name (stripe, whop, ...) or product id/name — used with payment_processor / payment_product
valueModestring?fixed (default) or payment_formula
valueMultipliernumber?payment_formula mode — reported value = payment amount × multiplier + adjustment
valueAdjustmentnumber?payment_formula mode — flat dollar amount added/subtracted
valuenumberFixed dollar value reported when this rule matches (ignored in payment_formula mode)

lead_quality/call_outcome only make sense when call_analyzed is one of your triggers; payment_amount/payment_processor/payment_product only make sense when payment_received is one of your triggers — same restriction the dashboard builder enforces.

Destination

Exactly one destination platform per config:

  • metadestinationMetaPixels: array of { integrationId, adAccountId, pixelId }. Multi-select — a config can report to more than one pixel.
  • googledestinationGoogleAdAccountId: string (no per-ad-account/pixel concept yet — reports via your account-wide feed).
  • whopdestinationWhopBusinessIds: string array of connected Whop business ids. Multi-select.
  • customdestinationCustomUrl: a webhook URL.

GET /conversion-events/:id

Returns the full stored config for the given id, scoped to your account. 404 if it doesn't exist or belongs to another account.

PATCH /conversion-events/:id

Partial update — only include the fields you want to change. Under the hood this reads the existing config and merges your fields on top of it before saving, so omitted fields are left untouched.

json
{
  "destinationMetaPixels": [
    { "integrationId": "k17...", "adAccountId": "act_987654321", "pixelId": "999999999999999" }
  ]
}

POST /conversion-events/:id/fire

Manually fires a specific conversion event: evaluates its rules against the context you provide, computes a value if a rule matches, and sends to its configured destination — the same pipeline the 4 automatic triggers use, but invoked directly by you instead of one of Callix's own trigger points. Useful when you're running your own lead-scoring or payment processing outside Callix and just want Callix to evaluate the rule and report the conversion.

Request body

json
{
  "prospectId": "k57...",
  "paymentAmount": 250,
  "paymentProcessor": "stripe",
  "paymentProduct": "pro-plan"
}
prospectIdstring?Required for Google Ads destinations — attribution is resolved from the prospect's stored gclid. Ignored for rule matching itself.
emailstring?Not currently matched against any rule field — reserved for future use
phonestring?Not currently matched against any rule field — reserved for future use
leadQualityScorenumber?Matched against lead_quality rules
callOutcomestring?Matched against call_outcome rules
paymentAmountnumber?Matched against payment_amount rules; also the base value in payment_formula valueMode
paymentProcessorstring?Matched against payment_processor rules
paymentProductstring?Matched against payment_product rules

Response

json
{ "data": { "status": "sent", "value": 100 } }

status is one of sent, failed, or skipped. skipped covers both "no rule matched your provided context" and "destination not yet implemented" (Meta/Whop/Custom today) — check message for which. value is only present when a rule matched.