Skip to content

Commit

Permalink
add kapa event tracking for search interactions
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryan Seams authored and Ryan Seams committed Feb 25, 2025
1 parent dbb961c commit 93ed0e1
Showing 1 changed file with 77 additions and 2 deletions.
79 changes: 77 additions & 2 deletions fern/kapa.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,38 @@
}
})();

window.Kapa("onSearchResultsCompleted", () => {
// track event for kapa modal opening
// to do: fix for search versus ask ai
window.Kapa("onModalOpen", function ({ mode }) {
// to do: remove for ask ai query on enter
rudderanalytics.track("docs_click_search-open");
if(rudderanalytics.getUserId()!=='') {
window.kapaSettings = {
user: {
uniqueClientId: rudderanalytics.getUserId(),
email: rudderanalytics.getUserTraits().email
}
}
}
});

// track event for kapa modal closing
window.Kapa("onModalClose", function ({ mode }) {
rudderanalytics.track("docs_click_search-close");
});

// track event for kapa modal search completing
window.Kapa("onSearchResultsCompleted", ({ query, searchResults }) => {
const searchInput = document
.querySelector("#kapa-widget-container")
.shadowRoot.querySelector("input[type=text]");
const query = searchInput.value;
rudderanalytics.track("docs_completed_search",
{
"search_query": query,
"search_results": searchResults,
"clicked_url": searchResults.url,
"clicked_title": searchResults.title,
});
searchInput.addEventListener("keyup", function handleQuery(event) {
this.removeEventListener("keyup", handleQuery);
if (event.key === "Enter") {
Expand All @@ -25,6 +52,53 @@ window.Kapa("onSearchResultsCompleted", () => {
});
});

// track event for kapa modal search result clicked from list
window.Kapa("onSearchResultClick", ({ query, searchResult, rank }) => {
rudderanalytics.track("docs_click_search-result",
{
"search_query": query,
"search_results": searchResult,
"search_rank": rank,
"clicked_url": searchResult.url,
"clicked_title": searchResult.title,
});
});

// track event for kapa modal search clicking "ask ai" in search results
window.Kapa("onAskAIQuerySubmit", ({ threadId, questionAnswerId, question }) => {
rudderanalytics.track("docs_click_search-ask-ai",
{
"search_query": question,
});
});

// track event for kapa modal search result clicking "ask ai" completing
window.Kapa("onAskAIAnswerCompleted", ({ threadId, questionAnswerId, question, answer, conversation }) => {
rudderanalytics.track("docs_completed_search-ask-ai",
{
"search_query": question,
});
});

// track event for kapa modal search result clicked from "ask ai" answer text
window.Kapa("onAskAILinkClick", ({ href, threadId, questionAnswerId, question, answer }) => {
rudderanalytics.track("docs_click_search-ask-ai-result",
{
"search_query": question,
"clicked_url": href,
});
});

// track event for kapa modal search result clicked from "ask ai" answer sources
window.Kapa("onAskAISourceClick", ({ source, threadId, questionAnswerId, question, answer }) => {
rudderanalytics.track("docs_click_search-ask-ai-source",
{
"search_query": question,
"clicked_url": source.url,
"clicked_title": source.title,
});
});

function insertKapa() {
const originalElement = document.getElementById('fern-search-button');
const clonedElement = originalElement.cloneNode(true);
Expand All @@ -42,6 +116,7 @@ function insertKapa() {
script.setAttribute("data-project-logo", "https://www.assemblyai.com/static/images/logo-blue400x400.jpeg");
script.setAttribute("data-modal-override-open-id-search", "fern-search-button");
script.setAttribute("data-search-include-source-names", '["Pylon FAQ", "Documentation"]');
script.setAttribute("data-user-analytics-fingerprint-enabled", true);
document.head.appendChild(script);

document.addEventListener('keydown', (e) => {
Expand Down

0 comments on commit 93ed0e1

Please sign in to comment.