> ## Documentation Index
> Fetch the complete documentation index at: https://algolia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Exclude search queries from analytics

> Learn how to exclude search queries from your analytics.

export const SearchRequest = () => <Tooltip tip="A search request is a single HTTP call to the Algolia Search API that can run one or more search operations. It can include multiple queries, for example, when querying several indices at once.">
    search request
  </Tooltip>;

export const SearchQuery = () => <Tooltip tip="The text users enter into a search box. In the Search API, this corresponds to the query parameter. A search query is often used with filters, facets, and other parameters, but these aren't part of the query text itself.">
    search query
  </Tooltip>;

export const Filter = () => <Tooltip tip="A filter is a condition that limits which records Algolia returns. Filters often use one or more facet-value pairs, such as brand:Apple AND color:red. You can also filter by numeric values, dates, tags, booleans, or geographic constraints." cta="Filtering" href="/doc/guides/managing-results/refine-results/faceting">
    filter
  </Tooltip>;

Sometimes, you might want to exclude specific queries from your analytics.
These searches still return results,
but they won't show up in any of the [metrics](/doc/guides/search-analytics/concepts/metrics).

To exclude searches from analytics, set the [`analytics`](/doc/api-reference/api-parameters/analytics) search parameter to `false`.

## Empty searches

Often, one of the top-ranked search queries in your analytics is `<empty search>`.

Empty searches have two origins:

* An initial <SearchRequest /> with an empty <SearchQuery /> to instantly show results before users start typing
* Category pages are built with an empty query and an applied <Filter />

In some cases, the empty search might not be relevant.
For example:

* You only show search results when users are actively searching
* You have an absolute ordering of your search results, such as, a blog search that's sorted by date

## Exclude searches from your analytics

To exclude specific search queries from your analytics,
set the [`analytics`](/doc/api-reference/api-parameters/analytics) parameter to `false`.

For example, to exclude empty queries from your analytics,
create a custom search client and set `analytics: false` when the query is empty:

<CodeGroup>
  ```js InstantSearch.js theme={"system"}
  import algoliasearch from "algoliasearch/lite";
  import instantsearch from "instantsearch.js";

  const algoliaClient = algoliasearch(
    "ALGOLIA_APPLICATION_ID",
    "ALGOLIA_API_KEY",
  );

  const searchClient = {
    ...algoliaClient,
    search(requests) {
      const newRequests = requests.map((request) => {
        // Test for empty string and change `analytics` request parameter to `false`
        if (!request.params.query || request.params.query.length === 0) {
          request.params.analytics = false;
        }
        return request;
      });

      return algoliaClient.search(newRequests);
    },
  };

  const search = instantsearch({
    indexName: "instant_search",
    searchClient,
  });

  search.addWidgets([
    /* ... */
  ]);

  search.start();
  ```

  ```jsx React theme={"system"}
  import algoliasearch from "algoliasearch/lite";
  import { InstantSearch } from "react-instantsearch";

  const algoliaClient = algoliasearch(
    "ALGOLIA_APPLICATION_ID",
    "ALGOLIA_API_KEY",
  );

  const searchClient = {
    ...algoliaClient,
    search(requests) {
      const newRequests = requests.map((request) => {
        // Test for empty string and change `analytics` request parameter to `false`
        if (!request.params.query || request.params.query.length === 0) {
          request.params.analytics = false;
        }
        return request;
      });

      return algoliaClient.search(newRequests);
    },
  };

  function App() {
    return (
      <InstantSearch searchClient={searchClient} indexName="instant_search">
        {/* ... */}
      </InstantSearch>
    );
  }
  ```

  ```vue Vue theme={"system"}
  <template>
    <ais-instant-search :search-client="searchClient" index-name="instant_search">
      <!-- ... -->
    </ais-instant-search>
  </template>

  <script>
  import algoliasearch from "algoliasearch/lite";
  import "instantsearch.css/themes/satellite-min.css";

  const algoliaClient = algoliasearch(
    "ALGOLIA_APPLICATION_ID",
    "ALGOLIA_API_KEY",
  );

  const searchClient = {
    ...algoliaClient,
    search(requests) {
      const newRequests = requests.map((request) => {
        // Test for empty string and change `analytics` request parameter to `false`
        if (!request.params.query || request.params.query.length === 0) {
          request.params.analytics = false;
        }
        return request;
      });

      return algoliaClient.search(newRequests);
    },
  };

  export default {
    data() {
      return {
        searchClient,
      };
    },
  };
  </script>
  ```

  ```js Angular theme={"system"}
  import { Component } from "@angular/core";
  import algoliasearch from "algoliasearch/lite";

  const algoliaClient = algoliasearch(
    "ALGOLIA_APPLICATION_ID",
    "ALGOLIA_API_KEY",
  );

  const searchClient = {
    ...algoliaClient,
    search(requests) {
      const newRequests = requests.map((request) => {
        // Test for empty string and change `analytics` request parameter to `false`
        if (!request.params.query || request.params.query.length === 0) {
          request.params.analytics = false;
        }
        return request;
      });

      return algoliaClient.search(newRequests);
    },
  };

  @Component({
    selector: "app-root",
    templateUrl: "./app.component.html",
    styleUrls: ["./app.component.css"],
  })
  export class AppComponent {
    config = {
      indexName: "instant_search",
      searchClient,
    };
  }
  ```
</CodeGroup>

To prevent sending empty queries altogether,
[turn off search on empty queries](/doc/guides/building-search-ui/going-further/conditional-requests/js).
