HOME / FREE TOOLS / REW + FUB BRIDGE
§ OPEN SOURCE · NODE / DENO ballisticleads/rew-fub-integration
INTERMEDIATE

REW + FUB BRIDGE

Webhook-based bidirectional sync between Real Estate Webmasters and Follow Up Boss. Lossless field mapping, dead-letter queue, full audit log.

VERSION
v0.7.1
LICENSE
MIT
STACK
NODE / DENO
UPDATED
4 days ago

OVERVIEW.

Most teams running both REW and FUB end up with duplicate leads, lost notes, and silent sync failures. This bridge gives you a single declarative mapping file, a managed webhook bus, and a dead-letter queue you can replay. Run it as a long-lived service or trigger on demand.

INSTALL.

terminal BASH
# Run the bootstrap
npx @ballistic/rew-fub init

# Or via Docker
docker run -p "8080:8080" \
  --env-file .env \
  ghcr.io/ballisticleads/rew-fub:latest

FEATURES.

F-01

BIDIRECTIONAL

Changes in either system propagate to the other. Conflict resolution via last-write-wins or custom strategy.

F-02

FIELD MAPPING

Declarative YAML maps any source field to any destination field. Transforms via JSONata expressions.

F-03

DEAD-LETTER QUEUE

Failed syncs land in a DLQ. Inspect, fix, and replay from the CLI without losing leads.

F-04

AUDIT LOG

Every sync event is logged with before / after state. Export to S3, Datadog, or your own SIEM.

F-05

RATE LIMITED

Respects both APIs’ limits. Backoff, retry with jitter, and burst tolerance built in.

F-06

TYPED

Full TypeScript types for REW and FUB schemas. Map fields with autocomplete, not guesswork.

QUICKSTART.

mapping.yaml YAML
# Map REW lead -> FUB person
source: rew
target: fub

mapping:
  firstName: "$.first_name"
  lastName: "$.last_name"
  emails: "[{ value: $.email, type: 'home' }]"
  tags: "$append($.tags, ['rew-import'])"
  source: "REW / " & $.lead_source

on_conflict: newest_wins
dlq: s3://ballistic-dlq/rew-fub/

CONFIGURATION.

KEYTYPEDESCRIPTION
REW_API_KEY REQ string API key from Real Estate Webmasters admin. Read + write scopes.
FUB_API_KEY REQ string Follow Up Boss API key. Generated under Admin / API.
MAPPING_FILE REQ path Path to your mapping YAML. See examples/ in the repo.
WEBHOOK_PORT number HTTP port for the inbound webhook bus. Defaults to 8080.
DLQ_TARGET string Destination for failed events. s3://, file://, or postgres:// supported.
LOG_LEVEL "debug" | "info" | "warn" | "error" Verbosity. Defaults to "info".

USE CASES.

USE-01

DUAL-CRM TEAMS

Marketing in REW, sales in FUB. Keep both in lockstep without manual exports.

USE-02

MIGRATIONS

Move historic data between systems with full fidelity. Run as a one-shot batch.

USE-03

BACKUP MIRROR

Treat one CRM as primary, the other as a hot mirror. Failover with zero data loss.

USE-04

ATTRIBUTION

Stamp REW campaign source onto FUB person records. Tie every closed deal back to the channel.

Need this built for your team? We do that too.

TALK TO ENGINEERING