ADMIN
BACKEND OPERATIONS · RESTRICTED
INCORRECT CODE — TRY AGAIN
Dashboard
Dashboard
High Frequency Infusions · Medellín Operations
Exchange Rate
3,550
COP per 1 USD
Members PW
HFIM2026
Portal access code
Next Event
May 17
Alta Fuego
Dimaria Split
80/20
HFI / Dimaria
Amanda Royalty
1,500
COP per bottle
Class Ticket
80,000
COP per student
Quick Links
Key Contacts
NameRoleContactNotes
Amanda RobinsonDirector Wellness & EventsBancolombia acctTea production, events, wellness
Tiarra EarlsSocial Media Managertiarraearlsdigital@gmail.comPost-production & publishing
KhalifVideo ContentKitchen + product videos
Chef Luis MakiaChef — Alta FuegoHFI dinner series, Chef Series
Jonathan / RonSecrito JardinVenue rental only — no product deal
Revenue Tracker
All income by channel → Google Sheet: Revenue tab
Log
DateChannelDescriptionCOPUSDNotes
Click Refresh to load from Sheet
Expenses & Supplies
All spending → Google Sheet: Expenses & Supplies tab
Log
DateCategoryItemVendorQtyCOPUSDTypeNotes
Click Refresh to load
Product COGS
Cost per SKU → Google Sheet: Product COGS tab
COGS Table
SKUCategoryBatchIngr COPLaborPackagingTotal COGSPer UnitSale PriceMargin %Notes
Click Refresh to load
Event P&L
Per-event profit & loss → Google Sheet: Event P&L tab
Event Log
EventDateTypeGuestsGrossCostsNET
Click Refresh to load
Infusion Class P&L
Per-class tracker | 80,000 COP ticket | 300,000 COP instructor fee (you)
Ticket Price
80,000
COP per student
Max Students
8
per class
Instructor Fee
300,000
COP flat (Jas)
Materials (8 students)
~36,360
COP total
Net at Capacity
~303,640
COP (no venue cost)
Class Log
DateTopicStudentsRevenueCostsNETNotes
Click Refresh to load
Batch Production Log
Every production run → Google Sheet: Batch Production Log tab
Batch Log
DateCodeProductProducerFlower(g)mg/unitUnitsCOGSExpiry
Click Refresh to load
Inventory
Current stock on hand → Google Sheet: Inventory tab
Inventory Log
SKUActionQtyLocationDateNotes
Click Refresh to load
Potency Calculator
One-off batch calculations — VG Tincture · Infused Oil · Honey · Chocolate
VG Tincture
Infused Oil / Ghee
Infused Honey
Chocolate
Inputs
Total THC in Batch
milligrams
Potency per ml
mg / ml
Raw THC potential
After efficiency loss
Per 0.5ml dose
Per 1ml dose
Doses in batch (0.5ml)
Recipe Library
All HFI production recipes — search and expand
Amanda Robinson — Compensation
Director of Wellness & Events | Tea Royalties · Event Fees · Wellness Division
Tea Royalty
1,500
COP/bottle, all channels
Event Fee
15%
HFI net per event
Wellness Division
20%
division net monthly
Reimbursement
~$200
USD due Month 3
Tea Royalties
Event Fees
Wellness Division
Tea Royalty Log
MonthBottlesEarned COPPaid COPPay DateStatus
Click Refresh to load
Dimaria Gelateria Tracker
80/20 HFI/Dimaria | 50 comp bites/month | Weekly Sunday cash pickup
HFI Split
80%
Dimaria
20%
Comp Bites
50/mo
Pickup Day
Sunday
Pickup Log
DateRestockedSoldGrossHFI 80%Dimaria 20%Cash RecvCompNotes
Click Refresh to load
MedCity Tracker
Retail partner log → Google Sheet: MedCity Tracker tab
Log
DateRestockedSoldGrossSplit%HFI AmtReceivedStatusNotes
Click Refresh to load
Secrito Jardin — Venue Log
VENUE RENTAL ONLY | Cl. 35 #83-25, Laureles | Contact: Jonathan & Ron | No product deal
Venue Log
DateEventRental COPStatusContactNotes
Click Refresh to load
Guest Tracker
All event RSVPs and guest info → Google Sheet: Guest Tracker tab
Guest List
NameEmailEventDatePartyTierPaymentNotes
Click Refresh to load
Private Events
Inquiries and bookings → Google Sheet: Private Events tab
Private Event Log
ClientDatePackageQuotedDepositBalanceStatusNotes
Click Refresh to load
Member Log
All HFI members → Google Sheet: Member Log tab
Member Log
NameEmailTierJoinedRenewalStatusBox
Click Refresh to load
Chef Series Box Fulfillment
Monthly box tracking → Google Sheet: Chef Series Fulfillment tab
Box Log
MonthMemberTierContentsCostProducedDeliveredStatus
Click Refresh to load
Contact Directory
Vendors, partners, contractors, VIP guests → Google Sheet: Contact Directory tab
Directory
NameRoleCategoryPhoneEmailNotes
Click Refresh to load
Import Data (CSV)
Upload CSV exports from IndiVend or any spreadsheet — data appends to Google Sheet

Click to select a CSV file — or drag & drop here

Supports .csv exports from IndiVend, Excel, Google Sheets

How to export from IndiVend
1
Log into IndiVend → highfrequencyinfusions.indivend.com
2
Go to Orders, Members, or Events — whichever you need
3
Click the Export or Download CSV button (top right of the list)
4
Come back here, select the matching tab above, and upload the file
5
Click Send to Sheet — data appends to your Google Sheet automatically
Google Sheet Setup
One-time setup — connects every form to your HFI Operations Master sheet
⚠ Complete this setup ONCE before using any form. Without it data will not save to Google Sheets.
Step-by-Step
1
Open your sheet: HFI Operations Master ↗
2
Click Extensions → Apps Script
3
Delete all existing code and paste the script below
4
Click Save, then Deploy → New Deployment
5
Type: Web App | Execute as: Me | Access: Anyone | Click Deploy
6
Copy the Web App URL that appears and paste it below
Apps Script — Paste into Google Apps Script editor
const SHEET_ID = '12O58aEGCQRw4RnYy74LC-GjYTsoZJCO7LwRFiGAQQD8'; const HEADERS = { 'Revenue': ['Date','Channel','Description','Amount COP','Amount USD','Notes'], 'Expenses & Supplies': ['Date','Category','Item','Vendor','Qty/Unit','Amount COP','Amount USD','Type','Notes'], 'Product COGS': ['SKU','Category','Batch Size','Ingr Cost COP','Labor COP','Packaging COP','Total COGS','Cost/Unit','Sale Price','Margin %','Notes'], 'Event P&L': ['Event','Date','Type','Headcount','Ticket Rev','Product Sales','Gross','Venue','Supplies','Chef','Amanda Fee','Other','Total Costs','NET','Notes'], 'Infusion Class P&L': ['Date','Topic','Students','Ticket Revenue','Materials','Venue','Instructor Fee','NET','Notes'], 'Batch Production Log': ['Date','Batch Code','Product','Producer','Flower (g)','Carrier/Base','mg/unit','Units','COGS COP','Expiry','Notes'], 'Inventory': ['SKU','Action','Qty','Location','Date','Notes'], 'Amanda Compensation': ['Month/Event','Bottles/Net','Earned/Fee','Paid','Pay Date','Status'], 'Dimaria Tracker': ['Date','Restocked','Sold','Gross COP','HFI 80%','Dimaria 20%','Cash Received','Comp Bites','Notes'], 'MedCity Tracker': ['Date','Restocked','Sold','Gross COP','Split %','HFI Amount','Received','Status','Notes'], 'Secrito Venue Log': ['Date','Event','Rental COP','Status','Contact','Notes'], 'Guest Tracker': ['Name','Email','Event','Event Date','Party Size','Member Tier','Payment Status','Notes'], 'Private Events': ['Client','Contact','Inquiry Date','Event Date','Package','Headcount','Quoted COP','Deposit','Balance','Status','Notes'], 'Member Log': ['Name','Email','Tier','Join Date','Renewal Date','Status','Chef Series Box','Address','Notes'], 'Chef Series Fulfillment': ['Month','Member','Tier','Contents','Cost COP','Produced','Delivered','Status'], 'Contact Directory': ['Name','Role','Category','Phone','Email','Notes'], }; function doPost(e) { try { const data = JSON.parse(e.postData.contents); const tab = data.tab; const row = data.row; const ss = SpreadsheetApp.openById(SHEET_ID); let sheet = ss.getSheetByName(tab); if (!sheet) sheet = ss.insertSheet(tab); if (sheet.getLastRow() === 0 && HEADERS[tab]) { sheet.appendRow(HEADERS[tab]); sheet.getRange(1, 1, 1, HEADERS[tab].length) .setBackground('#1A1208').setFontColor('#C87941') .setFontWeight('bold'); } sheet.appendRow(row); return ContentService.createTextOutput(JSON.stringify({success:true})) .setMimeType(ContentService.MimeType.JSON); } catch(err) { return ContentService.createTextOutput(JSON.stringify({success:false,error:err.toString()})) .setMimeType(ContentService.MimeType.JSON); } } function doGet(e) { try { const tab = e.parameter.tab; const ss = SpreadsheetApp.openById(SHEET_ID); const sheet = ss.getSheetByName(tab); if (!sheet || sheet.getLastRow() < 2) return json({rows:[]}); const data = sheet.getDataRange().getValues(); const headers = data[0]; const rows = data.slice(1).map(r => { const obj = {}; headers.forEach((h,i) => obj[h] = r[i]); return obj; }); return json({rows}); } catch(err) { return json({rows:[],error:err.toString()}); } } function json(obj) { return ContentService.createTextOutput(JSON.stringify(obj)) .setMimeType(ContentService.MimeType.JSON); }