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

# HeyReach: Add Leads to a Campaign

export const SearchBar = ({onSearch, placeholder = "Search..."}) => {
  const uniqueId = `search-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
  const renderSearchBar = () => {
    return `
            <div x-data class="relative mb-4">
                <div class="relative">
                    <input
                        type="text"
                        class="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
                        placeholder="${placeholder}"
                        @input="$store.search.updateQuery($event.target.value)"
                    />
                    <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
                        <svg class="h-5 w-5 text-gray-400" viewBox="0 0 20 20" fill="currentColor">
                            <path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd" />
                        </svg>
                    </div>
                </div>
            </div>
        `;
  };
  if (typeof document === "undefined") {
    return null;
  } else {
    setTimeout(() => {
      const element = document.getElementById(uniqueId);
      if (element) {
        element.innerHTML = renderSearchBar();
        if (window.Alpine?.initTree) {
          if (typeof window !== 'undefined') {
            window.Alpine = window.Alpine || ({});
            window.Alpine.store('search', {
              query: '',
              updateQuery(value) {
                this.query = value;
                window.dispatchEvent(new CustomEvent('search-query-updated', {
                  detail: {
                    query: value
                  }
                }));
              }
            });
          }
          window.Alpine.initTree(element);
        }
      }
    }, 1);
  }
  return <div id={uniqueId}></div>;
};

export const AccordionText = ({heading, content}) => {
  const uniqueId = `accordion-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
  const renderAccordion = (title, text) => {
    const formattedText = text.split('\n').map(line => line.trim()).filter(line => line.length > 0).map(line => `<p class="mb-4 last:mb-0">${line}</p>`).join('');
    return `
        <div>
            <div class="mint-border-b mint-border-[#D1D1D1] mint-my-8"></div>
            <div class="bg-white dark:bg-gray-800 border !border-[#333] rounded-[4px] px-6 py-5 mb-6" x-data="{ open: true }">
                <div class="flex justify-between items-center cursor-pointer" @click="open = !open">
                    <div class="text-xl font-semibold text-gray-900 dark:text-gray-100">${title}</div>
                    <div class="transform transition-all duration-200" :class="open ? 'rotate-90' : 'rotate-0'">
                        <svg width="12" height="8" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
                            <path d="M1.41 0.589996L6 5.17L10.59 0.589996L12 2L6 8L0 2L1.41 0.589996Z" fill="currentColor" class="text-gray-900 dark:text-gray-100"/>
                        </svg>
                    </div>
                </div>
                <div
                    x-show="open"
                    x-transition:enter="transition ease-out duration-200"
                    x-transition:enter-start="opacity-0 transform -translate-y-2"
                    x-transition:enter-end="opacity-100 transform translate-y-0"
                    x-transition:leave="transition ease-in duration-200"
                    x-transition:leave-start="opacity-100 transform translate-y-0"
                    x-transition:leave-end="opacity-0 transform -translate-y-2"
                    class="mt-4"
                >
                    <div class="text-sm text-gray-800 dark:text-gray-200 leading-relaxed">
                        ${formattedText}
                    </div>
                </div>
            </div>
        </div>
        `;
  };
  if (typeof document === "undefined") {
    return null;
  } else {
    setTimeout(() => {
      const element = document.getElementById(uniqueId);
      if (element) {
        element.innerHTML = renderAccordion(heading, content);
        if (window.Alpine?.initTree) {
          window.Alpine.initTree(element);
        } else {
          console.error("Alpine.js is not loaded. Please ensure Alpine.js is included in your project.");
        }
      }
    }, 1);
  }
  return <div id={uniqueId}></div>;
};

export const Breadcrumbs = ({items, disableNavigate = false, icon}) => {
  const uniqueId = `breadcrumb-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
  const defaultIcon = `
        <svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
            <rect x="4" y="2" width="13" height="17" fill="#C9C7FF"/>
            <path d="M19.0312 18.375H17.0625V2.625H17.7188C17.8928 2.625 18.0597 2.55586 18.1828 2.43279C18.3059 2.30972 18.375 2.1428 18.375 1.96875C18.375 1.7947 18.3059 1.62778 18.1828 1.50471C18.0597 1.38164 17.8928 1.3125 17.7188 1.3125H3.28125C3.1072 1.3125 2.94028 1.38164 2.81721 1.50471C2.69414 1.62778 2.625 1.7947 2.625 1.96875C2.625 2.1428 2.69414 2.30972 2.81721 2.43279C2.94028 2.55586 3.1072 2.625 3.28125 2.625H3.9375V18.375H1.96875C1.7947 18.375 1.62778 18.4441 1.50471 18.5672C1.38164 18.6903 1.3125 18.8572 1.3125 19.0312C1.3125 19.2053 1.38164 19.3722 1.50471 19.4953C1.62778 19.6184 1.7947 19.6875 1.96875 19.6875H19.0312C19.2053 19.6875 19.3722 19.6184 19.4953 19.4953C19.6184 19.3722 19.6875 19.2053 19.6875 19.0312C19.6875 18.8572 19.6184 18.6903 19.4953 18.5672C19.3722 18.4441 19.2053 18.375 19.0312 18.375ZM5.25 2.625H15.75V18.375H13.125V15.0938C13.125 14.9197 13.0559 14.7528 12.9328 14.6297C12.8097 14.5066 12.6428 14.4375 12.4688 14.4375H8.53125C8.3572 14.4375 8.19028 14.5066 8.06721 14.6297C7.94414 14.7528 7.875 14.9197 7.875 15.0938V18.375H5.25V2.625ZM11.8125 18.375H9.1875V15.75H11.8125V18.375ZM7.21875 5.25C7.21875 5.07595 7.28789 4.90903 7.41096 4.78596C7.53403 4.66289 7.70095 4.59375 7.875 4.59375H9.1875C9.36155 4.59375 9.52847 4.66289 9.65154 4.78596C9.77461 4.90903 9.84375 5.07595 9.84375 5.25C9.84375 5.42405 9.77461 5.59097 9.65154 5.71404C9.52847 5.83711 9.36155 5.90625 9.1875 5.90625H7.875C7.70095 5.90625 7.53403 5.83711 7.41096 5.71404C7.28789 5.59097 7.21875 5.42405 7.21875 5.25ZM11.1562 5.25C11.1562 5.07595 11.2254 4.90903 11.3485 4.78596C11.4715 4.66289 11.6385 4.59375 11.8125 4.59375H13.125C13.299 4.59375 13.466 4.66289 13.589 4.78596C13.7121 4.90903 13.7812 5.07595 13.7812 5.25C13.7812 5.42405 13.7121 5.59097 13.589 5.71404C13.466 5.83711 13.299 5.90625 13.125 5.90625H11.8125C11.6385 5.90625 11.4715 5.83711 11.3485 5.71404C11.2254 5.59097 11.1562 5.42405 11.1562 5.25ZM7.21875 8.53125C7.21875 8.3572 7.28789 8.19028 7.41096 8.06721C7.53403 7.94414 7.70095 7.875 7.875 7.875H9.1875C9.36155 7.875 9.52847 7.94414 9.65154 8.06721C9.77461 8.19028 9.84375 8.3572 9.84375 8.53125C9.84375 8.7053 9.77461 8.87222 9.65154 8.99529C9.52847 9.11836 9.36155 9.1875 9.1875 9.1875H7.875C7.70095 9.1875 7.53403 9.11836 7.41096 8.99529C7.28789 8.87222 7.21875 8.7053 7.21875 8.53125ZM11.1562 8.53125C11.1562 8.3572 11.2254 8.19028 11.3485 8.06721C11.4715 7.94414 11.6385 7.875 11.8125 7.875H13.125C13.299 7.875 13.466 7.94414 13.589 8.06721C13.7121 8.19028 13.7812 8.3572 13.7812 8.53125C13.7812 8.7053 13.7121 8.87222 13.589 8.99529C13.466 9.11836 13.299 9.1875 13.125 9.1875H11.8125C11.6385 9.1875 11.4715 9.11836 11.3485 8.99529C11.2254 8.87222 11.1562 8.7053 11.1562 8.53125ZM7.21875 11.8125C7.21875 11.6385 7.28789 11.4715 7.41096 11.3485C7.53403 11.2254 7.70095 11.1562 7.875 11.1562H9.1875C9.36155 11.1562 9.52847 11.2254 9.65154 11.3485C9.77461 11.4715 9.84375 11.6385 9.84375 11.8125C9.84375 11.9865 9.77461 12.1535 9.65154 12.2765C9.52847 12.3996 9.36155 12.4688 9.1875 12.4688H7.875C7.70095 12.4688 7.53403 12.3996 7.41096 12.2765C7.28789 12.1535 7.21875 11.9865 7.21875 11.8125ZM11.1562 11.8125C11.1562 11.6385 11.2254 11.4715 11.3485 11.3485C11.4715 11.2254 11.6385 11.1562 11.8125 11.1562H13.125C13.299 11.1562 13.466 11.2254 13.589 11.3485C13.7121 11.4715 13.7812 11.6385 13.7812 11.8125C13.7812 11.9865 13.7121 12.1535 13.589 12.2765C13.466 12.3996 13.299 12.4688 13.125 12.4688H11.8125C11.6385 12.4688 11.4715 12.3996 11.3485 12.2765C11.2254 12.1535 11.1562 11.9865 11.1562 11.8125Z" fill="black"/>
        </svg>
    `;
  const renderBreadcrumbs = breadcrumbItems => {
    return `
            <div class="flex items-center gap-2">
                <div class="w-6 h-6">
                ${icon || defaultIcon}
                </div>
                <nav class="flex items-center" aria-label="Breadcrumb">
                    <div class="inline-flex items-center">
                        ${breadcrumbItems.map((item, index) => `
                            ${index > 0 ? `
                                <div class="mx-1 text-[#6C6C6C] font-normal">/</div>
                            ` : ''}
                            <div class="inline-flex items-center">
                                ${!disableNavigate && item.href && !item.isActive ? `
                                    <a href="${item.href}" class="text-[#000000] font-medium hover:text-[#000000] text-sm uppercase tracking-wider">
                                        ${item.label}
                                    </a>
                                ` : `
                                    <span class="text-sm uppercase tracking-wider ${item.isActive ? 'text-[#6C6C6C] font-normal' : 'text-[#000000] font-medium'}">
                                        ${item.label}
                                    </span>
                                `}
                            </div>
                        `).join('')}
                    </div>
                </nav>
            </div>
        `;
  };
  if (typeof document === "undefined") {
    return null;
  } else {
    setTimeout(() => {
      const element = document.getElementById(uniqueId);
      if (element) {
        element.innerHTML = renderBreadcrumbs(items);
      }
    }, 1);
  }
  return <div id={uniqueId}></div>;
};

export const ActionOutputs = ({outputs = []}) => {
  const uniqueId = `div-out-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
  const highlightText = (text, query) => {
    if (!query || query.trim() === '') return text;
    const queryLower = query.toLowerCase().trim();
    const textStr = String(text);
    const textLower = textStr.toLowerCase();
    if (!textLower.includes(queryLower)) return text;
    const parts = [];
    let lastIndex = 0;
    let index = textLower.indexOf(queryLower);
    while (index !== -1) {
      if (index > lastIndex) {
        parts.push(textStr.substring(lastIndex, index));
      }
      parts.push(`<span class="bg-[#ECFF44]">${textStr.substring(index, index + queryLower.length)}</span>`);
      lastIndex = index + queryLower.length;
      index = textLower.indexOf(queryLower, lastIndex);
    }
    if (lastIndex < textStr.length) {
      parts.push(textStr.substring(lastIndex));
    }
    return parts.join('');
  };
  function filterCompanyData(data, searchQuery) {
    if (!searchQuery) return data;
    const queryLower = searchQuery.toLowerCase().trim();
    return data.reduce((filteredSections, section) => {
      const filteredItems = section.items.filter(item => {
        if (item.nested) {
          return item.name.toLowerCase().includes(queryLower) || item.values.some(value => value.toLowerCase().includes(queryLower));
        }
        return item.name.toLowerCase().includes(queryLower) || String(item.value).toLowerCase().includes(queryLower);
      });
      if (filteredItems.length > 0) {
        return [...filteredSections, {
          heading: section.heading,
          items: filteredItems
        }];
      }
      return filteredSections;
    }, []);
  }
  const lightenColor = (color, percent) => {
    const num = parseInt(color.replace("#", ""), 16), amt = Math.round(2.55 * percent), R = (num >> 16) + amt, G = (num >> 8 & 0x00ff) + amt, B = (num & 0x0000ff) + amt;
    return `#${(0x1000000 + (R < 255 ? R < 1 ? 0 : R : 255) * 0x10000 + (G < 255 ? G < 1 ? 0 : G : 255) * 0x100 + (B < 255 ? B < 1 ? 0 : B : 255)).toString(16).slice(1)}`;
  };
  const firstLevel = (inputName, inputValue, required, accentColor, searchQuery = '', icon = null) => {
    return `
            <div class="flex gap-3 items-center border border-[#B0B0B0] dark:border-gray-600 rounded-[2px] py-1 px-2 max-w-fit">
                <div class="text-xs font-semibold tracking-wider mint-border min-w-fit no-wrap flex items-center gap-1
                    ${accentColor ? `bg-[${accentColor}] dark:bg-opacity-90 text-gray-800` : "mint-bg-[#E5E5E5] dark:bg-gray-700 text-gray-800"} px-1 rounded-[2px]">
                      ${icon ? icon : ""}
                    <span>${searchQuery ? highlightText(inputName?.toUpperCase(), searchQuery) : inputName?.toUpperCase()}</span>
                </div>
                <div class="text-xs italic text-gray-700 dark:text-gray-200">
                    ${searchQuery ? highlightText(inputValue, searchQuery) : inputValue}
                </div>
                ${required ? `<div class="w-3">
                    <svg width="11" height="13" viewBox="0 0 11 13" fill="none" xmlns="http://www.w3.org/2000/svg">
                        <path d="..." fill="#E9A700" class="dark:fill-yellow-400"/>
                    </svg>
                </div>` : ""}
            </div>
        `;
  };
  const nestedLevel = (inputName, inputValues, accentColor, searchQuery = '') => {
    const lighterAccentColor = accentColor ? lightenColor(accentColor, 11) : "#E5E5E5";
    const values = Array.isArray(inputValues) ? inputValues : [inputValues];
    const valueElements = values.map(value => `
            <div class="text-xs font-light tracking-wider mint-border min-w-fit no-wrap max-w-[45ch] text-ellipsis
                ${accentColor ? `bg-[${lighterAccentColor}] dark:bg-opacity-90 text-gray-800` : "mint-bg-[#E5E5E5] dark:bg-gray-700 text-gray-800"} px-1 rounded-[2px]">
                ${searchQuery ? highlightText(value?.toUpperCase(), searchQuery) : value?.toUpperCase()}
            </div>
        `).join('');
    return `
            <div class="flex gap-3 items-center border border-[#B0B0B0] dark:border-gray-600 rounded-[2px] py-1 px-2 max-w-fit overflow-x-auto">
                <div class="flex gap-2 flex-wrap items-center">
                    <div class="text-xs font-semibold tracking-wider mint-border min-w-fit no-wrap
                        ${accentColor ? `bg-[${accentColor}] dark:bg-opacity-90 text-gray-800` : "mint-bg-[#E5E5E5] dark:bg-gray-700 text-gray-800 "} px-1 rounded-[2px]">
                        ${searchQuery ? highlightText(inputName?.toUpperCase(), searchQuery) : inputName?.toUpperCase()}
                    </div>
                    <div class="text-gray-600 dark:text-gray-300">></div>
                    ${valueElements}
                </div>
            </div>
        `;
  };
  const responseWrapper = (section, searchQuery = '') => {
    const {heading, items = []} = section;
    return `
            <div class="bg-white dark:bg-gray-800 border border-[#ABABAB] dark:border-gray-600 rounded-[4px] px-6 py-5 mb-6" x-data="{ open: true }">
                <div class="flex justify-between items-center cursor-pointer" @click="open = !open">
                    <div class="text-sm text-gray-900 font-medium">
                        ${searchQuery ? highlightText(heading, searchQuery) : heading}
                    </div>
                    <div class="transform transition-all duration-200" :class="open ? 'rotate-90' : 'rotate-0'">
                        <svg width="12" height="8" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
                            <path d="M1.41 0.589996L6 5.17L10.59 0.589996L12 2L6 8L0 2L1.41 0.589996Z" fill="currentColor" class="text-gray-900"/>
                        </svg>
                    </div>
                </div>
                <div
                    x-show="open"
                    x-transition:enter="transition ease-out duration-200"
                    x-transition:enter-start="opacity-0 transform -translate-y-2"
                    x-transition:enter-end="opacity-100 transform translate-y-0"
                    x-transition:leave="transition ease-in duration-200"
                    x-transition:leave-start="opacity-100 transform translate-y-0"
                    x-transition:leave-end="opacity-0 transform -translate-y-2"
                    class="mt-4"
                >
                    <div class="flex gap-3 items-center flex-wrap">
                        ${items.map(item => {
      if (item.nested) {
        return nestedLevel(item.name, item.values, item.accentColor, searchQuery);
      }
      return firstLevel(item.name, item.value, item.required, item.accentColor, searchQuery, item.icon);
    }).join('')}
                    </div>
                </div>
            </div>
        `;
  };
  if (typeof document === "undefined") {
    return null;
  } else {
    setTimeout(() => {
      const element = document.getElementById(uniqueId);
      if (element) {
        element.innerHTML = `
                    <div >
                        ${outputs.map(section => responseWrapper(section)).join('')}
                    </div>
                `;
        window.addEventListener("search-query-updated", e => {
          if (e.detail.query) {
            const filteredData = filterCompanyData(outputs, e.detail.query);
            element.innerHTML = `
                            <div >
                                ${filteredData.map(section => responseWrapper(section, e.detail.query)).join('')}
                            </div>
                        `;
          } else {
            element.innerHTML = `
                            <div >
                                ${outputs.map(section => responseWrapper(section)).join('')}
                            </div>
                        `;
          }
        });
        if (window.Alpine?.initTree) {
          window.Alpine.initTree(element);
        } else {
          console.error("Alpine.js is not loaded. Please ensure Alpine.js is included in your project.");
        }
      }
    }, 1);
  }
  return <div id={uniqueId}></div>;
};

export const ActionInputs = ({inputs = []}) => {
  const uniqueId = `div-in-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
  const input = (inputName, inputValue, required, accentColor) => {
    return `
            <div class="flex gap-3 items-center border border-[#B0B0B0] dark:border-gray-600 rounded-[2px] py-1 px-2 max-w-fit">
                <div class="text-xs font-semibold tracking-wider mint-border
                    ${accentColor ? `bg-[${accentColor}] dark:bg-opacity-90 text-gray-800 ` : "mint-bg-[#E5E5E5] dark:bg-gray-700 text-gray-800 dark:text-gray-100"} px-1 rounded-[2px]">
                    ${inputName?.toUpperCase()}
                </div>
                <div class="text-xs italic max-w-[27ch] text-nowrap text-ellipsis overflow-hidden text-gray-700 dark:text-gray-200">
                    ${inputValue}
                </div>
                ${required ? `
                <div class="w-3">
                    <svg width="11" height="13" viewBox="0 0 11 13" fill="none" xmlns="http://www.w3.org/2000/svg">
                        <path d="..." fill="#E9A700" class="dark:fill-yellow-400"/>
                    </svg>
                </div>` : ""}
            </div>
        `;
  };
  if (typeof document === "undefined") {
    return null;
  } else {
    setTimeout(() => {
      const element = document.getElementById(uniqueId);
      if (element) {
        const requiredInputs = inputs.filter(i => i.required);
        const optionalInputs = inputs.filter(i => !i.required);
        element.innerHTML = `
                    ${requiredInputs.length > 0 ? `
                        <div class="mb-5">
                            <div class="mb-2 font-light text-sm text-gray-900 dark:text-gray-100">Required</div>
                            <div class="flex flex-wrap gap-2">
                                ${requiredInputs.map(i => input(i.name, i.value, true, i.accentColor)).join('')}
                            </div>
                        </div>
                    ` : ''}

                    ${optionalInputs.length > 0 ? `
                        <div class="mt-5">
                            <div class="mb-2 font-light text-sm text-gray-900 dark:text-gray-100">Optional</div>
                            <div class="flex flex-wrap gap-2">
                                ${optionalInputs.map(i => input(i.name, i.value, false, i.accentColor)).join('')}
                            </div>
                        </div>
                    ` : ''}
                `;
        if (window.Alpine?.initTree) {
          window.Alpine.initTree(element);
        }
      }
    }, 1);
  }
  return <div id={uniqueId}></div>;
};

<Breadcrumbs
  items={[
{ label: "Outreach", href: "/" },
{ label: "HeyReach: Add Leads to a Campaign", isActive: true },
]}
  disableNavigate={true}
  icon="<img src='https://storage.googleapis.com/public_image_assets/internal-web-app-logos/Group%2039932.svg' class='m-0'/>"
/>

<div className="header-container">
  <div className="logo-container">
    <img
      src="https://earlyshark.com/wp-content/uploads/2023/07/HeyReach-logo.png"
      style={{
    height: "160px",
    maxWidth: "160px",
    objectFit: "contain",
    borderRadius: "0.5rem",
  }}
    />
  </div>

  <div className="content-container">
    <h1>HeyReach: Add Leads to a Campaign</h1>

    <p>
      HeyReach is a sales outreach platform that helps businesses automate their
      lead generation and follow-up processes. It enables teams to create
      personalized email sequences, track engagement, and manage prospects
      through customizable campaigns.
    </p>
  </div>
</div>

<div className="border-b border-[#D1D1D1] my-8" />

<Card>
  <div className="rounded-lg bg-white dark:bg-background-dark">
    <h2 className="text-xl font-medium mb-3 text-gray-900 dark:text-gray-100">
      Why use this action?
    </h2>

    <p className="text-gray-800 dark:text-gray-200">
      HeyReach provides powerful automation for your outreach campaigns,
      allowing you to seamlessly add leads with custom variables for
      personalization. It streamlines the prospecting process by handling the
      technical aspects of campaign management, so you can focus on building
      relationships.
    </p>
  </div>
</Card>

<div className="border-b border-[#D1D1D1] my-8" />

<Card>
  <div className="text-sm font-semibold mb-2 mt-1">INPUTS</div>

  <ActionInputs
    inputs={[
  { name: "CAMPAIGN", value: "", required: true, accentColor: "#FFF5A6" },
  { name: "EMAIL", value: "", required: true, accentColor: "#FFF5A6" },
  { name: "FIRST NAME", value: "", required: false, accentColor: "#FFF5A6" },
  { name: "LAST NAME", value: "", required: false, accentColor: "#FFF5A6" },
  { name: "COMPANY", value: "", required: false, accentColor: "#FFF5A6" }
]}
  />
</Card>

<Card>
  <div className="text-sm font-semibold mb-2 mt-1">OUTPUTS </div>
  <div className="text-xs mb-2 mt-1">RESPONSE </div>

  <div class="border w-full my-6" />

  <SearchBar />

  <ActionOutputs
    outputs={[
  {
    heading: "OPERATION STATUS",
    items: [
      {
        name: "success status",
        value: "true/false",
        accentColor: "#CFFFEC",
      },
      {
        name: "message",
        value: "Lead successfully added to campaign",
        accentColor: "#CFFFEC",
      },
    ],
  },
]}
  />
</Card>

<AccordionText
  heading="What can I do with this?"
  content={`
📧 <b>Campaign Automation:</b> Set up and manage multi-touch email sequences without manual intervention. \n

🎯 <b>Personalization at Scale:</b> Leverage custom variables to create personalized messaging for hundreds of prospects. \n

📊 <b>Lead Management:</b> Organize prospects into specific campaigns based on criteria and segments. \n

⏱️ <b>Time Optimization:</b> Save hours by automating the addition of leads to your outreach workflows.

`}
/>

<div className="border-b border-[#D1D1D1] mb-8 mt-0" />

<ActionOutputs
  outputs={[
{
  heading: "Data Sources",
  items: [
    { name: "HeyReach API", value: "", accentColor: "#CFFFEC" },
    {
      name: "User-provided lead information",
      value: "",
      accentColor: "#CFFFEC",
    },
  ],
},
]}
/>

<div className="border-b border-[#D1D1D1] mb-8 mt-0" />
