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

# 2020 Updates

> HoopAI platform updates released in 2020.

export const Collapse = () => {
  useEffect(() => {
    document.body.classList.add('changelog-page');
    const typeClasses = {
      'feature': 'tag-feature',
      'new feature': 'tag-feature',
      'enhancement': 'tag-enhancement',
      'improvement': 'tag-improvement',
      'bug fix': 'tag-bugfix',
      'fix': 'tag-bugfix'
    };
    const init = () => {
      document.querySelectorAll('.update-container').forEach(c => {
        if (c.dataset.ci) return;
        c.dataset.ci = '1';
        const contentEl = c.querySelector('[data-component-part="update-content"]');
        const desc = c.querySelector('[data-component-part="update-description"]');
        if (!contentEl || !desc) return;
        c.querySelectorAll('[data-component-part="update-tag"]').forEach(tag => {
          const cls = typeClasses[tag.textContent.trim().toLowerCase()];
          if (cls) tag.classList.add(cls);
        });
        const wrapper = document.createElement('div');
        wrapper.className = 'cl-collapse';
        contentEl.parentNode.insertBefore(wrapper, contentEl);
        wrapper.appendChild(contentEl);
        const titleRow = document.createElement('div');
        titleRow.className = 'cl-title-row';
        desc.parentNode.insertBefore(titleRow, desc);
        titleRow.appendChild(desc);
        const btn = document.createElement('button');
        btn.className = 'cl-toggle';
        btn.setAttribute('aria-label', 'Toggle details');
        const ns = 'http://www.w3.org/2000/svg';
        const svg = document.createElementNS(ns, 'svg');
        svg.setAttribute('width', '16');
        svg.setAttribute('height', '16');
        svg.setAttribute('viewBox', '0 0 20 20');
        svg.setAttribute('fill', 'none');
        const h = document.createElementNS(ns, 'path');
        h.setAttribute('d', 'M4 10h12');
        h.setAttribute('stroke', 'currentColor');
        h.setAttribute('stroke-width', '1.5');
        h.setAttribute('stroke-linecap', 'round');
        h.classList.add('cl-h');
        const v = document.createElementNS(ns, 'path');
        v.setAttribute('d', 'M10 4v12');
        v.setAttribute('stroke', 'currentColor');
        v.setAttribute('stroke-width', '1.5');
        v.setAttribute('stroke-linecap', 'round');
        v.classList.add('cl-v');
        svg.appendChild(h);
        svg.appendChild(v);
        btn.appendChild(svg);
        titleRow.appendChild(btn);
        let expanded = false;
        const toggle = e => {
          e.preventDefault();
          e.stopPropagation();
          expanded = !expanded;
          wrapper.classList.toggle('open', expanded);
          btn.classList.toggle('open', expanded);
        };
        titleRow.addEventListener('click', toggle);
      });
    };
    const t = setTimeout(init, 400);
    return () => {
      clearTimeout(t);
      document.body.classList.remove('changelog-page');
    };
  }, []);
  return null;
};

<Collapse />

<Update label="December 18, 2020" description="Appointment Confirmation Page Customization" tags={["Feature", "CRM"]}>
  **What's new:** Customize the confirmation page contacts see after booking an appointment. Add your own message, redirect URL, or include additional instructions.

  **Why it matters:** Creates a more branded and informative post-booking experience.

  **How to use it:** Go to **Calendars > Calendar Settings > Confirmation Page** to customize.
</Update>

<Update label="December 4, 2020" description="Calendar Embed Widget for Websites" tags={["Feature", "CRM"]}>
  **What's new:** Generate an embeddable calendar widget to place on any external website. Visitors can book appointments directly from your site without leaving the page.

  **Why it matters:** Reduces friction for prospects trying to schedule with your team.

  **How to use it:** Go to **Calendars > Calendar Settings > Embed Code** and copy the snippet into your website HTML.
</Update>

<Update label="November 20, 2020" description="Timezone Auto-Detection for Appointments" tags={["Feature", "CRM"]}>
  **What's new:** The booking calendar now automatically detects the visitor's timezone and displays available slots accordingly. Manual timezone selection is still available as a fallback.

  **Why it matters:** Eliminates scheduling confusion for teams working across multiple time zones.

  **How to use it:** Timezone detection is enabled by default on all booking calendars.
</Update>

<Update label="November 6, 2020" description="SMS Appointment Reminders" tags={["Feature", "CRM"]}>
  **What's new:** Automated SMS reminders can now be sent before scheduled appointments. Configure the timing (15 min, 1 hour, 24 hours) and customize the message template.

  **Why it matters:** Drastically reduces no-show rates by keeping appointments top of mind for contacts.

  **How to use it:** Navigate to **Calendars > Notifications** and enable SMS reminders with your preferred timing.
</Update>

<Update label="October 23, 2020" description="Email Appointment Reminders" tags={["Feature", "CRM"]}>
  **What's new:** Configure automated email reminders for upcoming appointments. Multiple reminder intervals can be stacked for the same event.

  **Why it matters:** Provides another channel to reduce no-shows and keep your calendar running smoothly.

  **How to use it:** Go to **Calendars > Notifications** and toggle on email reminders.
</Update>

<Update label="October 9, 2020" description="Round-Robin Calendar Assignment" tags={["Feature", "CRM"]}>
  **What's new:** Round-robin scheduling distributes new appointment bookings evenly across team members. Configure which users are in the rotation and set priority weights.

  **Why it matters:** Ensures fair lead distribution and prevents any single team member from being overbooked.

  **How to use it:** Create a new calendar and select **Round Robin** as the calendar type under **Calendars > Add Calendar**.
</Update>

<Update label="September 25, 2020" description="Smart Lists for Contacts" tags={["Feature", "Contacts"]}>
  **What's new:** Smart Lists let you create dynamic, filter-based views of your contacts. Define criteria like tags, custom field values, or activity dates, and the list updates automatically as contacts match or unmatch.

  **Why it matters:** Saves time by eliminating manual list management and ensures your segments are always current.

  **How to use it:** Go to **Contacts > Smart Lists > Create Smart List** and define your filter criteria.
</Update>

<Update label="September 11, 2020" description="Contact Activity Log" tags={["Feature", "Contacts"]}>
  **What's new:** Every contact record now includes a detailed activity log showing all interactions — emails sent, SMS messages, appointments, notes added, and pipeline stage changes.

  **Why it matters:** Gives your team full context on every contact without digging through separate modules.

  **How to use it:** Open any contact record and scroll to the **Activity** tab.
</Update>

<Update label="August 28, 2020" description="Bulk Tagging for Contacts" tags={["Feature", "Contacts"]}>
  **What's new:** Select multiple contacts from the contact list and apply or remove tags in bulk. Works with both manual selection and filtered views.

  **Why it matters:** Speeds up contact organization when working with large lists.

  **How to use it:** Select contacts using the checkboxes, click **Bulk Actions**, and choose **Add Tag** or **Remove Tag**.
</Update>

<Update label="August 14, 2020" description="Contact Checkbox Custom Fields" tags={["Feature", "Contacts"]}>
  **What's new:** Checkbox is now available as a custom field type for contacts. Use it for binary data like opt-in consent, qualification flags, or feature toggles.

  **Why it matters:** Gives you more flexibility to capture yes/no data points directly on contact records.

  **How to use it:** Go to **Settings > Custom Fields > Add Field** and select **Checkbox** as the type.
</Update>

<Update label="August 1, 2020" description="Contact Date Custom Fields" tags={["Feature", "Contacts"]}>
  **What's new:** Date picker fields can now be added as custom fields on contact records. Use them to track birthdays, renewal dates, contract expirations, and more.

  **Why it matters:** Enables date-based automations and filtering across your contact database.

  **How to use it:** Navigate to **Settings > Custom Fields > Add Field** and choose **Date** as the field type.
</Update>

<Update label="July 17, 2020" description="Dropdown Custom Fields" tags={["Feature", "Contacts"]}>
  **What's new:** Dropdown menus are now supported as a custom field type. Define a list of options and assign one per contact for consistent data entry.

  **Why it matters:** Standardizes data collection and makes filtering and reporting more reliable.

  **How to use it:** Go to **Settings > Custom Fields > Add Field**, select **Dropdown**, and enter your options.
</Update>

<Update label="July 3, 2020" description="Text Custom Fields for Contacts" tags={["Feature", "Contacts"]}>
  **What's new:** Create text-based custom fields on contact records to store any freeform information like company size, referral source, or internal notes.

  **Why it matters:** Extends the contact profile to capture data specific to your business workflow.

  **How to use it:** Navigate to **Settings > Custom Fields > Add Field** and select **Text** or **Text Area**.
</Update>

<Update label="June 19, 2020" description="Contact Tags System" tags={["Feature", "Contacts"]}>
  **What's new:** Tags are now available for organizing contacts. Add multiple tags per contact, filter the contact list by tag, and use tags as conditions in automations.

  **Why it matters:** Provides a flexible, lightweight way to segment and organize your database beyond pipelines and lists.

  **How to use it:** Open any contact record and click **Add Tag**, or use the tag filter in the contact list view.
</Update>

<Update label="June 5, 2020" description="Custom Field Filtering in Contact List" tags={["Feature", "Contacts"]}>
  **What's new:** The contact list filter now supports custom fields. Filter by text, dropdown, date, and checkbox custom fields alongside standard fields like name and email.

  **Why it matters:** Makes it possible to segment contacts by the custom data points you track.

  **How to use it:** Click **Filters** in the contact list and select any custom field from the dropdown.
</Update>

<Update label="May 22, 2020" description="Custom Dashboard Layouts" tags={["Feature", "Dashboard"]}>
  **What's new:** Rearrange your dashboard widgets by dragging and dropping them into your preferred layout. Your custom arrangement is saved per user and persists across sessions.

  **Why it matters:** Puts the metrics that matter most to you front and center every time you log in.

  **How to use it:** Click **Customize** on the dashboard, then drag widgets to reorder them.
</Update>

<Update label="May 8, 2020" description="Pipeline Summary Dashboard Widget" tags={["Feature", "Dashboard"]}>
  **What's new:** A new pipeline summary widget shows the total value and count of opportunities across each stage. Get a snapshot of your sales pipeline without leaving the dashboard.

  **Why it matters:** Provides at-a-glance pipeline health so you can spot bottlenecks quickly.

  **How to use it:** The widget appears automatically on the dashboard if you have an active pipeline.
</Update>

<Update label="April 24, 2020" description="Dashboard Date Range Selector" tags={["Feature", "Dashboard"]}>
  **What's new:** Filter dashboard metrics by date range. Choose from preset ranges (today, this week, this month, this quarter) or set a custom date range.

  **Why it matters:** Lets you analyze performance over specific time periods without leaving the dashboard.

  **How to use it:** Use the date picker at the top right of the dashboard to select your range.
</Update>

<Update label="April 10, 2020" description="Tasks and Appointments Dashboard Widgets" tags={["Feature", "Dashboard"]}>
  **What's new:** Two new widgets are available on the dashboard. The tasks widget shows upcoming and overdue tasks, while the appointments widget displays your next five scheduled meetings.

  **Why it matters:** Keeps your daily priorities visible without navigating away from the main view.

  **How to use it:** Both widgets are enabled by default on the dashboard.
</Update>

<Update label="March 27, 2020" description="Dashboard Stats Overview Widget" tags={["Feature", "Dashboard"]}>
  **What's new:** The new stats overview widget displays key metrics including total contacts, new contacts this month, open opportunities, and total opportunity value.

  **Why it matters:** Provides a single-glance summary of your CRM health.

  **How to use it:** Stats appear at the top of the dashboard automatically.
</Update>

<Update label="March 13, 2020" description="Dashboard Module Launch" tags={["Feature", "Dashboard"]}>
  **What's new:** The HoopAI dashboard is now live. Upon login, you are greeted with a centralized overview of your account activity, upcoming appointments, and key performance metrics.

  **Why it matters:** Creates a single starting point for your daily workflow instead of navigating to individual modules.

  **How to use it:** The dashboard is now the default landing page after login.
</Update>

<Update label="February 28, 2020" description="Facebook Messenger in Conversations" tags={["Feature", "Conversations"]}>
  **What's new:** Facebook Messenger messages now appear in the unified conversations inbox alongside email and SMS. Reply to Facebook messages directly from the platform.

  **Why it matters:** Consolidates yet another communication channel so no lead falls through the cracks.

  **How to use it:** Connect your Facebook page under **Settings > Integrations > Facebook** to start receiving messages.
</Update>

<Update label="February 14, 2020" description="Conversation Filters and Search" tags={["Feature", "Conversations"]}>
  **What's new:** Filter conversations by channel type (SMS, email, Facebook), read/unread status, and assigned user. A search bar lets you find conversations by contact name or message content.

  **Why it matters:** Makes it faster to locate specific conversations in a busy inbox.

  **How to use it:** Use the filter icons and search bar at the top of the Conversations inbox.
</Update>

<Update label="January 31, 2020" description="Conversation Assignment" tags={["Feature", "Conversations"]}>
  **What's new:** Assign conversations to specific team members directly from the inbox. Assigned conversations appear in that user's filtered view.

  **Why it matters:** Ensures accountability and prevents duplicate responses to the same lead.

  **How to use it:** Open a conversation and click **Assign** to select a team member.
</Update>

<Update label="January 17, 2020" description="Conversation Read Receipts" tags={["Feature", "Conversations"]}>
  **What's new:** See when your emails have been opened by the recipient. Read receipts appear as a small indicator on the message in the conversation timeline.

  **Why it matters:** Helps you gauge engagement and time your follow-ups effectively.

  **How to use it:** Read receipts are tracked automatically for all outbound emails.
</Update>

<Update label="January 10, 2020" description="SMS Quick Replies" tags={["Feature", "SMS"]}>
  **What's new:** Create and save quick reply templates for SMS conversations. Insert them with one click when responding to common questions.

  **Why it matters:** Speeds up response time for frequently asked questions.

  **How to use it:** Go to **Conversations > Quick Replies > Create** to add your templates.
</Update>

<Update label="January 3, 2020" description="Email Threading in Conversations" tags={["Feature", "Conversations"]}>
  **What's new:** Email replies are now threaded together in the conversations view, grouping related messages under a single conversation. This applies to both inbound and outbound emails.

  **Why it matters:** Makes it easy to follow multi-message email exchanges without scrolling through unrelated messages.

  **How to use it:** Email threads are grouped automatically — no configuration needed.
</Update>

<Update label="December 20, 2020" description="Two-Way SMS Conversations" tags={["Feature", "SMS"]}>
  **What's new:** Send and receive SMS messages directly within the platform. Inbound SMS from contacts appear in the conversations inbox in real time and trigger notifications.

  **Why it matters:** Enables real-time text communication with leads without leaving the platform.

  **How to use it:** Ensure your Twilio integration is active under **Settings > Phone Numbers**, then open any contact conversation to send an SMS.
</Update>

<Update label="November 13, 2020" description="Email Sending from Conversations" tags={["Feature", "Email"]}>
  **What's new:** Compose and send emails directly from the conversations module. Emails are tied to the contact record and appear in the conversation timeline.

  **Why it matters:** Keeps all outbound communication centralized alongside SMS and other channels.

  **How to use it:** Open a conversation, click the **Email** tab, and compose your message.
</Update>

<Update label="October 16, 2020" description="Conversation Notification Settings" tags={["Feature", "Settings"]}>
  **What's new:** Configure how you receive notifications for new conversations. Choose between in-app notifications, email alerts, or both. Set per-channel preferences for SMS, email, and Facebook messages.

  **Why it matters:** Ensures you are alerted through your preferred channel when new messages arrive.

  **How to use it:** Go to **Settings > Notifications > Conversations** to configure your preferences.
</Update>

<Update label="September 18, 2020" description="Conversation Unread Count Badge" tags={["Feature", "Conversations"]}>
  **What's new:** The Conversations tab now displays an unread message count badge so you can see at a glance how many messages need attention.

  **Why it matters:** Ensures you never miss an incoming lead message.

  **How to use it:** The badge updates automatically on the Conversations tab in the sidebar.
</Update>

<Update label="July 10, 2020" description="Contact List Column Customization" tags={["Feature", "Contacts"]}>
  **What's new:** Choose which columns appear in the contact list view. Add or remove columns for phone, email, tags, custom fields, and more.

  **Why it matters:** Lets you tailor the contact list to show the information most relevant to your workflow.

  **How to use it:** Click the **Columns** button above the contact list to configure visible fields.
</Update>

<Update label="June 12, 2020" description="Email Signature Support" tags={["Feature", "Email"]}>
  **What's new:** Create and save a default email signature that automatically appends to all outbound emails sent from the platform. Supports rich text formatting and links.

  **Why it matters:** Maintains professional branding on every email without manual effort.

  **How to use it:** Go to **Settings > Email > Signature** to create your default signature.
</Update>

<Update label="May 1, 2020" description="Contact Import Duplicate Detection" tags={["Feature", "Contacts"]}>
  **What's new:** The CSV import process now detects duplicate contacts based on email or phone number. Choose to skip, overwrite, or merge duplicate records during import.

  **Why it matters:** Prevents messy data from bulk imports and keeps your contact database clean.

  **How to use it:** Duplicate handling options appear during the import mapping step.
</Update>

<Update label="March 6, 2020" description="Unified Conversations Inbox" tags={["Feature", "Conversations"]}>
  **What's new:** All communication channels — email and SMS — are now unified in a single conversations inbox. View the full history of interactions with any contact in one chronological thread.

  **Why it matters:** Eliminates the need to switch between multiple tools to track conversations with leads and clients.

  **How to use it:** Navigate to the **Conversations** tab to see all messages in one place.
</Update>

<Update label="February 7, 2020" description="Conversations Module Beta" tags={["Feature", "Conversations"]}>
  **What's new:** The conversations module is now available in beta. This early release lets you view inbound messages from connected channels in a single inbox.

  **Why it matters:** Lays the groundwork for unified communication management across all channels.

  **How to use it:** Access the beta via the **Conversations** tab in the main navigation.
</Update>
