Skip to content

Platform · Communications

Comms Plan

How PURE sends email and SMS: one home in Supabase Edge Functions, a provider behind each channel, and compliance built into the path — not bolted on.

The path a message takes

App / RPC Edge Function Provider Recipient

The app calls an RPC or drops a row; an Edge Function picks it up, applies consent + rate rules, calls the provider, and writes the result to audit_log. Inbound reverses it: provider webhook Edge Function pure_poppy_inbox.

Channels & providers

ChannelProviderEdge functionStatus
Transactional emailResendresend-emailActive
Inbound email PoppyMail router webhookpure-email-inReady · needs MX
Outbound SMSTwilio · Messaging Service + A2P 10DLCpure-commsAssigned · Katy
Bulk emailAmazon SES / PostmarkEvaluating

Composio can send outbound today; inbound always needs a webhook or MX serverless endpoint. Bulk SMS routes through a Twilio Messaging Service with A2P 10DLC registration; bulk email weighs SES (cost) against Postmark (deliverability).

Domains & sender authentication

acquisto.biz owns its emailNo mail is configured on acquisto.biz today — a clean slate. PURE sets sender auth here freely. MX records are independent of the Netlify web records, so inbound can sit on in.acquisto.biz without touching the site.
SPF · DKIM · DMARCOutbound uses a sending subdomain with all three aligned. “Email doesn’t work” is always diagnosed across the full path — DNS, provider auth, and DMARC alignment — never a single record.
Never touch acquistorealestate.comThe brokerage’s human mail runs on Zoho at acquistorealestate.com. PURE’s automated mail is isolated on acquisto.biz and never changes the Zoho domain.

Compliance, built into the send

Consent & opt-outEvery message honors unsubscribe (email) and STOP (SMS). Consent state is checked in the Edge Function before the provider is called.
Quiet hours & rate capsPer-lane ceilings live in pure_rate_limits (enforcement currently off by Mike’s call). Time-of-day guards keep automated SMS inside allowed windows.
Full audit trailEvery send and every inbound lands in audit_log with principal, channel, and result — the same ledger the health-scan cron watches.
No real client PIINo production contact data flows through comms until the auth window lands. Test sends use seeded, non-PII addresses only.

Live edge functions confirmed active: resend-email, pure-mcp. The inbound endpoint pure-email-in is deployed and waits only on the MX/DNS human step. SMS work is scheduled with Katy.