Product Signals: Using Custom Events in Unify
Last updated: April 29, 2026
What are custom events?
Custom events are actions your users take inside your product or on your website that you track and send to Unify. When an event fires — a user hitting a paywall, completing onboarding, inviting a teammate — Unify captures it and makes it available to trigger Plays, build Audiences, and surface buying signals for your sales team.
Custom events work through three ingestion methods:
PostHog integration (recommended, ~10-minute setup)
Segment forwarding
Unify JS/React SDK (for teams without PostHog or Segment)
How to set up custom events
Via PostHog
In Unify, go to Settings → Integrations → Web & Product Data.
Click "Connect with PostHog."
In PostHog, navigate to Data & Destinations, find the Unify destination, copy the routing key from Unify, and paste it in. Click Create and Enable.
Use Event Matcher in PostHog to select the specific events you want to forward to Unify (e.g.,
paywall_hit,upsell_flow_started,feature_activated). Add filters to exclude internal users. Start with 3–4 high-signal events.Events start flowing within ~5 minutes. Use the Test Function button in PostHog (green icon = success) to confirm.
Open the Event Console in Unify (Data → Event Console) to confirm events are flowing and attached to the right contacts.
Via Segment
If your team uses Segment instead of PostHog, events can be forwarded directly to Unify via the Segment integration — no new code required beyond enabling the forwarding destination.
Using custom events in Plays and Audiences
Once events are flowing, you can use them in two places:
In Plays: In the Play builder, select "Custom Event" as your trigger. Use Filters V2 to filter on event properties (e.g.,
plan = free,event = paywall_hit). When the condition is met, Unify automatically enrolls the contact, kicks off a sequence, or creates a rep task.
In Audiences: In the Audience builder, add a condition → Website Activity → Custom Event → enter the event name. This creates a reusable segment for prospecting, campaigns, or sequences.
Inspiration: Custom events by use case
PLG / Free Trial
Goal: Identify which free users are ready to convert or champion an enterprise sale.
Signal | What it means |
User hits free-tier credit/token limit | Bumping against the paywall — highest-intent conversion signal |
User completes X key actions (e.g., 10th video, 5th workflow) | Power user showing deep engagement |
User invites a teammate | Product gaining traction in the org, team plan opportunity |
User connects a third-party integration | Investing in the product, building it into their workflow |
Free trial user visits pricing page | Actively evaluating, comparing plans |
User completes onboarding | Engaged enough to finish setup, warm window |
User enters a credit card | Strongest buying signal available |
User logs in 5+ times | Habitual usage, dependency forming |
Sales-Led / Website Intent
Goal: Get person-level understanding of who is on your website and what they're looking for.
Signal | What it means |
Visitor drops off mid-form fill | Had intent but didn't complete — recoverable pipeline |
Visitor downloads a whitepaper or signs up for newsletter | Researching the space, early-stage intent |
Specific person visits pricing page | Evaluating seriously — person-level, not just company |
Visitor clicks on a specific pricing plan | Budget signal — you know which tier they're considering |
Visitor engages with product tour | Self-educating, warm lead |
Visitor views case study or developer docs | Deep research, high buying intent |
Expansion / Upsell
Goal: Know when existing customers are showing signals for a bigger plan.
Signal | What it means |
Account adds 5+ seats | Growing usage, upsell timing |
User visits Usage or Billing page frequently | Evaluating whether their current plan is enough |
Daily login streak (10+ days) | Deeply embedded — retention and expansion signal |
User clicks "Get Help" repeatedly | Struggling but invested, potential for white-glove upsell |
Multiple in-app purchases | Revenue expansion happening organically |
Common pitfalls
Play triggers run on ~15-minute polling, not real-time. Additionally, audience/criteria updates can take 15–30 minutes to fully propagate, and delays may be longer after large changes or bulk enrollments. This means the total delay from when someone enters an Audience to when a Play enrolls them can be 30–45 minutes under normal conditions.
Identity resolution requires
identify()calls. Anonymous events won't resolve to contacts unless your instrumentation includes anidentify()call (e.g., on login). Confirm this during setup.One ingestion source per event type. Avoid forwarding the same event from both Segment and PostHog — this causes duplicates.
Amplitude, Mixpanel, and Pendo are not supported at GA. Customers on those tools should use the Unify intent client instead.
FAQs
Does this replace PostHog or Segment as my analytics tool?
No. The integration forwards a copy of the events you select — PostHog or Segment remains your product analytics source of truth. Unify uses those events to power Plays and Audiences.
How long until events start flowing after setup?
Client-side events typically appear in the Event Console within a few minutes. If events aren't showing up after 15–20 minutes, check the Event Console for attribution issues or misconfigured event names.
Do Plays trigger in real time?
Plays trigger within 15 minutes of the event happening.
My customer uses Amplitude or Mixpanel. Can they use this?
Not currently. Amplitude, Mixpanel, and Pendo are on the roadmap but not supported at GA. Log the request in Pylon and recommend they wait for native integrations.