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

# Widget Overview

> Learn about the Hum widget's capabilities, features, and integration options

# Hum Widget Overview

The Hum widget is a turnkey solution for integrating internet service provider discovery and e-commerce functionality into your website or mobile application. With minimal setup, you can provide your users with address-specific internet plans, pricing, and the ability to order service directly.

<Frame>
  <img src="https://mintcdn.com/hum/EO5jHcOxNKbOuoxY/images/checkout-layout.png?fit=max&auto=format&n=EO5jHcOxNKbOuoxY&q=85&s=ead97931c1cbb33c8aaff3e9b29bbcc9" alt="Hum widget checkout layout showing the complete e-commerce flow" width="1020" height="1143" data-path="images/checkout-layout.png" />
</Frame>

## What is the Hum Widget?

The Hum widget is a fully-featured, embeddable component that enables your users to:

* **Search for internet service** by entering their address
* **Compare plans** from 200+ internet service providers nationwide
* **Filter options** by technology, speed, price, and provider
* **Complete checkout** to order internet service directly
* **Save plans** for later comparison and review
* **View provider details** including contact information and coverage areas

<Check>
  The widget handles all the complexity of provider data, pricing, availability checking, and checkout flows—all you need to do is embed it.
</Check>

## Key Features

<CardGroup cols={2}>
  <Card title="Real-Time Availability" icon="signal">
    Instant address validation and service availability from 200+ providers
  </Card>

  <Card title="Multiple Layouts" icon="table-cells">
    Choose from checkout, summary, or plans layouts to match your use case
  </Card>

  <Card title="Fully Responsive" icon="mobile">
    Adapts seamlessly to desktop, tablet, and mobile devices
  </Card>

  <Card title="Customizable Branding" icon="palette">
    Configure colors and layout to match your brand identity
  </Card>

  <Card title="E-Commerce Ready" icon="shopping-cart">
    Complete shopping cart and checkout flow for participating providers
  </Card>

  <Card title="Event Notifications" icon="bell">
    Listen to order completion, plan saves, and other user actions
  </Card>
</CardGroup>

## Architecture

The Hum widget is built as a React single-page application using client-side rendering. It's designed to be:

* **Performant**: Loads asynchronously without blocking page rendering
* **Lightweight**: Minimal impact on your page load times
* **Secure**: All API communication is encrypted and authenticated
* **Reliable**: Hosted on a global CDN with 99.9% uptime

<Info>
  The widget communicates with the Hum API backend to fetch real-time provider data, validate addresses, and process orders.
</Info>

<Frame>
  <img src="https://mintcdn.com/hum/-R1IhZ0TcryFFn2E/images/hum-technology-stack.png?fit=max&auto=format&n=-R1IhZ0TcryFFn2E&q=85&s=ac521eaecaedd918b5863794c0a3d644" alt="Hum technology architecture diagram" width="1800" height="1020" data-path="images/hum-technology-stack.png" />
</Frame>

## Layout Options

The widget supports three layout modes to suit different use cases and user experiences:

<Tabs>
  <Tab title="Checkout Layout">
    The checkout layout provides a full e-commerce experience with a shopping cart, allowing users to select plans, add-ons, and complete the ordering process.

    **Best for:**

    * Users actively seeking new internet service
    * Dedicated pages that support multi-step flows
    * Conversion-focused implementations
    * Real estate, mortgage, and relocation apps

    <Frame>
      <img src="https://mintcdn.com/hum/EO5jHcOxNKbOuoxY/images/checkout-layout.png?fit=max&auto=format&n=EO5jHcOxNKbOuoxY&q=85&s=ead97931c1cbb33c8aaff3e9b29bbcc9" alt="Checkout layout showing full shopping cart experience" width="1020" height="1143" data-path="images/checkout-layout.png" />
    </Frame>

    **Features:**

    * Interactive shopping cart
    * Multiple provider selection
    * Add-on services (TV, phone)
    * Complete checkout flow
    * Order confirmation
  </Tab>

  <Tab title="Summary Layout">
    The summary layout presents available internet service options in a clean, compact table format with links to provider websites.

    **Best for:**

    * Passive information discovery
    * Limited screen space
    * Quick provider comparisons
    * Property listing websites

    <Frame>
      <img src="https://mintcdn.com/hum/EO5jHcOxNKbOuoxY/images/summary-layout.png?fit=max&auto=format&n=EO5jHcOxNKbOuoxY&q=85&s=c933bcacb15f2c95b3d8238e03a12f62" alt="Summary layout showing provider options in table format" width="1084" height="461" data-path="images/summary-layout.png" />
    </Frame>

    **Features:**

    * Compact table view
    * Sort by speed, price, provider
    * Filter by technology type
    * Direct links to providers
    * Minimal screen real estate
  </Tab>

  <Tab title="Plans Layout">
    The plans layout displays provider options as cards with affiliate links, offering a middle ground between checkout and summary layouts.

    **Best for:**

    * Visual comparisons
    * Directing users to provider sites
    * Affiliate marketing use cases
    * Streamlined user experience

    <Frame>
      <img src="https://mintcdn.com/hum/EO5jHcOxNKbOuoxY/images/card-layout.png?fit=max&auto=format&n=EO5jHcOxNKbOuoxY&q=85&s=eefebfe3ff03813429aef479ac2e7bf3" alt="Plans layout showing provider cards with affiliate links" width="943" height="774" data-path="images/card-layout.png" />
    </Frame>

    **Features:**

    * Card-based design
    * Visual plan comparisons
    * Provider logos and branding
    * Quick filtering options
    * Affiliate link tracking
  </Tab>
</Tabs>

## Integration Methods

Choose the integration method that best fits your technical stack and requirements:

<CardGroup cols={2}>
  <Card title="JavaScript Integration" icon="code" href="/widget-integration/javascript">
    Embed the widget using JavaScript and HTML. Ideal for websites where you control the codebase.

    **Best for:** Web applications, landing pages, React/Vue apps
  </Card>

  <Card title="WebView Integration" icon="mobile-screen" href="/widget-integration/webview">
    Load the widget via URL in a mobile WebView. Perfect for native and hybrid mobile apps.

    **Best for:** iOS, Android, React Native, Flutter apps
  </Card>
</CardGroup>

<Info>
  Both integration methods provide the same features and user experience—choose based on your technical environment.
</Info>

## Configuration Options

The Hum widget is highly configurable. All options are optional and have sensible defaults.

### Display & Layout

<ParamField body="resultLayout" type="HUMResultLayout enum">
  Controls the visual presentation of internet service results.

  **Accepted Values:**

  * `"summary"` - Compact table format with affiliate links
  * `"checkout"` - Full shopping cart and e-commerce experience (default)
  * `"plans"` - Card layout with affiliate links

  **Default:** `"checkout"`
</ParamField>

<ParamField body="primaryColor" type="string">
  Customizes the primary color for buttons and UI elements throughout the widget.

  **Format:** Hex color code (e.g., `"#1274f9"`)

  **Default:** `"#1274f9"`

  <Note>
    The color will be automatically darkened by 10% for hover states to ensure consistent user experience.
  </Note>
</ParamField>

<ParamField body="showSavePlanButton" type="boolean">
  Controls whether users can save and unsave internet plans for later comparison.

  **Default:** `false`

  **When enabled:**

  * Save/unsave button appears on plan cards
  * Triggers `humPlanSaved` and `humPlanUnsaved` events
  * Allows users to bookmark plans for future reference

  <Tip>
    Enable this feature if you want to track user interest in specific plans or provide a "favorites" list functionality.
  </Tip>
</ParamField>

### Tracking & Analytics

<ParamField body="campaignId" type="string">
  Identifier for tracking attribution and analytics purposes. Associate widget sessions with specific marketing campaigns, traffic sources, or user segments.

  **Default:** `undefined`

  <Tip>
    Include campaign identifiers like `"Q4-2024-landing-page"` or `"email-campaign-12345"` to track which sources generate the most conversions.
  </Tip>
</ParamField>

### Filtering & Limiting

<ParamField body="limitProviders" type="string[]">
  Restricts results to specific internet service providers using FCC provider IDs.

  **Use cases:**

  * Partnership agreements
  * White-label implementations
  * Regional focus

  <Info>
    Use [Get FCC Service Providers](/api-reference/informational/get-fcc-service-providers) to retrieve internet provider IDs programmatically.
  </Info>
</ParamField>

<ParamField body="primaryProviders" type="string | string[]">
  Designates one or more providers to display more prominently as top plan recommendations using FCC provider IDs.

  **Accepted Values:** Single provider ID string or array of provider ID strings

  **Impact:** Featured at the top of search results with visual prominence
</ParamField>

<ParamField body="limitTechnologies" type="string[]">
  Filters results to show only specific connection technology types.

  **Valid options:** `Fiber`, `Cable`, `Wireless`, `Satellite`, `DSL`, `Other`

  <Info>
    Combine with `limitProviders` for precise control over displayed plans.
  </Info>
</ParamField>

### Customer Data Pre-population

<ParamField body="customerData" type="object">
  Pre-populates customer information in the shopping cart to streamline checkout.

  **Available fields:**

  * `firstName` - Customer's first name
  * `lastName` - Customer's last name
  * `email` - Customer's email address
  * `phoneNumber` - Customer's phone number

  <Tip>
    Pre-populating customer data can increase conversion rates by reducing friction in the checkout flow.
  </Tip>
</ParamField>

## Address Data Format

The widget expects address data in a specific JSON format:

```json theme={null}
{
  "street1": "1001 Woodward Ave",
  "street2": "Suite 500",
  "city": "Detroit",
  "state": "MI",
  "zip": "48226",
  "latitude": 42.3317,
  "longitude": -83.0479
}
```

### Required Fields

<ParamField body="street1" type="string" required>
  Primary street address containing street number and name.
</ParamField>

<ParamField body="zip" type="string" required>
  ZIP code in 5 or 9-digit format (12345 or 12345-6789).
</ParamField>

### Optional Fields

<ParamField body="street2" type="string">
  Secondary address information (apartment, suite, unit number).
</ParamField>

<ParamField body="city" type="string">
  City name. Recommended for improved address match quality.
</ParamField>

<ParamField body="state" type="string">
  Two-letter US state code (e.g., "MI" for Michigan). Recommended for improved address match quality.
</ParamField>

<ParamField body="latitude" type="number">
  Latitude coordinate for improved performance and reduced latency.
</ParamField>

<ParamField body="longitude" type="number">
  Longitude coordinate for improved performance and reduced latency.
</ParamField>

<Warning>
  Both latitude and longitude must be provided together. If only one is provided, the widget will return an error.
</Warning>

## Common Use Cases

<AccordionGroup>
  <Accordion title="Real Estate & Property Platforms">
    Help homebuyers and renters understand internet options before making decisions.

    **Implementation tips:**

    * Use summary layout for listing pages
    * Pre-populate address from property data
    * Track by property ID with `campaignId`
  </Accordion>

  <Accordion title="Relocation & Moving Services">
    Provide comprehensive internet service information as part of relocation assistance.

    **Implementation tips:**

    * Use checkout layout for conversion
    * Integrate with move-in date scheduling
    * Pre-populate customer data from profiles
  </Accordion>

  <Accordion title="Financial Services & Mortgage">
    Assist mortgage applicants and homebuyers in planning their move.

    **Implementation tips:**

    * Embed in post-approval flows
    * Use property address from loan application
    * Track by application ID
  </Accordion>

  <Accordion title="Property Management">
    Help tenants find and set up internet service for their new homes.

    **Implementation tips:**

    * Limit to preferred providers via partnership
    * Use property's address by default
    * Brand with property management colors
  </Accordion>

  <Accordion title="Apartment & Home Listing Sites">
    Add value to listings by showing available internet services.

    **Implementation tips:**

    * Use summary layout for compact display
    * Cache results by address
    * Display alongside other amenities
  </Accordion>
</AccordionGroup>

## Getting Started

Ready to integrate the Hum widget? Choose your integration method:

<CardGroup cols={2}>
  <Card title="JavaScript Integration" icon="code" href="/widget-integration/javascript">
    Step-by-step guide for embedding the widget with JavaScript and HTML
  </Card>

  <Card title="WebView Integration" icon="mobile-screen" href="/widget-integration/webview">
    URL-based integration guide for mobile WebView applications
  </Card>

  <Card title="Widget Hooks" icon="webhook" href="/widget-integration/hooks">
    Learn how to listen for events and handle user actions
  </Card>

  <Card title="API Integration" icon="brackets-curly" href="/api-integration">
    Build custom integrations using the Hum API directly
  </Card>
</CardGroup>

## Support

<Card title="Get Support" icon="life-ring" href="mailto:support@letshum.com">
  Contact our team for API keys, integration assistance, and technical support
</Card>
