Contacts

Set up, configure, and run the Reloop contacts microservice locally.

Complete Base Setup First

Ensure you've finished the Setup — before proceeding.

Service Overview

Subscriber profiles, groups, channels, custom properties, and suppression lists.

PropertyValue
Directoryapps/backend/contacts
Port8014
Local URLhttps://local.reloop.sh/api/contacts
Swagger UIhttps://local.reloop.sh/api/contacts/openapi
StackElysiaJS PostgreSQL Redis NATS

Quick Start

Run from the monorepo root:

bun be:contacts:dev

The service starts with hot reloading on port 8014.

Environment Configuration

Variables live in apps/backend/contacts/.env. Running bun env:setup from the root auto-populates this file.

PG_URL=postgresql://reloop:reloop123@localhost:5432/reloop
REDIS_URL=redis://:reloop123@localhost:6379
PORT=8014
BASE_URL="https://local.reloop.sh"
NATS_URL=nats://localhost:4222
PREFERENCES_SECRET="reloop-preferences-secret-key-change-in-prod"
NODE_ENV=development

PREFERENCES_SECRET signs preference-center tokens consumed by the Links app. The service refuses to start in production if this is left at the default dev value.

Reference Table

VariableRequiredDefault
PG_URLYESpostgresql://...
REDIS_URLYESredis://...
PORTYES8014
BASE_URLYEShttps://local.reloop.sh
NATS_URLYESnats://localhost:4222
PREFERENCES_SECRETProd onlyDev default in .env.dev — must be a strong random value in production

Development Commands

CommandDescription
bun be:contacts:devStart dev server with hot reloading
bun run --filter=contacts buildCompile production bundle
bun run --filter=contacts startRun compiled production build
bun run --filter=contacts check-typesTypeScript type-check

Architecture

LayerDetail
AudienceContacts, groups, channels, and custom properties per organization.
PreferencesPowers the Links preference center.
EventsLifecycle events published to NATS under contacts.*.
Schemacontact, channel, group in packages/db/src/schema/.

Was this page helpful?

Edit this page