Reference

What each SDK supports

Which capabilities you get from each SDK that can send to Sequential, in one table, with every partial and missing cell explained.

On this page

Sequential accepts data from its own SDK and from several vendor SDKs you may already run. Each one sends what its maker designed it to send, so what you can do in Sequential depends on the SDK. Yes means the capability works as you would expect. Partial means it works with a limit, explained in that SDK’s notes below. No means Sequential does not get it from that SDK.

Capability Sequential SDK PostHog (web) PostHog (mobile) Mixpanel Amplitude Pendo Smartlook
Custom events Yes Yes Yes Partial Yes Partial Yes
Page / screen views Yes Yes Yes Yes Partial Yes Yes
Autocaptured clicks & forms Yes Yes Partial Yes Yes Yes Partial
Identify (user id) Yes Yes Yes Yes Yes Yes Yes
User properties Partial Partial Partial No Partial Yes Yes
Groups / accounts Yes No No No No Yes No
Errors Partial Partial Partial No No No Yes
Session replay Yes Partial Yes Partial Partial Partial Yes
DevTools: errors, console, network, performance Yes Yes Partial Yes Yes Yes Yes
Feature flags, surveys, experiments No No No No No No No
Server-side SDKs No No No No No No No

One boundary applies to all of them: browser SDKs and PostHog’s mobile SDKs only. Server-side SDKs (posthog-node, mixpanel-python, Segment and similar) are rejected as bots by design, and there is no server-side ingestion API yet.

The notes for each SDK follow. The same notes appear on that SDK’s install page.

Sequential SDK

Install: Sequential SDK.

What Sequential does with Sequential SDK traffic
CapabilitySupportNotes
Custom eventsYessequential.capture(name, props); properties are kept. Names starting with $ are reserved for Sequential’s own events: capture() throws on them.
Page / screen viewsYes$pageview on load, and on SPA navigation (pushState, replaceState, popstate) only when the page changes. An in-page #anchor is not a new page; a #/ or #!/ hash route is.
Autocaptured clicks & formsYesClicks on interactive elements and form submits; never input values. Rage clicks and dead clicks too. Click text is redacted, not just truncated, and anything inside data-sq-mask contributes no text or data-* values. Autocapture waits for the project’s config and stays off if it cannot load it.
Identify (user id)Yessequential.identify(id). The previous anonymous id is sent as $anon_distinct_id, but events from before identify are not yet merged into the identified user.
User propertiesPartialregister() properties ride on every later event, but are not stored as user properties.
Groups / accountsYessequential.account(id, traits): the account id on every later event, and its traits in an $account event.
ErrorsPartialsequential.captureException(err) is stored as an error. Uncaught errors and unhandled rejections are not captured, so call captureException where you handle them.
Session replayYesThe same tag records sessions. The SDK starts Sequential’s recorder itself, with the replay key from the project’s config, so there is no second tag and no second key. Masking comes from the project’s recording settings.
DevTools: errors, console, network, performanceYesCaptured by the recorder the SDK starts, on the same terms as every other source, subject to the project’s DevTools settings.
Feature flags, surveys, experimentsNoNone, deliberately: flags, surveys and experiments need server-side products Sequential does not have, which is also why the SDK is a fraction of a vendor SDK’s size.
Server-side SDKsNoBrowser only. Server-side SDK user agents are rejected as bots (403).

PostHog (web)

Install: PostHog (web).

What Sequential does with PostHog (web) traffic
CapabilitySupportNotes
Custom eventsYesposthog.capture(name, props); properties are kept.
Page / screen viewsYes$pageview, including SPA navigation.
Autocaptured clicks & formsYesClicks, form submits, rage clicks and dead clicks.
Identify (user id)Yesposthog.identify(id); the user id comes from distinct_id.
User propertiesPartial$set / $set_once are kept on the event but not stored as user properties.
Groups / accountsNoposthog.group() is accepted; $groups stays an event property, no accounts.
ErrorsPartial$exception events sent with captureException are kept; exception autocapture is switched off by remote config.
Session replayPartialPostHog's own web recording is off (remote config). Add Sequential's recorder: it joins PostHog's session id automatically.
DevTools: errors, console, network, performanceYesCaptured by Sequential's recorder once the session-replay line is on the page. captureException events and $web_vitals also show in the replay's DevTools drawer.
Feature flags, surveys, experimentsNoRemote config turns flags, surveys and heatmaps off; /flags and /decide have no route. Flags evaluate as off.
Server-side SDKsNoBrowser and PostHog mobile SDKs only. Server-side SDK user agents are rejected as bots (403).

PostHog (mobile)

Install: PostHog (mobile).

What Sequential does with PostHog (mobile) traffic
CapabilitySupportNotes
Custom eventsYesSame wire protocol as web (/batch, gzipped).
Page / screen viewsYes$screen events.
Autocaptured clicks & formsPartialWhatever the SDK's own autocapture sends as $autocapture is classified; mobile autocapture varies by platform.
Identify (user id)YesTop-level distinct_id.
User propertiesPartialAs on web: kept on the event, not stored as user properties.
Groups / accountsNoAs on web.
ErrorsPartialManually captured $exception events only.
Session replayYesPostHog's mobile session replay (iOS, Android) is stored as sent and played in Sequential. iOS replay is tested with a real app on the iOS simulator. Android replay is not tested with a real app yet. Masking is set in the SDK on the device. React Native and Flutter are accepted but unverified.
DevTools: errors, console, network, performancePartialNo JavaScript errors or page performance. Console logs only when the project records message text and the app sets iOS captureLogs (Android logcat is on by default). Network timing: iOS URLSession by default, Android needs PostHogOkHttpInterceptor. Flutter: none. See Mobile apps.
Feature flags, surveys, experimentsNoAs on web.
Server-side SDKsNoBrowser and PostHog mobile SDKs only. Server-side SDK user agents are rejected as bots (403).

Mixpanel

Install: Mixpanel.

What Sequential does with Mixpanel traffic
CapabilitySupportNotes
Custom eventsPartialmixpanel.track(name, props); properties whose names start with $ are dropped (except element properties).
Page / screen viewsYestrack_pageview / $mp_web_page_view.
Autocaptured clicks & formsYesMixpanel's autocapture clicks, submits, rage and dead clicks.
Identify (user id)Yesmixpanel.identify(id).
User propertiesNomixpanel.people.set from the browser SDK does not land today: its form-encoded /engage request is refused. Tracked as a known issue.
Groups / accountsNoGroup profiles are not supported. A /groups update is stored as user properties on a user with no id.
ErrorsNoNo error events; track them as custom events.
Session replayPartialMixpanel's own recording is not accepted (/record has no route). Add Sequential's recorder: it joins Mixpanel's session id automatically.
DevTools: errors, console, network, performanceYesCaptured by Sequential's recorder once the session-replay line is on the page.
Feature flags, surveys, experimentsNoNo /decide or flags route.
Server-side SDKsNoBrowser and PostHog mobile SDKs only. Server-side SDK user agents are rejected as bots (403).

Amplitude

Install: Amplitude.

What Sequential does with Amplitude traffic
CapabilitySupportNotes
Custom eventsYesamplitude.track(name, props) via serverUrl. Leave batching (useBatch) off: the batch endpoint does not reach Amplitude handling today.
Page / screen viewsPartial[Amplitude] Page Viewed is a page view, but the URL is kept only as an event property, not as the event's URL.
Autocaptured clicks & formsYesElement clicks and form submits from autocapture.
Identify (user id)Yesamplitude.setUserId(id).
User propertiesPartialIdentify with set / setOnce is stored; add, append, unset are ignored.
Groups / accountsNosetGroup and groupIdentify data is not read and is dropped; no accounts.
ErrorsNoNo error events; track them as custom events.
Session replayPartialAmplitude's own replay plugin sends to Amplitude, not here. Add Sequential's recorder: it joins Amplitude's session id automatically.
DevTools: errors, console, network, performanceYesCaptured by Sequential's recorder once the session-replay line is on the page.
Feature flags, surveys, experimentsNoAmplitude Experiment is not supported.
Server-side SDKsNoBrowser and PostHog mobile SDKs only. Server-side SDK user agents are rejected as bots (403).

Pendo

Install: Pendo.

What Sequential does with Pendo traffic
CapabilitySupportNotes
Custom eventsPartialpendo.track(name, props) arrives under your event name, but its properties are stored as user properties, not on the event.
Page / screen viewsYesPendo's load events.
Autocaptured clicks & formsYesClicks, with a CSS selector.
Identify (user id)YesThe visitor.id you pass to pendo.initialize.
User propertiesYesVisitor metadata.
Groups / accountsYesFills accounts: account.id and account metadata.
ErrorsNoNo error events.
Session replayPartialPendo's own replay is not accepted. Add Sequential's recorder: it joins Pendo's session id automatically.
DevTools: errors, console, network, performanceYesCaptured by Sequential's recorder once the session-replay line is on the page.
Feature flags, surveys, experimentsNoGuides are answered with an empty set, so no guides show while the agent points here.
Server-side SDKsNoBrowser and PostHog mobile SDKs only. Server-side SDK user agents are rejected as bots (403).

Smartlook

Install: Smartlook.

What Sequential does with Smartlook traffic
CapabilitySupportNotes
Custom eventsYessmartlook('track', name, props).
Page / screen viewsYesPage loads and in-page (pushState) navigation, plus navigation(path).
Autocaptured clicks & formsPartialClicks with a CSS selector and element text. No form, focus, input or network events.
Identify (user id)Yessmartlook('identify', id, props).
User propertiesYesidentify props and smartlook('properties', …).
Groups / accountsNoSmartlook has no groups.
ErrorsYesUncaught errors, unhandled rejections and smartlook('error', …).
Session replayYesSmartlook's recorder is replaced: Sequential's recorder starts automatically and shares the Smartlook session id. Masking comes from the project's recording settings, not from record().
DevTools: errors, console, network, performanceYesCaptured by the recorder the Smartlook script starts. smartlook('error', …) shows as an error. Smartlook's interceptors and advancedNetwork options do not apply to it.
Feature flags, surveys, experimentsNoSmartlook has none.
Server-side SDKsNoWeb only. Smartlook mobile SDK traffic is answered and dropped.