This is a Svelte wrapper for the Segment.com Analytics.js (Javascript) source (docs).
Table of contents
Install the svelte-segment-events
NPM package:
npm i -D svelte-segment-events
In your Svelte file, or in src/routes/__layout.svelte
if you use SvelteKit, add the following:
<script>
import { SegmentInit } from 'svelte-segment-events';
</script>
<SegmentInit writeKey="YOUR_WRITE_KEY" />
A segmentready
event is fired once the Segment analytics script is ready (see the docs for more on what "ready" means).
You can listen for this event in your component with:
<svelte:window on:segmentready={handler}/>
See the Segment Identify docs for usage details.
In your Svelte file, or in src/routes/__layout.svelte
if you use SvelteKit, add the following:
<script lang="ts">
const identifyUser = () => {
window.analytics.identify("9f75de01-9e1f-452c-9d50-edc19a7f0316", {
name: "Mike Nikles",
twitter: "@mikenikles"
});
};
</script>
<svelte:window on:segmentready={identifyUser}/>
See the Segment Track docs for usage details.
Button
In your Svelte component, import the track
function:
<script>
import { track } from 'svelte-segment-events';
</script>
To track a button click event:
<button use:track="{{ event: 'User Registered' }}">Register</button>
Link
In your Svelte component, import the trackLink
function:
<script>
import { trackLink } from 'svelte-segment-events';
</script>
To track a link:
<a href="/about" use:trackLink="{{ event: 'Navigated to About' }}">About</a>
Form
In your Svelte component, import the trackForm
function:
<script>
import { trackForm } from 'svelte-segment-events';
</script>
To track a form:
<form action="/api/user" method="post" use:trackForm="{{
event: 'signed-up',
properties: { plan: 'Premium' }
}}">
<input name="email" type=""/>
</form>
See the Segment Page docs for usage details.
If you use SvelteKit, you can track page events in the src/routes/__layout.svelte
file:
<script>
import { page } from '$app/stores';
import { SegmentInit } from 'svelte-segment-events';
// Track client-side navigation events
$: if (typeof window !== 'undefined' && window.analytics && $page.path) {
window.analytics.page();
}
</script>
<SegmentInit writeKey="YOUR_WRITE_KEY" />
<slot />
See the Segment Group docs for usage details.
You can use window.analytics.group()
calls in any of your click-handlers.
See the Segment Alias docs for usage details.
You can use window.analytics.alias()
calls in any of your click-handlers.
To contribute to this project, either use Gitpod or run the relevant commands in .gitpod.yml
locally to configure your environment.
Please always start with an issue first to discuss your planned contribution 🙏.
To release the package to the NPM registry, commit all changes to Git, run the following commands and follow the instructions in the terminal:
npm version [major | minor | patch]
npm run package