prepaid · COD · partial — share of orders in this range
Daily spend vs revenue
ad spend, Shopify revenue & orders per day · ₹
Data trust — reconciliation
do the three sources agree?
Compare
→
→
Performance Overview
All selected accounts · normalized to ₹ INR
Spend split
by campaign type
Top campaigns
spend, this period
Trend
spend vs revenue per day
Day of week
which weekdays convert best — spend, ROAS & efficiency by day
Day
Spend
Purchases
Revenue
Impr
Clicks
ROAS
CPA
CVR
CPC
CPM
What's working & why
auto-analysis vs comparison period
A vs B comparison
Campaigns
click ▸ to drill in · click a column header to sort · flame = fatigue
Breakdowns
Alerts & fatigue signals
auto-generated from thresholds
Meta Billing
funds, credit limits & dues across all ad accounts
Ad spend
combined across all accounts · ₹ (USD accounts converted at your rate) · for the selected date range
Account funding & alerts
Each account is read in its own currency. Prepaid shows credit on file; Credit line shows what's left of the owner-set spending limit; Postpaid shows amount due plus a spend report. Type is auto-detected — fix it from the dropdown on any card if it's wrong, and set a per-account alert level. Meta doesn't expose a live wallet figure for every account type, so a value may read "—".
Alerts & Notifications
push low-balance & account alerts to your phone
Live device alerts
founder-only — turn on per device (this phone / this computer)
…
Get a notification with sound & vibration on this device the moment an alert fires — even when the dashboard is closed. Each device is turned on separately.
On iPhone, the dashboard must be added to your Home Screen (you've done this) and you tap "Turn on" once to allow notifications. Works on Android & desktop browsers too.
Times are IST and apply only to you. No alerts will reach your devices in this window (e.g. 12:00 AM–7:00 AM). Leave it off to get alerts around the clock.
Schedule
checks run inside this app while your Mac is on
Alerts fire only while this app is running on your Mac. Keep it open (or run it as a background service) for round-the-clock alerts.
Business alerts
fire when these cross your thresholds, on the schedule above
Measured over the last 7 days. RTO / True CPP / NDR use the 7-day window; ROAS-drop compares yesterday vs the 7-day average; spend-pace is today's spend. Hit "Run check now" above to test.
Telegram
free · instant · posts to a group everyone sees
In Telegram, message @BotFather → send /newbot → copy the bot token.
Create your group, add the bot to it. To get the group chat ID, add @getidsbot to the group (it replies with a negative ID like -100…), then remove it.
Paste both below & save. The bot must stay a member of the group.
WhatsApp group unofficial
automates WhatsApp Web — against WhatsApp ToS, ban risk
Logs in as your number via WhatsApp Web. Use a number you're OK risking. One-time setup on your Mac: npm install whatsapp-web.js qrcode, then Connect.
WhatsApp → Settings → Linked devices → Link a device → scan
Connect Shopify
In your Shopify Dev Dashboard app → Settings → Credentials, copy the Client ID and Secret (click the eye to reveal the secret).
In the app's config, add this exact Redirect URL and save:
http://localhost:3000/auth/shopify/callback
Make sure the app has scopes read_orders, read_products, read_customers and is installed on your store.
Stored only on this machine in ./.data/shopify.json. You'll be sent to Shopify to approve, then back here.
Shopify Sales
orders in the selected range · ₹ INR
Payment split
prepaid · COD · partial
Order source
ads (Shiprocket) vs team (native)
Daily orders & revenue
per day
Orders by source
Meta ads · calling / organic · WhatsApp · others — where every order came from
Top products
click a product for its payment & source split
Products × price points
same product, alag-alag selling price — kis price par kitne orders (unit price after discount)
Product
Price
Orders
Units
Revenue
Share of product
Orders by price point
sirf pricing ke hisaab se — all products combined
Price point
Orders
Units
Revenue
Products at this price
Top product
Orders by state
delivery region
UTM tracking
Where untagged orders came from
decodes the "(none / untagged)" UTM orders using website referrer + checkout signals
Order-by-order detail
Connect Shopify first — open the Shopify tab in the sidebar.
Orders
most recent in the selected range
Connect Shopify first — open the Shopify tab in the sidebar.
Customers & Retention
who's buying, repeat behaviour & COD risk · selected range
New vs returning
orders & revenue split by customer type (Shopify lifetime order count)
Top customers
by revenue in this range
Repeat-RTO offenders — block COD
phone numbers that returned 2+ shipments · make these prepaid-only
Connect Shiprocket Checkout (Fastrr) webhook
abandoned carts stream in once you register this URL in Checkout → Settings → Webhooks
…
Expose this app on a public URL — a tunnel (e.g. cloudflared tunnel --url http://localhost:3000) or your hosted domain. Copy that base URL.
In Shiprocket Checkout → Settings → Webhooks → Add Webhook (or Custom Endpoints), set Webhook Type = Abandon Cart and paste this full URL:
…
Save. New abandoned carts appear below within a minute. (Localhost can't receive webhooks — use the tunnel or host first.)
For recovery rate & revenue recovered: add a second webhook — type Real Time, Stage Order Placed — pointing to this same URL. We then match recovered orders to abandoned carts by phone, automatically.
Switching to GoKwik?Both checkouts run side-by-side — nothing about the Fastrr flow or its saved data changes. GoKwik leads land on the same Calling CRM board with a GoKwik badge.
Give this URL to GoKwik's Merchant Integration team and ask them to register it for Abandoned Cart AND Order Placed webhooks (merchants can't self-serve webhooks on GoKwik — their team adds it):
…
Once their first webhook lands, the GoKwik counter below turns live. If fields look wrong (name/value/product), tell the founder — we inspect the raw payload and fix the mapping in minutes.
Backup = dated snapshot of every event. Re-fix = re-parse stored leads with the latest mapping (fixes old "Standad" names on the calling board without re-fetching).
GoKwik events — live check
Time
Name
Phone
Value
Product
Address (line · city · state · pin)
Address OK?
Our stage
Click any row to see the exact raw payload GoKwik sent — that's how we find their real field names. If "GoKwik stage" shows only phone, GoKwik isn't sending the drop-off stage in the webhook.
API auto-pull (no webhook needed)Shiprocket-style self-serve: every 10 minutes we pull abandoned checkouts straight from Shopify's own API — works today, and GoKwik V2 abandons land here too since V2 uses Shopify's native checkout. Fresh (≤7 day) carts only, deduped, same calling board.
Checkout — Abandoned carts
Shiprocket Checkout (Fastrr) · selected range
Abandoned carts per day
count & value
Abandoned carts — follow up
call / WhatsApp these to recover
Field mapping auto-detects phone / value / items / stage from Fastrr's payload. If anything reads blank once real events arrive, send me a sample and I'll map it exactly. Recovery rate needs a "recovered/order" webhook or order-matching — coming once events flow.
Reconciliation
do Shopify orders and Shiprocket shipments agree? · selected range
Placed but not shipped
Shopify orders with no matching Shiprocket shipment — push these to ship
Shipped but no Shopify order
Shiprocket shipments with no matching Shopify order — manual / other channel
Matched on normalized order number. "Placed but not shipped" is normal for recent orders still in processing; a persistent backlog means a fulfillment gap. "Shipped but no order" usually means manual Shiprocket entries or another sales channel.
Connect Shopify (in the Shopify tab) to reconcile Meta spend against real orders.
True CPP & Blended ROAS
Meta spend vs actual Shopify orders · selected range
Where the gap comes from
Meta-reported vs actual, by source
All orders — by source
where every order actually came from
CPP by campaign — UTM-matched
Meta spend ÷ Shopify orders carrying that utm_campaign — the honest per-campaign CPP
CPP by ad set — UTM-matched
ad-set spend ÷ orders carrying that utm_term — which audiences actually convert
CPP by ad — UTM-matched
ad-level spend ÷ orders carrying that utm_content — which creatives actually convert
CPP by UTM source
map each utm_source to its ad account — that account's spend ÷ this source's orders
Keep mapping 1-source-per-account for clean CPP. Tip: in every ad's URL parameters use utm_source=<buyer>&utm_campaign={{campaign.name}} so matching stays exact.
True CPP = total Meta spend ÷ actual Shopify orders. Blended ROAS (MER) = total Shopify revenue ÷ total Meta spend — the number that survives Facebook's attribution inflation.
Connect Shiprocket
Enter the email & password you use to log in to Shiprocket. We use it to fetch your shipment statuses, couriers and delivery/RTO data. Stored only on this machine in ./.data/shiprocket.json.
Tip: if you use Shiprocket SSO/Google login, set a password in Shiprocket settings first, or create an API user.
Address repair — Shiprocket importer glitch
for orders Shiprocket imported WITHOUT the address (Incomplete bucket) even though Shopify has it — pulls the correct address from Shopify and pushes it into Shiprocket. Auto-runs daily at 8:15 AM; use the button for a specific date range.
Shipping Operations
shipments in the selected range
Delivery % = delivered ÷ (delivered + RTO + NDR) — undelivered attempts count as not-delivered. In-transit / pending are excluded. So it answers: of the parcels that reached a doorstep outcome, how many actually delivered.
Orders fetched — verification
confirm the right Shopify orders are matching Shiprocket shipments for this range
pincodes returning the most · consider prepaid-only / verify COD here
NDR follow-up list
undelivered shipments to call before they turn into RTO
Best courier by zone
which partner delivers best in each zone — route more volume there
Orders by tag
click tags to select one or more · numbers below combine your selection
Detailed delivery status — full table
every Shiprocket status — RTO Initiated/OFD/Delivered, Undelivered attempts, etc.
Delivery % by payment type
Prepaid · Partial COD · COD — joined with Shopify
Delivery % by product
which product delivers best / RTOs most
By state
full table
Shipments
individual orders (loads on demand)
P&L needs Shopify + Shiprocket connected. Connect them in their tabs first.
Cost settings
set these once · everything below uses them
Per-product cost (COGS)
Profit & Loss
selected range · ₹ INR
P&L statement
Realized = delivered only · Booked = all placed
Profit by product
delivered orders · gross (revenue − COGS)
Per-order P&L
net profit per order
Live traffic
who is on the site right now, and where they came from
Visitors per minute
last 30 minutes · unique visitors each minute
Where they came from
UTM first, then referrer
What they're looking at
product-wise · every landing page of a product counted together
Where they are
state & city
Pages & devices
live pages being viewed right now
Log a change decision journal
Note what you changed and when — e.g. "Enabled COD on the website", "New landing page live". Later you can line these up against delivery %, CPA, RTO… to judge impact.
New task
Sort
From
To
Time of day
Payment
Min ₹
Assign all shown →
My claims
Leads you've claimed stay here until you place the order or release them
My follow-ups
Scheduled call-backs · soonest due on top · "DUE NOW" means it's time to call
Daily report
Abandoned → worked → converted, by day · auto-saved every day
FromTo
Dispositions
how every call ended · click a row for those customers
Disposition
Count
Share
Grand total
0
100%
Agent-wise
calls · connected · COD orders · conversion
Agent
Calls
Conn.
COD
Conv %
Leads sheet
every lead available to call — filter, sort, call, download
Joining your calling orders with Shiprocket — this can take up to a minute on a large date range. Please don't refresh or leave; it'll fill in automatically.
You can see delivery rates and order counts. Per-order customer detail and export are visible to the founder only.
Assign the 0 shown order(s) for a follow-up call →
Placed orders
COD orders you've placed · click a row for full details
FromTo
Sort
Agent
Order
Customer
Phone
₹
Product
Placed by
When
Call history & logs
your calls — customer, time, disposition & outcome
From
To
Agent
Time
Agent
Customer
Phone
Disposition / action
Talk time
Order lookup
Customer support tool — search one order by name, phone, order ID (#SB…) or AWB to see its shipping & live delivery status. No browsing — type a query to fetch.
Type a customer name, phone, order ID or AWB above to look up an order.
Agent monitor — live
poori team ka live action log, placed orders aur per-agent performance — real-time
Agent
Action
Order
Agent
Customer
Phone
₹
When
Agent
Status
Last action
Open
Dials
Conn.
Placed
Recovered ₹
Conv%
Raise an escalation
Log any customer issue — RTO, damage, missed courier call, refund, etc. Founders review these. The customer doesn't have to be an abandoned cart.
CategorySeverityCustomer namePhoneOrder ID / AWB (optional)What happened? (tip: paste a screenshot here with Ctrl/Cmd+V)Attachments — screenshots / images / PDF (paste or choose, multiple)
All escalations
newest first · founders update status, assign & add notes
how every call ended · click a slice to see those calls
Agent leaderboard — today
click an agent for their orders & CSV · Pace = calls/active hour
Agent
Dials
Worked
Conn.
Conn %
COD
Conv %
Pace
Dispositions
every active lead with a disposition — so callbacks & promises never slip · click a chip to filter
Sort
From
To
Assign of the 0 shown →
Customer
Phone
Disposition
Worked by
Callback due
Action
Team scorecard
one view: assigned → attempted → connected → orders → delivery, per agent + where to focus
FromTo
Agent
Status
Assigned
Attempted
Connected
Not conn.
Orders
Conv %
Delivered
RTO
NDR
In transit
Delivery %
Expected %
Assigned = open leads exclusively with the agent · Attempted = dispositions logged · Connected/Not connected from call outcomes · Orders + Conv% from placed COD orders · Delivery (Delivered/RTO/NDR/In-transit) joins their placed orders to Shiprocket · Delivery % = delivered ÷ settled (delivered+RTO) · Expected % projects in-transit at the current delivered rate. Delivery is attributed via the order’s agent tag.
Leads assigner
how many leads are waiting, who's working what, and hand a batch to any agent — exclusively
Assign a batch to one agent
Pick a lead type and how many — they go exclusively to that agent (hidden from everyone else's board until worked or returned).
Agent
Lead type
How many
Reason (agent sees this)
Auto-assigner
When ON, new pool leads are spread to online agents automatically (exclusive). OFF = you assign manually.
Auto-assign new leads
Scope
Return idle aftermin · 0 = never (assigned-but-never-called leads go back to the pool)
Min leads / online agent0 = off · new pool leads top up anyone below this floor first (new logins aren’t starved)
Rebalance & spare
Only un-called leads move — anything an agent has already called/converted stays with them. Use this when new agents log in and the load is lopsided.
Action
Min each
Across
Pull from agent
How many
moves un-called leads back to the pool so you can re-assign them to anyone
Agents — who has what
Agent
Status
Assigned (open)
Not called yet
Assigned today
Worked today
Queue-only
Paused
Actions
Queue-only: that agent loses the free board — they can only press “Get next lead”, so they can't cherry-pick or skip Retry/Cold. Paused: auto-assigner skips them. Return to pool: pulls every open lead assigned to that agent (called or not) back to the shared pool — their converted/placed orders stay credited. Use it when an agent logs off or you want to re-spread their leads.
Calling agents
add, remove or reset your team's logins — agents only see the recovery board
Name
Email (login)
Last login
Today: calls
COD
Dialer ID
Actions
Auto-assignment
Automatically distribute leads to online agents — with per-agent daily cap, weight (share), priority routing, and pause
Auto-assign ONAssignReassign if idle (min)
When ON, leads are auto-distributed to online agents up to each agent's daily cap. Higher weight = more leads; agents with priority OFF won't receive payment-initiated leads; an idle lead is reassigned to another agent after the set number of minutes.
Agent
Status
Daily cap (0=∞)
Weight
Expert (hot leads)
Pause
Expert (hot leads): tick only your best agents — the hot Priority leads will show only to them and stay hidden from every other agent (even from their All). When the priority pool is empty, experts work the other pools. If none are ticked, Priority leads stay hidden from all agents until you assign them to someone — they never go open to the whole team.
Download data
date / time range · per agent · CSV
From
To
Agent
Leave the dates blank for today's / all data. Select an agent to export only their leads and orders.
Calling board settings
team access · auto-assign · WhatsApp templates · product links
Agents can see:
Claim lock (minutes)
Settling delay before a lead shows (minutes)
Lead tabhi board par aata hai jab vo itne minute se shaant ho (koi nayi activity nahi). Isse customer ko payment complete karne ka time milta hai — agar order ho gaya to lead aata hi nahi. 0 = turant.
UTM source for calling orders
COD orders placed by the calling team get this utm_source, with utm_medium=calling and utm_campaign = the agent's name (per-agent attribution).
Auto-assign hot leads to online agents round-robin to least-busy online agent
When ON, payment-initiated leads are automatically assigned to the least-busy online agent. When OFF, agents claim leads manually.
WhatsApp templates
Placeholders: {name}{product}{value}{link} — call ke time auto-fill ho jaate hain.
Product → order links
Give each product + price its own link (checkout / pay-link / product page). On Call/WhatsApp it auto-fills {link} by matching the lead's product and amount. Leave the price blank to apply to every order of that product.
Dialer — iCallMate click-to-call
connect the agency dialer so "Call" rings on the agent's own softphone
Enabled
Campaign ID (campid)
Default lead ID (optional)
API base URL
Endpoint path
Auth header name (if any)
Auth header value (if any)
Call trigger mode
Encrypt phone number (encryptPhoNo)
Call-result webhook URL (give this to the agency)
Give this URL to the agency — they POST to it when a call ends/dispositions (matched by clientId = phone). Talk-time + outcome then flow automatically into the lead and Call logs.
Test call
Phone to ring
AssignToID (seat)
Agent (seat 163003) must be logged into the iCallMate softphone & Idle. This fires a real call on that seat and shows the exact API response below.
Each agent's AssignToID goes in Agent manager → "Dialer ID" column. Then the board's Call button triggers the call on that agent's iCallMate softphone (agent must be logged into iCallMate). Confirm with the agency: any API key / IP whitelist (our server IP 168.144.122.24), the response format, and whether they push call status + recording back to us.
Demo abandoned order (testing)
push a fake abandoned cart to the board — test calling on your own number, no website order needed
Customer name
Phone (your number)
Product
Amount (₹)
City
State
Pincode
Abandoned time (optional)
Prepaid intent (UPI/card)
The lead appears on the board (Priority/Live). Set a night time in "Abandoned time" to test the night filter. "Clear all demo leads" removes only demo data — real abandoned data stays safe.
New manual order
Enter the customer's details and pick a product — the COD order is placed on Shopify and credited to you. No need to open Shopify.
Commission % is each marketplace's cut (Amazon/Flipkart ~10–25% by category). COGS % is your product cost as a share of selling price. Returns loss is estimated from the return rate.
Amazon (SP-API)
…
Self-authorize your approved SP-API app, then paste the LWA credentials + refresh token. India marketplace is pre-filled.
LWA Client ID
LWA Client Secret
Refresh token
Marketplace ID
Flipkart (Seller API)
…
Create an app in the Flipkart Seller API portal and paste its Application ID & Secret.
Application ID
Application Secret
Meesho
…
Meesho issues Supplier API credentials on request. No API yet? Use CSV import below — export orders from your Meesho supplier panel.
Supplier ID (optional)
Secret / token (optional)
CSV import
drop a marketplace order export — auto-detects order ID, date, SKU, qty, price, status, state
Activate inventory
Enter your CURRENT physical stock per SKU as the opening balance. From this moment only new Shiprocket dispatches & RTO returns move stock — history is never retro-deducted.
What this counts: your own warehouse stock — website (Shopify) orders shipped via Shiprocket. It goes down on dispatch and back up on RTO return, automatically.
Amazon FBA is separate — those units sit in Amazon's warehouses and are managed in Seller Central, so they are not counted here. For any other channel that ships from your warehouse, use Set actual stock below to reconcile.
Counted the shelf? Enter the real number — the system fixes the difference automatically so stock matches reality. Use this any time the count looks off.
Product → SKU mapping
many Shopify listings → one physical SKU · all stock math is at the master-SKU level
Unmapped products seen in shipped orders — map each so no stock is lost:
Product / SKU (from order)
Example order
Map to master SKU
Listing (SKU / title)
Master SKU
Inventory ledger
every movement — auditable · current stock = sum of this ledger
Date (IST)
Type
SKU
Qty
Order
AWB
Status
By
Note
Vivek Bliss — Winning Ads Report
Your best ads, grouped by campaign and sorted by spend. Switch between Winning ads (spends >5% of its campaign AND beats target ROAS) and Top ads by ROAS (every ad at or above a ROAS you pick). Last 14 days, sale-spike days excluded. Click any ad (▶) to watch its Meta ad preview.
ROAS Min spend Winner = spends >5% of its campaign's spend AND ROAS above target · sale days excluded
Loading all 4 accounts…
Ad preview
Compare by
Min spend 14d ₹ Min ROAS 14d Max CPP 14d ₹ Active only
Click any column header to sort (again to reverse). "Compare by" switches every window column between ROAS / CPP / Spend / Purchases. Green ROAS ≥ 1.5, red < 1. ▲ warming = last-3d value beating the 14d trend; ▼ fatiguing = dropping off. Click a row for the full breakdown, preview and on/off switch.
Ad detail
Each account's last full day vs its own 7-day baseline — delivery stops, ROAS drops, CPP spikes, CTR fatigue, zero-purchase days.
Per-account daily trend
spend · purchases · ROAS per day (last 8 days)
Account
Day
Spend
Purchases
Revenue
ROAS
Month orFrom To +18% GST (INR)
#
Ad account
Status
Spend (native)
Spend (₹)
% of total
Only accounts that actually spent in this range are shown. Covers every connected ad account (not just the ones selected elsewhere), so a new account is never missed. USD is converted to ₹ at your FX rate for the comparable total.
⚙️ Manage accounts — exclude an account or count spend only from a date
Untick an account to keep its spend out of the total (e.g. it ran non-SheBliss ads). Or set a count-from date so spend before that date (old agency-era spend on a taken-over account) is ignored everywhere in this report.
1. Open your Google Sheet → Extensions → Apps Script. Paste: function doPost(e){var d=JSON.parse(e.postData.contents);var s=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];(d.rows||[]).forEach(function(r){s.appendRow(r)});return ContentService.createTextOutput('ok')}
2. Deploy → New deployment → Web app · Execute as Me · Access Anyone → copy the /exec URL, paste above, Save, then "Send test row".
Manual fetch:
Today: 0 reviews0%
These are the one-tap response chips agents see on a call. Add your own in English, remove what you don't use — the popup updates instantly. Anything mentioning irritation / allergy / side-effect auto-alerts the founder.
safety-critical — every one of these also pinged you on alerts
When
Customer
Phone
City
Product
What they said
By product
which SKU gets the feedback
Product
Reviews
By state
top 12
State
Reviews
By agent
watch for an agent marking everything positive, or logging reviews on very short calls
Agent
Reviews
Avg ★
Positive
Negative
Neutral
Short-call flags
Customer
Discreet: confirm you're speaking to the right person before naming the product.
Rating (required)
What did they say? (tap all that apply)
Customer's words (type in English)
Will buy again? Can publish this review ⚠ Side-effect / irritation
Lead detail
Meta (Facebook) Ads
…
App disabled or replaced? Save the new Facebook app's ID + Secret here, then click Re-connect (OAuth). Set the app's Redirect URI to: https://dash.shebliss.in/auth/callback
FX converts the USD credit-line accounts to ₹ and is also used by Telegram/WhatsApp alerts & digests. Live rate still refreshes on every load; this is the fallback/default.
Webhooks — Shiprocket Checkout
…
…
Paste this URL in Shiprocket Checkout → Settings → Webhooks (Abandon Cart + Order Placed). If you're on a tunnel, the domain changes on every tunnel restart.
Alerts & other config
…
Team & login
…
Name
Email
Role
Last login
Actions
Stored data (.data folder)
everything lives on this machine only — tokens & passwords never leave it