← Back to Altstock

Google Sheet Data Feed Guide

Altstock by Sybrate Technologies Pvt. Ltd.

This guide explains how to set up your Google Sheet so that company data auto-syncs to the Altstock web application every 5 minutes.

Architecture Overview

Your Google Sheet has 53 per-company tabs (PhonePe, Razorpay, etc.) with vertical Field/Value layout. To enable auto-sync:

  1. Add an INDEX tab — a clickable directory of all company tabs
  2. Add a MASTER_FEED tab — one row per company, columns for each field, pulling data from individual tabs via formulas
  3. Publish the MASTER_FEED tab as CSV
  4. Paste the published CSV URL in Altstock Admin → Sheet Config

Step 1 — Create the INDEX Tab

1 In your Google Sheet, create a new tab named INDEX and move it to the first position.

Paste this structure:

ABCDEF
AltStock — Company Index
#CompanyTickerSectorBid (₹)Ask (₹)
1PhonePePPEFinTech18501920
2RazorpayRZPYFinTech825870
3ZeptoZEPTConsumer515548
... (all 53 companies)

INDEX Formulas (link to company tabs)

For each company row, use these formulas to pull live data from the company's tab:

=PhonePe!B7    ← Ticker
=PhonePe!B8    ← Sector
=PhonePe!B10   ← Bid
=PhonePe!B11   ← Ask

To make company names clickable (hyperlinks to their tab):

=HYPERLINK("#gid=" & MATCH("PhonePe", INDIRECT("PhonePe!B2"), 0), "PhonePe")

Or simply type the company name and right-click → Insert link → select the tab.

Step 2 — Create the MASTER_FEED Tab

2 Create a new tab named MASTER_FEED. Row 1 = column headers. Row 2+ = one company per row.

Important: Column headers must match EXACTLY as shown below (case-insensitive). The sync engine maps headers to the app's data fields.

Required Columns REQUIRED

ColHeaderFormula (for PhonePe row)Maps to
AName=PhonePe!B6Company name
BTicker=PhonePe!B7Ticker symbol
CInitialsPPLogo initials fallback
DSector=PhonePe!B8Sector name
EFunding Stage=PhonePe!B9Series / round
FBid=PhonePe!B10Bid price (₹)
GAsk=PhonePe!B11Ask price (₹)
HIndicative Price=PhonePe!B12Indicative/mid price
IPremium=PhonePe!B13Premium %
JValuation=PhonePe!B14Valuation string

Activity & Liquidity Columns

ColHeaderFormulaMaps to
KActivity Score=PhonePe!B150-100 score
LBids Count=PhonePe!B16Number of bids
MAsks Count=PhonePe!B17Number of asks
NMost Liquid=PhonePe!B18"Yes" or blank

Branding & Visual

ColHeaderFormulaMaps to
OLogo URL=PhonePe!B19Logo image path
PIcon URL=PhonePe!B20Icon image path

Share Structure

ColHeaderFormulaMaps to
QFace Value=PhonePe!B24Face value (₹)
RISIN=PhonePe!B25ISIN code
SDemat Availability=PhonePe!B26CDSL/NSDL
TMarket Cap=PhonePe!B27Market cap (₹ Cr)
UShares Outstanding=PhonePe!B28Total shares
VLot Size=PhonePe!B29Min lot qty
WMin Investment=PhonePe!B30Min ₹ amount

Corporate Identifiers

ColHeaderFormulaMaps to
XCIN=PhonePe!B42CIN number
YRegistered Address=PhonePe!B43Reg. address
ZPAN=PhonePe!B44PAN number
AARTA=PhonePe!B45Registrar & Transfer Agent
ABStatutory Auditor=PhonePe!B46Auditor name
ACIncorporation Year=PhonePe!B47Year founded
ADHeadquarters=PhonePe!B48HQ city
AEWebsite=PhonePe!B49Company URL
AFEmployees=PhonePe!B50Employee count

Description

ColHeaderFormulaMaps to
AGDescriptionPaste or reference company description cellCompany overview

Shareholding

ColHeaderFormulaMaps to
AHPromoters Holding=PhonePe!B54Promoter %
AIPE VC Investors Holding=PhonePe!B55PE/VC %
AJESOP Pool Holding=PhonePe!B56ESOP %
AKPublic Others Holding=PhonePe!B57Public %

Investment Thesis (up to 5)

ColHeaderFormula
ALThesis 1=PhonePe!B63
AMThesis 2=PhonePe!B64
ANThesis 3=PhonePe!B65
AOThesis 4Optional
APThesis 5Optional

Key Risks (up to 5)

ColHeaderFormula
AQRisk 1=PhonePe!B68
ARRisk 2=PhonePe!B69
ASRisk 3=PhonePe!B70
ATRisk 4Optional
AURisk 5Optional

Strengths (up to 5)

ColHeaderFormula
AVStrength 1=PhonePe!B73
AWStrength 2=PhonePe!B74
AXStrength 3=PhonePe!B75
AYStrength 4Optional
AZStrength 5Optional

Weaknesses (up to 5)

ColHeaderFormula
BAWeakness 1=PhonePe!B79
BBWeakness 2=PhonePe!B80
BCWeakness 3=PhonePe!B81
BDWeakness 4Optional
BEWeakness 5Optional

Financial Data

ColHeaderFormulaMaps to
BFRevenue FY1=PhonePe!B84Revenue Year 1 (₹ Cr)
BGRevenue FY2=PhonePe!B85Revenue Year 2 (₹ Cr)
BHRevenue FY3=PhonePe!B86Revenue Year 3 (₹ Cr)
BIPAT FY1=PhonePe!B88Profit After Tax Year 1 (₹ Cr)
BJPAT FY2=PhonePe!B89Profit After Tax Year 2 (₹ Cr)
BKPAT FY3=PhonePe!B90Profit After Tax Year 3 (₹ Cr)
BLROE=PhonePe!B92Return on Equity (%)
BMPE=PhonePe!B93Price-to-Earnings ratio
BNBook Value=PhonePe!B94Book value per share (₹)
BOEBITDA Margin=PhonePe!B95EBITDA margin (%)
BPMarquee=PhonePe!B96"Yes" if marquee company

Leadership (up to 5 leaders)

ColHeaderFormula
BQLeader1 Role=PhonePe!A34
BRLeader1 Name=PhonePe!B34
BSLeader1 Since=PhonePe!C34
BTLeader2 Role=PhonePe!A35
BULeader2 Name=PhonePe!B35
BVLeader2 Since=PhonePe!C35
... continue for Leaders 3-5 (BW-CH)

Step 3 — Publish MASTER_FEED as CSV

3 In Google Sheets:

  1. Go to File → Share → Publish to web
  2. In the dropdown, select the MASTER_FEED tab (not "Entire document")
  3. Change format to Comma-separated values (.csv)
  4. Click Publish
  5. Copy the URL — it looks like: https://docs.google.com/spreadsheets/d/e/2PACX-.../pub?gid=XXXX&single=true&output=csv
Note: If your file is an uploaded .xls, you may need to first save it as a Google Sheet (File → Save as Google Sheets) before Publish to Web is available.

Step 4 — Configure Altstock

4 In Altstock Admin:

  1. Go to Admin → Data Feed (or use the API)
  2. Paste the published CSV URL into Companies Feed URL
  3. Click Save & Sync Now
  4. The server fetches the CSV, parses 53 companies, and writes to data/companies.json
  5. Auto-sync runs every 5 minutes — any changes you make in the sheet appear on the website within 5 minutes

Or via API:

// Save the CSV URL POST /api/sheet-config { "companiesUrl": "https://docs.google.com/spreadsheets/d/e/2PACX-.../pub?output=csv" } // Trigger manual sync POST /api/sheet-sync // Check sync status GET /api/sheet-sync/status

How the Sync Works

Auto-sync (every 5 min)

Server fetches the published CSV URL → parses rows → maps to app data model → merges with existing data (sheet wins) → writes companies.json

App loads data

On page load, app.js fetches /api/company-data → merges with hardcoded COS → renders marketplace. Same data serves desktop, tablet, mobile.

Field Mapping Reference

Complete mapping from your Google Sheet columns to the app's internal data model:

Sheet ColumnApp FieldWhere it appears
NamenCompany cards, headers, search
TickertCompany cards, ticker strip
SectorsSector filters, badges
Bid / Askbid / askPricing, order book
Indicative PricepCompany cards, charts
PremiumprmPremium badge
ValuationvalCompany profile
Activity ScoreactActivity meter
ISINisinShare structure panel
Demat AvailabilitydepositaryTypeShare structure panel
DescriptiondescCompany overview section
Thesis 1-5thesis[]Investment thesis bullets
Risk 1-5risks[]Key risks bullets
Strength 1-5strengths[]SWOT / strengths section
Weakness 1-5weaknesses[]SWOT / weaknesses section
Revenue FY1-FY3rev[]Revenue chart (3-year)
PAT FY1-FY3pat[]PAT chart (3-year)
ROEroeFinancial metrics panel
PEpeFinancial metrics panel
Book ValuebvFinancial metrics panel
Face ValuefvShare structure panel
EBITDA MarginebitdaMarFinancial metrics panel
MarqueemqMarquee badge on company card
SEBI Compliance Notice: Altstock is an information platform only — not a SEBI-registered broker, research analyst, or investment adviser. Indicative prices; no advice, no execution or settlement. Unlisted securities are illiquid and high-risk. All decisions rest solely with you.

Altstock — operated by Sybrate Technologies Private Limited