IPS Call Log — Setup
Connect to your Supabase database.
1
Supabase → SQL Editor → New query → paste & run:
ALTER TABLE public.customers ADD COLUMN IF NOT EXISTS visit_frequency text default ''; ALTER TABLE public.customers ADD COLUMN IF NOT EXISTS is_target boolean default false; ALTER TABLE public.customers ADD COLUMN IF NOT EXISTS postcode text default ''; ALTER TABLE public.customers ADD COLUMN IF NOT EXISTS area text default ''; ALTER TABLE public.customers ADD COLUMN IF NOT EXISTS district text default ''; CREATE TABLE IF NOT EXISTS public.surveys ( id bigserial primary key, rep text, customer text, survey_date date, problem1 text default '', problem2 text default '', problem3 text default '', created_at timestamptz default now() ); ALTER TABLE public.surveys ENABLE ROW LEVEL SECURITY; DROP POLICY IF EXISTS "open" ON public.surveys; CREATE POLICY "open" ON public.surveys FOR ALL USING (current_setting('request.headers',true)::json->>'x-app-secret' = 'od2S2mXqttJVpvUzVYaDLe9tKTjZ1HABxJIpAOOs') WITH CHECK (current_setting('request.headers',true)::json->>'x-app-secret' = 'od2S2mXqttJVpvUzVYaDLe9tKTjZ1HABxJIpAOOs'); CREATE TABLE IF NOT EXISTS public.suppliers_data ( id bigserial primary key, name text not null, payment_terms text default '', settlement_discount text default '', rebate_period text default '', rebate_tiers text default '', spend_ytd numeric default 0, spend_target numeric default 0, product_rebates text default '', special_deals text default '', rep_name text default '', rep_phone text default '', price_list_url text default '', notes text default '', created_at timestamptz default now() ); ALTER TABLE public.suppliers_data ENABLE ROW LEVEL SECURITY; DROP POLICY IF EXISTS "open" ON public.suppliers_data; CREATE POLICY "open" ON public.suppliers_data FOR ALL USING (current_setting('request.headers',true)::json->>'x-app-secret' = 'od2S2mXqttJVpvUzVYaDLe9tKTjZ1HABxJIpAOOs') WITH CHECK (current_setting('request.headers',true)::json->>'x-app-secret' = 'od2S2mXqttJVpvUzVYaDLe9tKTjZ1HABxJIpAOOs'); CREATE TABLE IF NOT EXISTS public.app_settings ( key text primary key, value text default '' ); ALTER TABLE public.app_settings ENABLE ROW LEVEL SECURITY; DROP POLICY IF EXISTS "open" ON public.app_settings; CREATE POLICY "open" ON public.app_settings FOR ALL USING (current_setting('request.headers',true)::json->>'x-app-secret' = 'od2S2mXqttJVpvUzVYaDLe9tKTjZ1HABxJIpAOOs') WITH CHECK (current_setting('request.headers',true)::json->>'x-app-secret' = 'od2S2mXqttJVpvUzVYaDLe9tKTjZ1HABxJIpAOOs'); INSERT INTO public.app_settings (key,value) VALUES ('survey_enabled','true') ON CONFLICT (key) DO NOTHING;
2
Project Settings → API → copy Project URL and anon key.

🔔 Push Notifications (optional)
Install the free ntfy app, subscribe to your topic, get a ping every time a rep logs a visit.
🖴
Import customer accounts
Database connected. Import all 970 accounts to get started.
IPS Call Log