---
title: "Events | Cometly"
description: "Capture every conversion event with Cometly — server-side, cross-domain, and resilient to ad blockers. Built for accurate, modern measurement."
source: "https://www.cometly.com/platform/events"
---

Platform / Events

# Every signup, trial, and Purchase

Cometly auto-captures the events that matter to SaaS, signups, trial starts, paid conversions, upgrades, downgrades, and churn, through native Stripe and CRM integrations, OAuth-first. Add webhooks or server-side calls when you want custom product signals.

Get started

What we capture

### Every SaaS lifecycle event

- Signups & trial starts Captured the moment they hit your auth or pricing page.
- Paid conversions Stripe connects via OAuth; subscription and payment events stream in automatically.
- Upgrades & downgrades Plan changes, seat expansion, MRR movement.
- Churn & winback Cancellations and reactivations tied back to the original ad.

What you actually get

## SaaS events, captured automatically

### Native Stripe events

Trial start, new customer, recurring payment, plan upgrade, plan downgrade, refund, chargeback, churn, all captured automatically through OAuth.

Stripe webhooks live

- subscription.created → trial.start
- invoice.paid → conversion
- subscription.updated → upgrade
- charge.refunded → refund

### CRM lifecycle events

MQL, SQL, demo booked, demo attended, opportunity created, closed-won, pulled from HubSpot or Salesforce in real time.

Lifecycle pipeline via

Lead

1,284

MQL

341

SQL

124

Demo

87

Closed-won

18

### Custom events

Define any event through the Cometly UI or send via the server-side API. Tag with revenue, plan tier, custom properties.

POST /v1/events 200 OK

```
{
  "event": "feature.activated",
  "revenue": 99,
  "plan": "pro",
  "account_id": "acc_8f2"
}
```

### Event deduplication

Browser pixel and server-side events combined cleanly. No double-counting from webhook retries or pixel duplication.

Inbound · 1,432 716 unique

- P Pixel purchase evt_a92 primary
- Stripe purchase evt_a92 deduped
- P Pixel trial.start evt_b13 primary
- Stripe trial.start evt_b13 deduped

### Event match quality

Each event auto-enriched with hashed PII, IP, user agent, and browser ID, so ad platforms get the highest-fidelity signal possible.

Match quality 9.3 / 10

- Email hashed
- Phone hashed
- IP address passed
- User agent passed
- Browser ID captured
- Geo inferred

### OAuth-first setup

Stripe and CRM events flow in through OAuth connections you control. Most teams finish core wiring during onboarding with a rep; custom product milestones can use webhooks or the server-side API when you need them.

OAuth setup ~5 min

- Stripe Connected · just now
- HubSpot Connected · 1m ago
- Salesforce Connect →

Day-1 capture · zero code shipped

Works with your stack

## Capture from every system

Cometly listens to Stripe webhooks, CRM lifecycle changes, browser pixel events, and custom server-side calls, then unifies them into a single event stream tied to attribution.

Your connected stack

- Stripe Subscription + revenue events Live
- HubSpot Lifecycle stage changes Live
- Salesforce Opp + lead status changes Live
- Comet Pixel Browser-side events Live
- Server-side API Custom backend events Live
- Webhooks Pipedrive, Zoho, Calendly, OnceHub Live

Connect once via OAuth. Cometly manages campaigns across every platform.

Custom events for SaaS

## Track any funnel milestone you define

Name product events in Cometly or send them from your backend with one API call. Surface deeper funnel behavior, activation, expansion, and upgrades, then pipe those signals to ad platforms as Conversion API events so campaigns learn on outcomes that match how you actually sell.

Live event stream

Custom events flowing

- Trial activated trial.activated First real product milestone, not just a signup form. 200
- Onboarding completed onboarding.completed Deeper funnel signal before dollars change hands. 200
- Subscription created subscription.created Primary revenue conversion for ad platform optimization. 200
- Seat expansion workspace.seats_added Upsell moments you can target separately from new logos. 200
- Paywall or limit hit billing.paywall_viewed Product-qualified intent without waiting for CRM stages. 200
- Anything in your product your.event_here Name events in Cometly or POST them from your backend. 200

Hashed, deduplicated, routed to Meta, Google, LinkedIn, TikTok, and Microsoft as server-side conversions via Conversion API.

How Conversion API delivery works

FAQ

## Events, Stripe lifecycle, and custom payloads: setup FAQs

Which Stripe signals fire, how dedup works, and when to use server-side vs UI-defined events. Book a call and we'll align events to how you bill and sell.

Talk to sales →

What Stripe events do you capture?

Customer created, subscription created (trial start), invoice paid (new customer + recurring), subscription updated (upgrade/downgrade), invoice refunded, charge disputed, subscription canceled (churn). All deduplicated by Invoice ID.

Can I send custom events?

Yes. Custom events via the server-side API in any language, native integrations, or define them in the Cometly UI without code. Tag with revenue, plan tier, account ID, or any custom property.

How does deduplication work?

Cometly uses Invoice ID for Stripe events and unique transaction IDs for custom events. Browser pixel events and server-side events are deduplicated by event ID, so the same conversion never gets counted twice.

Can I track upsells separately from new customers?

Yes. Trial start, first purchase, upgrade, and recurring payment are all separate event types. Optimize Meta on "first purchase" specifically, not on every Stripe charge, so the algorithm finds buyers, not existing customers paying again.

## Stop wiring webhooks. Start tracking what matters

Every signup, trial, upgrade, expansion, and churn flowing in automatically from Stripe and your CRM — no webhooks to wire, no eng tickets, no missing events.