Skip to content

Labrador Setup Guide ​

Overview ​

Labrador is a React-based clinical trial study finder widget that can be embedded into any website. It provides a comprehensive interface for searching, filtering, and viewing clinical trial information. This guide will walk you through the setup and integration process.

Table of Contents ​

  1. Prerequisites
  2. Installation Method
  3. Configuration
  4. Support and Resources

Prerequisites ​

Before setting up Labrador, ensure you have:

  • Access to WeTrials API (API key required - see API Key Guide)
  • Basic knowledge of HTML/JavaScript

Installation Method ​

CDN Integration ​

The recommended way to integrate Labrador is by including it via CDN in your HTML:

CDN Base URLs ​

EnvironmentBase URL
Developmenthttps://assets.dev.wetrials.com/labrador/v2/
Productionhttps://assets.wetrials.com/labrador/v2/

Basic Integration ​

html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Your Website with Labrador</title>
    <meta name="viewport" content="width=device-width, initial-scale=1" />

    <!-- Google Fonts (Required) -->
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet" />

    <!-- Labrador Styles -->
    <link rel="stylesheet" href="https://assets.wetrials.com/labrador/v2/styles.css" />
  </head>
  <body>
    <!-- Container for Labrador widget -->
    <div id="study-finder-widget"></div>

    <!-- Modal container (required for popups) -->
    <div id="labrador-modal-root"></div>

    <!-- Labrador Script (Production) -->
    <script src="https://assets.wetrials.com/labrador/v2/index.js"></script>

    <!-- Initialize Labrador -->
    <script>
      window.addEventListener('load', () => {
        Labrador({
          shadowRoot: document.getElementById('study-finder-widget'),
          shadowModalRoot: document.getElementById('labrador-modal-root'),
          env: 'production', // 'development' or 'production'
          orgId: 'your-organization-id',
          apiKey: 'your-api-key-here',
        });
      });
    </script>
  </body>
</html>

Advanced Integration with Shadow DOM ​

For better style isolation and to prevent CSS conflicts, you can use Shadow DOM:

html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Your Website with Labrador (Shadow DOM)</title>
    <meta name="viewport" content="width=device-width, initial-scale=1" />

    <!-- Google Fonts (Required) -->
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
  </head>
  <body>
    <!-- Container for Labrador widget -->
    <div id="wetrials-shadow-dom"></div>

    <!-- Labrador Script -->
    <script type="module" crossorigin src="https://assets.wetrials.com/labrador/v2/index.js"></script>

    <!-- Shadow DOM Setup and Initialize -->
    <script>
      document.addEventListener('DOMContentLoaded', () => {
        const cssURL = 'https://assets.wetrials.com/labrador/v2/styles.css';

        // Helper function to append stylesheet to shadow root
        const appendStylesheet = (root, href) => {
          const link = document.createElement('link');
          link.rel = 'stylesheet';
          link.href = href;
          root.appendChild(link);
        };

        // Create modal shadow DOM
        const createModalShadowDOM = (id, position = null) => {
          const host = document.createElement('div');
          host.id = id;
          if (position) {
            host.style.position = position;
            host.style.zIndex = '9999999';
          }
          const shadowRoot = host.attachShadow({ mode: 'open' });
          appendStylesheet(shadowRoot, cssURL);
          document.body.appendChild(host);
          return shadowRoot;
        };

        // Create modal shadow root
        const shadowModalRoot = createModalShadowDOM('wetrials-modal-shadow-dom', 'absolute');

        // Set global font size (optional)
        const globalStyle = document.createElement('style');
        globalStyle.textContent = 'html { font-size: 16px !important; }';
        document.head.appendChild(globalStyle);

        // Create main shadow root
        const mainContainer = document.getElementById('wetrials-shadow-dom');
        const mainShadowRoot = mainContainer.attachShadow({ mode: 'open' });
        appendStylesheet(mainShadowRoot, cssURL);

        // Initialize Labrador with shadow roots
        Labrador({
          shadowRoot: mainShadowRoot,
          shadowModalRoot: shadowModalRoot,
          env: 'production', // 'development' or 'production'
          orgId: 'your-organization-id',
          apiKey: 'your-api-key-here',
        });
      });
    </script>
  </body>
</html>

Configuration ​

Required Configuration Parameters ​

ParameterTypeDescriptionExample
shadowRootHTMLElementMain container element for the widgetdocument.getElementById('study-finder')
shadowModalRootHTMLElementContainer for modal popupsdocument.getElementById('modal-root')
envstringEnvironment setting'development' or 'production'
orgIdstringYour organization identifier'wetrials'
apiKeystringAPI authentication key'your-api-key-here'

Environment-Specific Configuration ​

Development Environment ​

javascript
Labrador({
  shadowRoot: document.getElementById('study-finder'),
  shadowModalRoot: document.getElementById('modal-root'),
  env: 'development',
  orgId: 'wetrials-dev',
  apiKey: 'dev-api-key',
});

Production Environment ​

javascript
Labrador({
  shadowRoot: document.getElementById('study-finder'),
  shadowModalRoot: document.getElementById('modal-root'),
  env: 'production',
  orgId: 'wetrials',
  apiKey: 'prod-api-key',
});

Support and Resources ​

Getting Help ​

Additional Resources ​

Not available now

Example WebsiteScreenshot: Complete Labrador integration in a production website


Last Updated: September 2025 Maintained By: WeTrials Platform Team