FullStory
Harness FME + FullStory
FullStory is a digital experience analytics platform that records users’ sessions for playback and analysis. FullStory events allow FullStory customers to add additional information to a session while it is being recorded. Harness FME leverages FullStory events to report feature flag impressions to the FullStory session, and as a source of events for measurement and experimentation in FME (there is a section below for both types of integration).
Follow the guide for your type of integration to proceed with installation. Segments integration deals with passing FME impressions to FullStory sessions. Events integration covers passing FullStory events to Harness FME for use in measurement and experimentation.
Prerequisites
To connect FullStory with Harness FME, you need:
- FullStory API recording JavaScript installed
- FME JavaScript SDK 10.12.1 or later installed
- AWS lambda experience recommended
- Node.js developer experience recommended
Integrating FullStory impressions into Harness FME
The following sections explain how to integrate FullStory impressions into Harness FME.
Send FME impressions as FullStory custom events
The Harness FME + FullStory integration uses out-of-the-box features of both products.

-
Associate the FullStory recording with the same key used for FME
getTreatment
evaluations by calling FS.identify. In the listing above, the user_id is shared by the FS.identify API call and the FME SDK configuration key (shown in blue). -
Add a custom impression listener to report FME impressions to FullStory’s custom events API. As highlighted in red above, the FullStory custom event API is called for a “split_evaluation” event, passing the entire impression data as properties for that event. The impression data includes the name of the feature flag evaluated and the treatment the user received.
If you’re not familiar with the FME JavaScript SDK configuration, go to JavaScript SDK documentation for more information.
Verify split_evaluation events are arriving in FullStory
To verify events are arriving in FullStory, do the following:
-
On the session playback screen, look for the split_evaluation event.
-
If you have many events, search for split_evaluation using the Filter events function.
Create a segment based on a treatment received
Once you have split_evaluation events, create a new FullStory segment that contains all the users who received a particular treatment from a given feature flag. Do the following:
-
From the FullStory home page, click to create a new segment.
-
Under API events, click split_evaluation.
-
Build an Event filter for any feature flag and treatment you’ve integrated.
In this example, the segment shows sessions where there is a getTreatment call to “multivariant_demo” and the user received “v3” as their treatment.

You can now play back and review specific customer experiences. Every session in this playlist showed v3 of the multivariant_demo feature flag.
Knowing which treatment a user saw for a particular feature flag is crucial data for evaluating their experience with FullStory. This simple integration makes that data available to analyze a single user’s session and to create segments for overall comparison of behavior between treatment groups.
Integrating FullStory events into Harness FME
Send FullStory events to Harness FME to use in experimentation. FullStory events are received from a FullStory webhook, transformed, and reported to FME. This lets FME share the event data channel that may already be in place for FullStory.
Using the FullStory events webhook, you can pass FullStory events to FME to use for measurement, alerts, and experimentation. Events are the result of an FS.event() call from the FullStory SDK, for example:

This transforms into the corresponding FME event:

If you want an FME value, you must put the value in a split section, as shown in the example above.
split: {
value: 42
}, // etc.
Installing the FullStory events webhook
To install the FullStory events webhook, do the following:
-
Clone the fullstory events repository in an empty directory.
-
Inside the directory, copy your API keys (carefully) into files with the following names:
- SPLIT_API_KEY (server-side API key for your desired environment)
- FULLSTORY_API_KEY (I used admin)
importantThe files must precisely have these names. An extra space at the end of the line or empty lines after it could cause issues later.
-
From this same directory:
> npm install
> zip -r fullstory.zip *
If you have brew installed, you can perform a "brew install npm" on OSX. Follow the instructions to install npm for other operating systems described in Downloading and installing Node.js and npm. The fullstory.zip should include the index.js, the key files, and a full node_modules directory.
Installing the FullStory events webhook
A single node.js lambda does the work for the integration, using only the filesystem (for API keys) and the Axios HTTP client. The integration makes two cheap API calls per FullStory event. To install a FullStory webhook in AWS, do the following:
-
Create a new lamba called fullstory using the Node.js language.
-
Upload fullstory.zip to the Code screen of your AWS lambda.
-
Give the lambda a function URL to POST to it. Enable CORS and give the Allow Headers field a *.
-
Provide the function URL to the FullStory events webhook.
-
Use the FullStory webhook test button to make sure you get back a 200 response from your lambda.
When testing, it can sometimes take 5 to 10 minutes for FS.event calls to propagate to Harness FME. Try reloading your page after a minute to accelerate the event publishing.
Debugging
Use Amazon CloudWatch to look at inbound events and check they're properly handled. Some events take time to propagate, but CloudWatch gives early indication of trouble.
About this integration
This is a third-party integration that has been tested by the Harness FME team. Harness does not own or maintain this integration. For more information, contact the contributor.
If you’d like a demo of Harness FME or help to implement any of our integrations, contact support@split.io.