{"id":780,"date":"2026-05-13T19:41:33","date_gmt":"2026-05-13T19:41:33","guid":{"rendered":"https:\/\/360bizbrokers.com\/?page_id=780"},"modified":"2026-05-13T20:00:17","modified_gmt":"2026-05-13T20:00:17","slug":"biz-transactions-tracking-tool","status":"publish","type":"page","link":"https:\/\/360bizbrokers.com\/pt\/biz-transactions-tracking-tool\/","title":{"rendered":"Biz Transactions Tracking Tool"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"780\" class=\"elementor elementor-780\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7c41534 e-flex e-con-boxed e-con e-parent\" data-id=\"7c41534\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8fd15b1 elementor-widget elementor-widget-html\" data-id=\"8fd15b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <title>Transactions Check List & Document Tracker Dashboard<\/title>\n  <style>\n    :root {\n      --bg: #f6f8fb;\n      --card: #ffffff;\n      --text: #1f2937;\n      --muted: #6b7280;\n      --border: #e5e7eb;\n      --primary: #2563eb;\n      --primary-dark: #1d4ed8;\n      --red: #dc2626;\n      --yellow: #d97706;\n      --blue: #2563eb;\n      --green: #16a34a;\n      --gray: #9ca3af;\n      --orange: #ea580c;\n    }\n\n    * {\n      box-sizing: border-box;\n    }\n\n    body {\n      margin: 0;\n      font-family: Arial, Helvetica, sans-serif;\n      background: var(--bg);\n      color: var(--text);\n    }\n\n    .tracker-app {\n      max-width: 1200px;\n      margin: 0 auto;\n      padding: 32px 16px;\n    }\n\n    .tracker-header {\n      display: flex;\n      justify-content: space-between;\n      gap: 16px;\n      align-items: flex-start;\n      margin-bottom: 24px;\n      flex-wrap: wrap;\n    }\n\n    .tracker-header h1 {\n      margin: 0 0 8px;\n      font-size: 32px;\n      line-height: 1.2;\n    }\n\n    .tracker-header p {\n      margin: 0;\n      color: var(--muted);\n      max-width: 720px;\n      font-size: 16px;\n    }\n\n    .button {\n      border: 0;\n      border-radius: 10px;\n      background: var(--primary);\n      color: #fff;\n      padding: 11px 16px;\n      font-size: 14px;\n      font-weight: 700;\n      cursor: pointer;\n      transition: 0.2s ease;\n    }\n\n    .button:hover {\n      background: var(--primary-dark);\n    }\n\n    .button.secondary {\n      background: #eef2ff;\n      color: var(--primary);\n    }\n\n    .button.secondary:hover {\n      background: #dbeafe;\n    }\n\n    .summary-grid {\n      display: grid;\n      grid-template-columns: repeat(4, minmax(0, 1fr));\n      gap: 16px;\n      margin-bottom: 24px;\n    }\n\n    .summary-card,\n    .panel,\n    .listing-card {\n      background: var(--card);\n      border: 1px solid var(--border);\n      border-radius: 16px;\n      box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);\n    }\n\n    .summary-card {\n      padding: 18px;\n    }\n\n    .summary-label {\n      color: var(--muted);\n      font-size: 13px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: 0.04em;\n    }\n\n    .summary-value {\n      margin-top: 8px;\n      font-size: 30px;\n      font-weight: 800;\n    }\n\n    .layout {\n      display: grid;\n      grid-template-columns: 360px 1fr;\n      gap: 20px;\n    }\n\n    .panel {\n      padding: 18px;\n    }\n\n    .panel h2 {\n      margin: 0 0 14px;\n      font-size: 20px;\n    }\n\n    .listing-list {\n      display: grid;\n      gap: 12px;\n    }\n\n    .listing-card {\n      padding: 16px;\n      cursor: pointer;\n      transition: 0.2s ease;\n    }\n\n    .listing-card:hover,\n    .listing-card.active {\n      border-color: var(--primary);\n      transform: translateY(-1px);\n    }\n\n    .listing-title-row {\n      display: flex;\n      justify-content: space-between;\n      gap: 10px;\n      align-items: flex-start;\n    }\n\n    .listing-card h3 {\n      margin: 0;\n      font-size: 17px;\n    }\n\n    .listing-meta {\n      margin-top: 6px;\n      color: var(--muted);\n      font-size: 13px;\n    }\n\n    .progress-wrap {\n      margin-top: 12px;\n    }\n\n    .progress-bar {\n      height: 9px;\n      background: #e5e7eb;\n      border-radius: 999px;\n      overflow: hidden;\n    }\n\n    .progress-fill {\n      height: 100%;\n      background: var(--green);\n      border-radius: 999px;\n      width: 0;\n    }\n\n    .progress-text {\n      display: flex;\n      justify-content: space-between;\n      margin-top: 6px;\n      color: var(--muted);\n      font-size: 13px;\n    }\n\n    .badge {\n      display: inline-flex;\n      align-items: center;\n      border-radius: 999px;\n      padding: 5px 9px;\n      font-size: 12px;\n      font-weight: 800;\n      white-space: nowrap;\n    }\n\n    .badge.red { background: #fee2e2; color: var(--red); }\n    .badge.yellow { background: #fef3c7; color: var(--yellow); }\n    .badge.blue { background: #dbeafe; color: var(--blue); }\n    .badge.green { background: #dcfce7; color: var(--green); }\n    .badge.gray { background: #f3f4f6; color: #4b5563; }\n    .badge.orange { background: #ffedd5; color: var(--orange); }\n\n    .detail-header {\n      display: flex;\n      justify-content: space-between;\n      gap: 14px;\n      flex-wrap: wrap;\n      align-items: flex-start;\n      margin-bottom: 16px;\n    }\n\n    .detail-header h2 {\n      margin: 0 0 6px;\n      font-size: 24px;\n    }\n\n    .detail-meta {\n      color: var(--muted);\n      font-size: 14px;\n    }\n\n    .toolbar {\n      display: flex;\n      gap: 10px;\n      flex-wrap: wrap;\n      margin-bottom: 16px;\n    }\n\n    .toolbar input,\n    .toolbar select {\n      border: 1px solid var(--border);\n      border-radius: 10px;\n      padding: 10px 12px;\n      font-size: 14px;\n      background: #fff;\n      min-width: 170px;\n    }\n\n    .table-wrap {\n      overflow-x: auto;\n      border: 1px solid var(--border);\n      border-radius: 14px;\n    }\n\n    table {\n      width: 100%;\n      border-collapse: collapse;\n      min-width: 820px;\n      background: #fff;\n    }\n\n    th,\n    td {\n      padding: 13px 12px;\n      border-bottom: 1px solid var(--border);\n      text-align: left;\n      font-size: 14px;\n      vertical-align: top;\n    }\n\n    th {\n      background: #f9fafb;\n      color: #374151;\n      font-size: 12px;\n      text-transform: uppercase;\n      letter-spacing: 0.04em;\n    }\n\n    tr:last-child td {\n      border-bottom: 0;\n    }\n\n    .doc-name {\n      font-weight: 800;\n    }\n\n    .notes {\n      color: var(--muted);\n      max-width: 260px;\n    }\n\n    select.status-select {\n      min-width: 135px;\n      border: 1px solid var(--border);\n      border-radius: 9px;\n      padding: 8px;\n      background: #fff;\n    }\n\n    .reminder-box {\n      margin-top: 20px;\n      background: #fff7ed;\n      border: 1px solid #fed7aa;\n      border-radius: 16px;\n      padding: 16px;\n    }\n\n    .reminder-box h3 {\n      margin: 0 0 8px;\n      color: #9a3412;\n    }\n\n    .reminder-box ul {\n      margin: 10px 0 0;\n      padding-left: 18px;\n      color: #7c2d12;\n    }\n\n    .modal-backdrop {\n      position: fixed;\n      inset: 0;\n      background: rgba(15, 23, 42, 0.55);\n      display: none;\n      align-items: center;\n      justify-content: center;\n      padding: 20px;\n      z-index: 9999;\n    }\n\n    .modal {\n      width: min(540px, 100%);\n      background: #fff;\n      border-radius: 18px;\n      padding: 22px;\n      box-shadow: 0 20px 60px rgba(0,0,0,0.25);\n    }\n\n    .modal h2 {\n      margin: 0 0 14px;\n    }\n\n    .form-grid {\n      display: grid;\n      gap: 12px;\n    }\n\n    .form-grid label {\n      display: grid;\n      gap: 6px;\n      font-size: 13px;\n      font-weight: 800;\n    }\n\n    .form-grid input,\n    .form-grid select {\n      border: 1px solid var(--border);\n      border-radius: 10px;\n      padding: 10px 12px;\n      font-size: 14px;\n    }\n\n    .modal-actions {\n      margin-top: 16px;\n      display: flex;\n      justify-content: flex-end;\n      gap: 10px;\n    }\n\n    @media (max-width: 920px) {\n      .summary-grid {\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n      }\n\n      .layout {\n        grid-template-columns: 1fr;\n      }\n    }\n\n    @media (max-width: 560px) {\n      .summary-grid {\n        grid-template-columns: 1fr;\n      }\n\n      .tracker-header h1 {\n        font-size: 26px;\n      }\n    }\n  <\/style>\n<\/head>\n<body>\n  <div class=\"tracker-app\">\n    <header class=\"tracker-header\">\n      <div>\n        <h1>Listing Checklist & Document Tracker<\/h1>\n        <p>Track collected documents, missing paperwork, review status, due dates, owners, and reminders for every active listing.<\/p>\n      <\/div>\n      <button class=\"button\" onclick=\"openModal()\">+ Add Listing<\/button>\n    <\/header>\n\n    <section class=\"summary-grid\">\n      <div class=\"summary-card\">\n        <div class=\"summary-label\">Active Listings<\/div>\n        <div class=\"summary-value\" id=\"activeListings\">0<\/div>\n      <\/div>\n      <div class=\"summary-card\">\n        <div class=\"summary-label\">Missing Docs<\/div>\n        <div class=\"summary-value\" id=\"missingDocs\">0<\/div>\n      <\/div>\n      <div class=\"summary-card\">\n        <div class=\"summary-label\">Overdue Docs<\/div>\n        <div class=\"summary-value\" id=\"overdueDocs\">0<\/div>\n      <\/div>\n      <div class=\"summary-card\">\n        <div class=\"summary-label\">Avg. Completion<\/div>\n        <div class=\"summary-value\" id=\"avgCompletion\">0%<\/div>\n      <\/div>\n    <\/section>\n\n    <main class=\"layout\">\n      <aside class=\"panel\">\n        <h2>Active Listings<\/h2>\n        <div class=\"listing-list\" id=\"listingList\"><\/div>\n      <\/aside>\n\n      <section class=\"panel\">\n        <div class=\"detail-header\">\n          <div>\n            <h2 id=\"detailTitle\">Select a listing<\/h2>\n            <div class=\"detail-meta\" id=\"detailMeta\"><\/div>\n          <\/div>\n          <span class=\"badge gray\" id=\"readinessBadge\">No listing selected<\/span>\n        <\/div>\n\n        <div class=\"toolbar\">\n          <input type=\"text\" id=\"searchInput\" placeholder=\"Search documents...\" oninput=\"renderDetail()\" \/>\n          <select id=\"statusFilter\" onchange=\"renderDetail()\">\n            <option value=\"all\">All statuses<\/option>\n            <option value=\"Missing\">Missing<\/option>\n            <option value=\"Requested\">Requested<\/option>\n            <option value=\"Received\">Received<\/option>\n            <option value=\"Reviewed\">Reviewed<\/option>\n            <option value=\"Overdue\">Overdue<\/option>\n            <option value=\"N\/A\">N\/A<\/option>\n          <\/select>\n          <button class=\"button secondary\" onclick=\"sendReminderSummary()\">Generate Reminder Summary<\/button>\n        <\/div>\n\n        <div class=\"table-wrap\">\n          <table>\n            <thead>\n              <tr>\n                <th>Document<\/th>\n                <th>Status<\/th>\n                <th>Owner<\/th>\n                <th>Due Date<\/th>\n                <th>Last Updated<\/th>\n                <th>Reminder<\/th>\n                <th>Notes<\/th>\n              <\/tr>\n            <\/thead>\n            <tbody id=\"documentRows\"><\/tbody>\n          <\/table>\n        <\/div>\n\n        <div class=\"reminder-box\" id=\"reminderBox\">\n          <h3>Reminder Center<\/h3>\n          <p>Select a listing to see missing and overdue document reminders.<\/p>\n        <\/div>\n      <\/section>\n    <\/main>\n  <\/div>\n\n  <div class=\"modal-backdrop\" id=\"modalBackdrop\">\n    <div class=\"modal\">\n      <h2>Add New Listing<\/h2>\n      <div class=\"form-grid\">\n        <label>\n          Listing Name\n          <input id=\"newListingName\" placeholder=\"Example: Joe's Pizza\" \/>\n        <\/label>\n        <label>\n          Listing Type\n          <select id=\"newListingType\">\n            <option>Restaurant<\/option>\n            <option>Franchise<\/option>\n            <option>Retail<\/option>\n            <option>Service Business<\/option>\n            <option>Manufacturing<\/option>\n          <\/select>\n        <\/label>\n        <label>\n          Broker \/ Coordinator\n          <input id=\"newListingOwner\" placeholder=\"Example: Sarah Morgan\" \/>\n        <\/label>\n      <\/div>\n      <div class=\"modal-actions\">\n        <button class=\"button secondary\" onclick=\"closeModal()\">Cancel<\/button>\n        <button class=\"button\" onclick=\"addListing()\">Create Listing<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    const defaultDocs = [\n      \"Tax Returns\",\n      \"P&L Statement\",\n      \"Lease\",\n      \"Franchise Agreement\",\n      \"Equipment List\",\n      \"Utility Bills\",\n      \"Payroll Reports\",\n      \"Bank Statements\",\n      \"Inventory List\",\n      \"Seller Disclosure\"\n    ];\n\n    let listings = [\n      {\n        id: 1,\n        name: \"Joe's Pizza\",\n        type: \"Restaurant\",\n        owner: \"Sarah Morgan\",\n        documents: [\n          doc(\"Tax Returns\", \"Requested\", \"Seller \/ CPA\", \"2026-05-06\", \"Need 2022 and 2023 returns.\"),\n          doc(\"P&L Statement\", \"Received\", \"Seller\", \"2026-05-04\", \"Needs broker review.\"),\n          doc(\"Lease\", \"Overdue\", \"Seller \/ Landlord\", \"2026-05-01\", \"Follow up with landlord.\"),\n          doc(\"Franchise Agreement\", \"N\/A\", \"N\/A\", \"\", \"Not a franchise.\"),\n          doc(\"Equipment List\", \"Reviewed\", \"Seller\", \"2026-04-29\", \"Complete.\"),\n          doc(\"Utility Bills\", \"Missing\", \"Seller\", \"2026-05-07\", \"Need last 12 months.\"),\n          doc(\"Payroll Reports\", \"Requested\", \"Payroll Provider\", \"2026-05-08\", \"Waiting on ADP export.\"),\n          doc(\"Bank Statements\", \"Reviewed\", \"Seller\", \"2026-04-28\", \"Complete.\")\n        ]\n      },\n      {\n        id: 2,\n        name: \"Sunshine Fitness Franchise\",\n        type: \"Franchise\",\n        owner: \"David Lee\",\n        documents: [\n          doc(\"Tax Returns\", \"Received\", \"Seller \/ CPA\", \"2026-05-05\", \"Ready for review.\"),\n          doc(\"P&L Statement\", \"Reviewed\", \"Seller\", \"2026-04-30\", \"Complete.\"),\n          doc(\"Lease\", \"Reviewed\", \"Seller\", \"2026-04-26\", \"Complete.\"),\n          doc(\"Franchise Agreement\", \"Requested\", \"Franchisor\", \"2026-05-09\", \"Need signed copy.\"),\n          doc(\"Equipment List\", \"Reviewed\", \"Seller\", \"2026-04-29\", \"Complete.\"),\n          doc(\"Utility Bills\", \"Requested\", \"Seller\", \"2026-05-10\", \"Need electric and water.\"),\n          doc(\"Payroll Reports\", \"Missing\", \"Seller\", \"2026-05-11\", \"Not requested yet.\"),\n          doc(\"Bank Statements\", \"Received\", \"Seller\", \"2026-05-02\", \"Needs review.\")\n        ]\n      },\n      {\n        id: 3,\n        name: \"Main Street Dry Cleaners\",\n        type: \"Service Business\",\n        owner: \"Amanda Rivera\",\n        documents: [\n          doc(\"Tax Returns\", \"Reviewed\", \"Seller \/ CPA\", \"2026-04-28\", \"Complete.\"),\n          doc(\"P&L Statement\", \"Reviewed\", \"Seller\", \"2026-04-28\", \"Complete.\"),\n          doc(\"Lease\", \"Received\", \"Seller\", \"2026-05-03\", \"Check renewal terms.\"),\n          doc(\"Franchise Agreement\", \"N\/A\", \"N\/A\", \"\", \"Not applicable.\"),\n          doc(\"Equipment List\", \"Requested\", \"Seller\", \"2026-05-06\", \"Need machine list.\"),\n          doc(\"Utility Bills\", \"Overdue\", \"Seller\", \"2026-05-01\", \"Reminder needed.\"),\n          doc(\"Payroll Reports\", \"Reviewed\", \"Seller\", \"2026-04-27\", \"Complete.\"),\n          doc(\"Bank Statements\", \"Reviewed\", \"Seller\", \"2026-04-27\", \"Complete.\")\n        ]\n      }\n    ];\n\n    let selectedListingId = listings[0].id;\n\n    const STORAGE_KEY = \"bizTransactionsTrackingToolData\";\n\n    function saveData() {\n      const dataToSave = {\n        listings,\n        selectedListingId\n      };\n\n      localStorage.setItem(STORAGE_KEY, JSON.stringify(dataToSave));\n    }\n\n    function loadData() {\n      const savedData = localStorage.getItem(STORAGE_KEY);\n\n      if (!savedData) return;\n\n      try {\n        const parsedData = JSON.parse(savedData);\n\n        if (Array.isArray(parsedData.listings)) {\n          listings = parsedData.listings;\n        }\n\n        if (parsedData.selectedListingId) {\n          selectedListingId = parsedData.selectedListingId;\n        }\n\n        if (!listings.find(l => l.id === selectedListingId) && listings.length) {\n          selectedListingId = listings[0].id;\n        }\n      } catch (error) {\n        console.error(\"Could not load saved tracker data:\", error);\n      }\n    }\n\n    function doc(name, status, owner, dueDate, notes) {\n      return {\n        name,\n        status,\n        owner,\n        dueDate,\n        lastUpdated: new Date().toISOString().slice(0, 10),\n        reminder: status !== \"Reviewed\" && status !== \"N\/A\",\n        notes\n      };\n    }\n\n    function completion(listing) {\n      const required = listing.documents.filter(d => d.status !== \"N\/A\");\n      const done = required.filter(d => d.status === \"Reviewed\").length;\n      return required.length ? Math.round((done \/ required.length) * 100) : 100;\n    }\n\n    function statusColor(status) {\n      return {\n        \"Missing\": \"red\",\n        \"Requested\": \"yellow\",\n        \"Received\": \"blue\",\n        \"Reviewed\": \"green\",\n        \"N\/A\": \"gray\",\n        \"Overdue\": \"orange\"\n      }[status] || \"gray\";\n    }\n\n    function readiness(listing) {\n      const overdue = listing.documents.filter(d => d.status === \"Overdue\").length;\n      const missing = listing.documents.filter(d => d.status === \"Missing\").length;\n      const pct = completion(listing);\n      if (overdue || missing) return { label: \"Needs Attention\", color: \"orange\" };\n      if (pct < 100) return { label: \"Nearly Ready\", color: \"blue\" };\n      return { label: \"Complete\", color: \"green\" };\n    }\n\n    function renderSummary() {\n      const missing = listings.flatMap(l => l.documents).filter(d => d.status === \"Missing\").length;\n      const overdue = listings.flatMap(l => l.documents).filter(d => d.status === \"Overdue\").length;\n      const avg = listings.length ? Math.round(listings.reduce((sum, l) => sum + completion(l), 0) \/ listings.length) : 0;\n\n      document.getElementById(\"activeListings\").textContent = listings.length;\n      document.getElementById(\"missingDocs\").textContent = missing;\n      document.getElementById(\"overdueDocs\").textContent = overdue;\n      document.getElementById(\"avgCompletion\").textContent = avg + \"%\";\n    }\n\n    function renderListings() {\n      const wrap = document.getElementById(\"listingList\");\n      wrap.innerHTML = \"\";\n\n      listings.forEach(listing => {\n        const pct = completion(listing);\n        const missing = listing.documents.filter(d => d.status === \"Missing\").length;\n        const overdue = listing.documents.filter(d => d.status === \"Overdue\").length;\n        const ready = readiness(listing);\n\n        const card = document.createElement(\"div\");\n        card.className = \"listing-card\" + (listing.id === selectedListingId ? \" active\" : \"\");\n        card.onclick = () => {\n          selectedListingId = listing.id;\n          saveData();\n          render();\n        };\n\n        card.innerHTML = `\n          <div class=\"listing-title-row\">\n            <div>\n              <h3>${listing.name}<\/h3>\n              <div class=\"listing-meta\">${listing.type} \u00b7 ${listing.owner}<\/div>\n            <\/div>\n            <span class=\"badge ${ready.color}\">${ready.label}<\/span>\n          <\/div>\n          <div class=\"progress-wrap\">\n            <div class=\"progress-bar\"><div class=\"progress-fill\" style=\"width:${pct}%\"><\/div><\/div>\n            <div class=\"progress-text\">\n              <span>${pct}% complete<\/span>\n              <span>${missing} missing \u00b7 ${overdue} overdue<\/span>\n            <\/div>\n          <\/div>\n        `;\n        wrap.appendChild(card);\n      });\n    }\n\n    function renderDetail() {\n      const listing = listings.find(l => l.id === selectedListingId);\n      const rows = document.getElementById(\"documentRows\");\n      const search = document.getElementById(\"searchInput\").value.toLowerCase();\n      const filter = document.getElementById(\"statusFilter\").value;\n\n      rows.innerHTML = \"\";\n\n      if (!listing) return;\n\n      const ready = readiness(listing);\n      document.getElementById(\"detailTitle\").textContent = listing.name;\n      document.getElementById(\"detailMeta\").textContent = `${listing.type} \u00b7 Coordinator: ${listing.owner} \u00b7 ${completion(listing)}% complete`;\n      document.getElementById(\"readinessBadge\").textContent = ready.label;\n      document.getElementById(\"readinessBadge\").className = `badge ${ready.color}`;\n\n      const docs = listing.documents.filter(d => {\n        const matchesSearch = d.name.toLowerCase().includes(search) || d.notes.toLowerCase().includes(search);\n        const matchesFilter = filter === \"all\" || d.status === filter;\n        return matchesSearch && matchesFilter;\n      });\n\n      docs.forEach((d, index) => {\n        const actualIndex = listing.documents.indexOf(d);\n        const tr = document.createElement(\"tr\");\n        tr.innerHTML = `\n          <td><div class=\"doc-name\">${d.name}<\/div><\/td>\n          <td>\n            <select class=\"status-select\" onchange=\"updateStatus(${listing.id}, ${actualIndex}, this.value)\">\n              ${[\"Missing\", \"Requested\", \"Received\", \"Reviewed\", \"Overdue\", \"N\/A\"].map(s => `\n                <option value=\"${s}\" ${d.status === s ? \"selected\" : \"\"}>${s}<\/option>\n              `).join(\"\")}\n            <\/select>\n          <\/td>\n          <td>${d.owner}<\/td>\n          <td>${d.dueDate || \"\u2014\"}<\/td>\n          <td>${d.lastUpdated}<\/td>\n          <td>${d.reminder ? \"On\" : \"Off\"}<\/td>\n          <td class=\"notes\">${d.notes}<\/td>\n        `;\n        rows.appendChild(tr);\n      });\n\n      renderReminders(listing);\n    }\n\n    function renderReminders(listing) {\n      const box = document.getElementById(\"reminderBox\");\n      const reminders = listing.documents.filter(d =>\n        d.reminder && [\"Missing\", \"Requested\", \"Overdue\"].includes(d.status)\n      );\n\n      if (!reminders.length) {\n        box.innerHTML = `\n          <h3>Reminder Center<\/h3>\n          <p>No active reminders. This listing is in good shape.<\/p>\n        `;\n        return;\n      }\n\n      box.innerHTML = `\n        <h3>Reminder Center<\/h3>\n        <p>${reminders.length} document reminder${reminders.length === 1 ? \"\" : \"s\"} need attention.<\/p>\n        <ul>\n          ${reminders.map(d => `<li><strong>${d.name}<\/strong> \u2014 ${d.status}, owned by ${d.owner}, due ${d.dueDate || \"TBD\"}.<\/li>`).join(\"\")}\n        <\/ul>\n      `;\n    }\n\n    function updateStatus(listingId, docIndex, status) {\n      const listing = listings.find(l => l.id === listingId);\n      listing.documents[docIndex].status = status;\n      listing.documents[docIndex].lastUpdated = new Date().toISOString().slice(0, 10);\n      listing.documents[docIndex].reminder = status !== \"Reviewed\" && status !== \"N\/A\";\n      saveData();\n      render();\n    }\n\n    function sendReminderSummary() {\n      const listing = listings.find(l => l.id === selectedListingId);\n      if (!listing) return;\n\n      const reminders = listing.documents.filter(d =>\n        d.reminder && [\"Missing\", \"Requested\", \"Overdue\"].includes(d.status)\n      );\n\n      if (!reminders.length) {\n        alert(\"No reminders needed for this listing.\");\n        return;\n      }\n\n      const summary = reminders.map(d => `- ${d.name}: ${d.status}, owner: ${d.owner}, due: ${d.dueDate || \"TBD\"}`).join(\"\\n\");\n      alert(`Reminder Summary for ${listing.name}\\n\\n${summary}`);\n    }\n\n    function openModal() {\n      document.getElementById(\"modalBackdrop\").style.display = \"flex\";\n    }\n\n    function closeModal() {\n      document.getElementById(\"modalBackdrop\").style.display = \"none\";\n      document.getElementById(\"newListingName\").value = \"\";\n      document.getElementById(\"newListingOwner\").value = \"\";\n    }\n\n    function addListing() {\n      const name = document.getElementById(\"newListingName\").value.trim();\n      const type = document.getElementById(\"newListingType\").value;\n      const owner = document.getElementById(\"newListingOwner\").value.trim() || \"Unassigned\";\n\n      if (!name) {\n        alert(\"Please enter a listing name.\");\n        return;\n      }\n\n      const newListing = {\n        id: Date.now(),\n        name,\n        type,\n        owner,\n        documents: defaultDocs.map(name => doc(name, name === \"Franchise Agreement\" && type !== \"Franchise\" ? \"N\/A\" : \"Missing\", \"Seller\", \"\", \"\"))\n      };\n\n      listings.push(newListing);\n      selectedListingId = newListing.id;\n      saveData();\n      closeModal();\n      render();\n    }\n\n    function render() {\n      renderSummary();\n      renderListings();\n      renderDetail();\n    }\n\n    loadData();\n    render();\n  <\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Transactions Check List &#038; Document Tracker Dashboard Listing Checklist &#038; Document Tracker Track collected documents, missing paperwork, review status, due dates, owners, and reminders for&#8230;<\/p>","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-780","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Biz Transactions Tracking Tool - 360 Biz Brokers<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/360bizbrokers.com\/pt\/biz-transactions-tracking-tool\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Biz Transactions Tracking Tool\" \/>\n<meta property=\"og:description\" content=\"Transactions Check List &#038; Document Tracker Dashboard Listing Checklist &#038; Document Tracker Track collected documents, missing paperwork, review status, due dates, owners, and reminders for...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/360bizbrokers.com\/pt\/biz-transactions-tracking-tool\/\" \/>\n<meta property=\"og:site_name\" content=\"360 Biz Brokers\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-13T20:00:17+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/\",\"url\":\"https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/\",\"name\":\"Biz Transactions Tracking Tool - 360 Biz Brokers\",\"isPartOf\":{\"@id\":\"https:\/\/360bizbrokers.com\/#website\"},\"datePublished\":\"2026-05-13T19:41:33+00:00\",\"dateModified\":\"2026-05-13T20:00:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/360bizbrokers.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Biz Transactions Tracking Tool\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/360bizbrokers.com\/#website\",\"url\":\"https:\/\/360bizbrokers.com\/\",\"name\":\"Florida 360 Business Brokers\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/360bizbrokers.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/360bizbrokers.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/360bizbrokers.com\/#organization\",\"name\":\"Florida 360 Business Brokers\",\"url\":\"https:\/\/360bizbrokers.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/360bizbrokers.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/360bizbrokers.com\/wp-content\/uploads\/2025\/12\/LOGO-FLORIDA-360-BUSINESS-BROKERS.jpg\",\"contentUrl\":\"https:\/\/360bizbrokers.com\/wp-content\/uploads\/2025\/12\/LOGO-FLORIDA-360-BUSINESS-BROKERS.jpg\",\"width\":1080,\"height\":1080,\"caption\":\"Florida 360 Business Brokers\"},\"image\":{\"@id\":\"https:\/\/360bizbrokers.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Biz Transactions Tracking Tool - 360 Biz Brokers","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/360bizbrokers.com\/pt\/biz-transactions-tracking-tool\/","og_locale":"pt_BR","og_type":"article","og_title":"Biz Transactions Tracking Tool","og_description":"Transactions Check List &#038; Document Tracker Dashboard Listing Checklist &#038; Document Tracker Track collected documents, missing paperwork, review status, due dates, owners, and reminders for...","og_url":"https:\/\/360bizbrokers.com\/pt\/biz-transactions-tracking-tool\/","og_site_name":"360 Biz Brokers","article_modified_time":"2026-05-13T20:00:17+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/","url":"https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/","name":"Biz Transactions Tracking Tool - 360 Biz Brokers","isPartOf":{"@id":"https:\/\/360bizbrokers.com\/#website"},"datePublished":"2026-05-13T19:41:33+00:00","dateModified":"2026-05-13T20:00:17+00:00","breadcrumb":{"@id":"https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/360bizbrokers.com\/biz-transactions-tracking-tool\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/360bizbrokers.com\/"},{"@type":"ListItem","position":2,"name":"Biz Transactions Tracking Tool"}]},{"@type":"WebSite","@id":"https:\/\/360bizbrokers.com\/#website","url":"https:\/\/360bizbrokers.com\/","name":"Florida 360 Business Brokers","description":"","publisher":{"@id":"https:\/\/360bizbrokers.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/360bizbrokers.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/360bizbrokers.com\/#organization","name":"Florida 360 Business Brokers","url":"https:\/\/360bizbrokers.com\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/360bizbrokers.com\/#\/schema\/logo\/image\/","url":"https:\/\/360bizbrokers.com\/wp-content\/uploads\/2025\/12\/LOGO-FLORIDA-360-BUSINESS-BROKERS.jpg","contentUrl":"https:\/\/360bizbrokers.com\/wp-content\/uploads\/2025\/12\/LOGO-FLORIDA-360-BUSINESS-BROKERS.jpg","width":1080,"height":1080,"caption":"Florida 360 Business Brokers"},"image":{"@id":"https:\/\/360bizbrokers.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/360bizbrokers.com\/pt\/wp-json\/wp\/v2\/pages\/780","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/360bizbrokers.com\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/360bizbrokers.com\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/360bizbrokers.com\/pt\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/360bizbrokers.com\/pt\/wp-json\/wp\/v2\/comments?post=780"}],"version-history":[{"count":0,"href":"https:\/\/360bizbrokers.com\/pt\/wp-json\/wp\/v2\/pages\/780\/revisions"}],"wp:attachment":[{"href":"https:\/\/360bizbrokers.com\/pt\/wp-json\/wp\/v2\/media?parent=780"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}