Integrating

Installation

To facilitate installation of Seeka, your application will need to provide a way for your customers to provide their Seeka Organisation ID, Public key and Instance ID which will allow you to initialise the Seeka SDKs and APIs for that customer.

When providing installation of Seeka to your customers, any one of the installation methods in our developer docs can be implemented.

See available platforms for a list of platforms with native integrations.

If your platform is not available the script tag installation method can be used.

Multi-instance installs

If your platform serves multiple brands, organisers, or vendors within a single site, Seeka supports running multiple SDK instances so each brand's tracking is isolated.

A common scenario: you use Seeka for your own platform tracking, and some of your customers also use Seeka for their own tracking. Both need to run simultaneously on the same page without interfering with each other.

Example: Ticketing marketplace

A ticketing platform (TicketCo) uses Seeka to track their own marketing performance across Meta, GA4, and TikTok. Event organisers who list on TicketCo may also have their own Seeka accounts with their own ad pixels configured.

When a user browses TicketCo:

  1. TicketCo's Seeka instance is always active - tracking page views, searches, and purchases to TicketCo's own Meta Pixel, GA4 property, etc.
  2. When the user views Organiser A's event page, Organiser A's Seeka instance activates - tracking the content view to Organiser A's own Meta Pixel, GA4 property, etc.
  3. When the user navigates to Organiser B's event, Organiser A's instance is destroyed and Organiser B's instance activates.
  4. TicketCo's instance runs throughout - every event is tracked to both TicketCo and the active organiser.

The user's identity (person ID) is shared across all instances, so TicketCo and the organiser both see the same user journey without double-counting.

How to implement this

The approach depends on whether your platform is a single page application (SPA) or uses full page navigation.

Static

For platforms where the set of brands is known at page load - such as a site with two co-branded experiences - all instances are declared up-front and loaded together.

Each brand provides their own Organisation ID, Instance ID, and Public key. Your application passes all instances to the SDK at initialisation time.

// Platform's own instance + one customer instance, both loaded at page load
<SeekaProvider instances={[
    { org: "platform-org-id", id: "platform-instance-id", key: "platform-public-key" },
    { org: "customer-org-id", id: "customer-instance-id", key: "customer-public-key" },
]}>
    <App />
</SeekaProvider>

Events fired via Converge.track fan out to all instances. To fire to a specific instance, use Converge.instances["instance-id"].

See static multi-instance configuration for full setup guides (script tag and NPM).

Dynamic

For single page applications where brands activate and deactivate as users navigate - such as ticketing marketplaces, multi-vendor stores, or aggregator platforms - instances are created and destroyed at runtime.

Your application creates a dynamic instance when a user navigates to a brand's content, and destroys it when they leave. Each instance runs in an isolated iframe with full vendor script cleanup on destruction.

// Platform's own instance is always active via SeekaProvider
<SeekaProvider org="platform-org-id" id="platform-instance-id" publicKey="platform-public-key">
    <Router />
</SeekaProvider>

// On a customer's page, a dynamic instance activates for that customer
function CustomerEventPage({ customer }) {
    const masterSdk = useSeekaConverge();

    const { instance, ready } = useSeekaInstance({
        org: customer.seekaOrgId,
        id: customer.seekaInstanceId,
        publicKey: customer.seekaPublicKey,
    });

    useEffect(() => {
        if (ready && instance) {
            // Track to the customer's Seeka instance
            instance.track.viewContentItem({ contentId: customer.eventId });
            // Also track to the platform's own instance
            masterSdk?.track.viewContentItem({ contentId: customer.eventId });
        }
    }, [ready, customer.eventId]);

    return <div>{/* event page content */}</div>;
    // Customer's instance is automatically destroyed when this component unmounts
}

See dynamic multi-instance for the setup guide.

Considerations

Cross domain tracking

This is very important for widget or iframe based integrations that are placed on customer websites or iframes that do not match the opener origin hostname.

To ensure optimal support for ad optimisation, ad attribution and tracking accuracy, any iframes that are opened from a website (eg. customers website) require cross domain tracking.

Seeka supports this natively with a call to a method within the browser SDK which adds cross domain tracking parameters to iframe URLs with a single method call.

See Cross domain tracking docs.