# Cross-domain Conversation Continuity

{% hint style="info" %}
Discover how iAdvize handles data storage in this Help Center article : <https://help.iadvize.com/hc/articles/216438047>
{% endhint %}

Since the [2024 phase-out of third-party cookies](https://developer.mozilla.org/en-US/blog/goodbye-third-party-cookies/), iAdvize can no longer reliably link visitor identities across domains. While this is good news for privacy in general, it means that multi-domain clients need to add a query parameter to their pages to maintain conversation continuity between websites that do not share a top-level domain.\
\
The principle is as follows. First, you need to detect whether the visitor browsing the website is in the middle of a conversation. To do this, we need to use the iAdvize web SDK and, more specifically, the [iAdvize.get method](https://docs.iadvize.dev/technologies/web-and-mobile-sdk/javascript-web-sdk/reference#iadvize.get) on the conversation:id property. If the Web SDK returns a conversation identifier, then a conversation is in progress.

If the visitor is in the middle of a conversation on site A, and clicks on a link that will take him to site B, you'll need to add a specific url parameter to this link (named “idzconvid”, and which will take as its value the conversation identifier retrieved from the iAdvize.get method) so as to guarantee conversation continuity between site A and site B.

This is how it should be implemented :

1. Use the iAdvize WebSDK to retrieve the `conversationId` when a conversation is ongoing :

```javascript
window.iAdvizeInterface.push((iAdvize) => {
  iAdvize.on("conversation:idChange", (conversationId) => {
    // This is triggered when : 
    // - a conversation starts : conversationId is a string
    // - a conversation ends : conversationId is null
  });
});
```

2. Add the conversationId to all relevant links.

Here is a full example of what it might look like :

```html
<script>
  /**
   * Script setup
   * You should use your own values
   **/
  window.iAdvizeInterface = window.iAdvizeInterface || [];
  iAdvizeInterface.config = {
      "sid": 1234,
      "lang": "en",
      "useExplicitCookiesConsent": true
  };

  /**
   * Function to update all the links on the website's page.
   * We need them to include the conversation identifier, 
   * so cross-domain conversations can be continued.
   **/
  function updateLinksWithConversationId(conversationId) {
    // List of allowed top level domains, on which we want conversation continuity
    const TOP_LEVEL_DOMAINS = ["my-first-domain.com", "my-other-domain.net"];
    // The query param key we will add to relevant links
    const queryParam = "idzconvid";

    const links = document.body.querySelectorAll("a");
    for (const link of links) {
      let originalUrl;
      try {
        originalUrl = new URL(link.href);
      } catch (error) {
        continue;
      }
      const isRelevantLink = TOP_LEVEL_DOMAINS.some((domain) =>
        originalUrl.hostname.includes(domain)
      );
      if (!isRelevantLink) continue;
      originalUrl.searchParams.delete(queryParam);
      if (conversationId) {
        originalUrl.searchParams.append(queryParam, conversationId);
      }
      link.href = originalUrl.href;
    }
  }

  // When iAdvize is loaded :
  window.iAdvizeInterface.push((iAdvize) => {
    // Change relevant links if a conversation is already ongoing
    updateLinksWithConversationId(iAdvize.get("conversation:id"));
    // Listen to conversationId changes to update relevant links
    iAdvize.on("conversation:idChange", updateLinksWithConversationId);
  });
</script>

<!-- Launch the iAdvize tag -->
<script async src="//halc.iadvize.com/iadvize.js"></script>
```

See an example in this codesandbox : <https://codesandbox.io/p/sandbox/cross-domain-conversation-continuity-hyx6fx>


---

# 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://docs.iadvize.dev/use-cases/visitor-experience/cross-domain-conversation-continuity.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.
