# Limitations and Best Practices

The **FHR A/B** testing feature is a powerful tool, but there are a few guidelines and limitations to follow in order to be able to make the most out of it.

## Polling Frequency/Caching Duration

It is best to cache the **running A/B tests** response around as long as you cache your regular FHR queries. If your usual expiration time is 20 minutes, you can cache the **running A/B tests** response just as long. If you want to have more up to date data or do no caching at all, you can stick to the default **suggested** **minimum** time of **5 minutes.**

## Trigger limitations

Unfortunately, not all **triggers** which are available for **non** A/B test entities, such as **campaigns**, can be used for A/B testing due to filtering limitations. Because of this, the list of available triggers for A/B tests will be slightly smaller. The available triggers are:

* Universe
* Locale
* User Location
* Navigation Steps
* Query Type
* Custom triggers:
  * Text - **full support**
  * Number - **full support**
  * Date - **limited support:** can be added, but will not be considered for filtering i.e. the trigger will not appear as part of the filters in the A/B test in the response when getting running A/B tests. However, this will still allow you to setup date/time triggers.

{% hint style="info" %}
**Hint:** While the **Keyword** trigger is not supported, you can still add a search query as a user location, thus making use of search words as triggers.
{% endhint %}

## A/B tests on the homepage

One other limitation is for setting up **triggers** on the **homepage**. When requesting the **homepage** in FHR, the **fh\_location** field can be omitted, but this will cause issues. If you omit it, the response will be defaulted to a location for **home** with the **default** **universe** and **locale** set up. This makes it impossible to run filtering on the running A/B tests, so it is advisable that you **always** set the **fh\_location**, including a **minimum** of **//\<universe>/\<locale>**, and check it against the **running A/B tests** when requesting the **homepage**.

Otherwise, the filtering wouldn't be able to tell if an **A/B test** can be run, therefore the **A/B tests** will not trigger for the **homepage**.

## A/B tests on Product Detail Pages

Similarly to the **homepage** situation, you can omit the **fh\_location** property for **PDPs(Product Detail Pages)**. This again causes issues, as without it we're not able to test for **universe** and **locale**, which would make filtering impossible. So in order for filtering to work, you have to supply an **fh\_location** including at least the **universe** and **locale** in order to make proper use of triggers on **PDPs**. This could be done by ensuring that the **FHR** **query** request for a **PDP** is set by convention to include an **fh\_location** of **//\<universe>/\<locale>.**

## **Stick to the SDK and default implementations if possible**

We've put effort in making the integration as seamless as possible through the **SDK.** The default implementations are meant to be the best way to go. While we've added the ability for custom implementations of certain aspects, we strongly advise that you adhere to the adhere to the default implementation as much as possible. We cannot guarantee that we can offer support for custom implementations of the SDK features such as the **RunningAbTestsFetcher** or **AbTestsCache.**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://crownpeak.gitbook.io/product-discovery/a-b-testing-for-fhr/limitations-and-best-practices.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
