Session Expiring Soon
You've been inactive. You will be automatically logged out in:
60
SmartLinkX ISP
Management System

Connect to Supabase

Enter your Supabase credentials. You can find these in your Supabase dashboard under Settings → API.

Settings → API → Project URL
Settings → API → anon public key
Loading…
Dashboard
Active Customers
All active accounts
Assigned Devices
Active device assignments
Due / Overdue
Accounts needing attention
📅 Due Today
AccountNameBalance
⚠️ Overdue Accounts
AccountNameDaysBalance
Internet Plans
Manage service plans
CodePlan NameSpeed ProfileMonthly FeeInstall FeeStatus
Customer Management
All accounts
Account #NameMobilePlanStatusAppliedT&C Accepted
Customer 360°
Full ledger and service history
AccountNamePlanStatus
Bulk Operations
Upload Customers CSV
📄

Click to select CSV

Required: account_no, full_name, service_address, plan_code
Format Guide
account_no,full_name,service_address,
plan_code,mobile_number,email,
company_name,billing_address,
due_day,connection_type

• Minimum: account_no, full_name, service_address, plan_code
• Duplicates are automatically skipped

Bulk Plan Change CSV
🔄

Click to select CSV

Required: account_no, new_plan_code
Rules
account_no,new_plan_code

• Old service deactivated, new one created
• due_day, connection_type, ip_mode preserved
• Upgrade / downgrade auto-detected

Billing Cycles
Invoice generation and billing periods
Cycle CodeMonthBill DateDue DateStatusLockInvoices
Payments & Official Receipts
OR #DateAccountCustomerMethodAmount
Collections & AR Aging
Current
₱0
0
1–30 Days
₱0
0
31–60 Days
₱0
0
61–90 Days
₱0
0
90+ Days
₱0
0
Due Today
AccountNameBalance
Overdue
AccountNameDaysBalance
Device Assignments
ONU, Modem, Router inventory
CustomerTypeBrand/ModelSerial #MACIP AddressAssignedTechnicianStatus
Expenses
Operational cost tracking
This Month
₱0
This Year
₱0
Total Records
0
DatePayeeRef #DescriptionExpense AcctSourceAmountBy
SMS Operations
Configuration
⚠ Edge Function Required
SMS must be sent via a Supabase Edge Function — direct browser calls to Semaphore are blocked by CORS. See the setup guide below.
Send Operations
Message Preview
0 chars
🔧 Edge Function Setup Guide Required to fix SMS
Why SMS fails: Browsers block direct calls to api.semaphore.co due to CORS security policy. A Supabase Edge Function acts as the server-side proxy.
Step 1 — Install Supabase CLI
npm install -g supabase
Step 2 — Create the Edge Function file
Create file: supabase/functions/send-sms/index.ts
import { serve } from "https://deno.land/std@0.168.0/http/server.ts"; const cors = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type", }; serve(async (req) => { if (req.method === "OPTIONS") return new Response("ok", { headers: cors }); if (req.method === "GET") return new Response("ok", { headers: cors }); // ping try { const body = await req.json(); const res = await fetch("https://api.semaphore.co/api/v4/messages", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body), }); const data = await res.json(); return new Response(JSON.stringify(data), { status: res.status, headers: { ...cors, "Content-Type": "application/json" }, }); } catch (e) { return new Response(JSON.stringify({ error: e.message }), { status: 500, headers: { ...cors, "Content-Type": "application/json" }, }); } });
Step 3 — Deploy to Supabase
supabase login supabase link --project-ref YOUR_PROJECT_REF supabase functions deploy send-sms --no-verify-jwt
• Replace YOUR_PROJECT_REF with the ID from your Supabase URL (e.g. qklbdgprixxnungxyugq)
--no-verify-jwt allows calls from the browser with your anon key
Step 4 — Test the connection
Click the 🔌 Test Connection button in the Configuration card above. A green message confirms SMS will now work.
✓ After deploying: Click 🔄 Retry Failed button in SMS Logs to re-send all previously failed messages automatically.
SMS Logs
Date/TimeAccountMobileTypeMessageStatusError / Response