Skip to content

Integrations Overview

The Three Integrations

NOMA Sync Engine connects three external platforms to Little Green Light. Each connects a platform to LGL via a dedicated webhook endpoint.

Givebutter (Primary Donor Source)

AspectDetails
SourceGivebutter
PurposeDonations, event registration, peer-to-peer fundraising
WebhookPOST /webhooks/givebutter
Key eventstransaction.succeeded, ticket.created, campaign.created
Syncs to LGLConstituents, gifts, campaign/fund mapping, custom fields
BackupPolling every 15 minutes for missed transactions
DashboardSyncs (filter by Givebutter), Mappings (campaign overrides)

Givebutter is NOMA's primary donor and event platform. All donation and ticket data flows through the Givebutter integration into LGL. Campaign mapping (Givebutter campaign → LGL fund) is configured in the Mappings page.


Square (E-Commerce)

AspectDetails
SourceSquare
PurposeOnline store orders (merchandise, products)
WebhookPOST /webhooks/square
Key eventsorder.created, order.updated
Syncs to LGLConstituents (or default constituent), gifts, campaign by location
BackupSame 15-minute polling when Square token is set
DashboardSyncs, Mappings (Square type default), Square Orders (list, resync), Settings (default constituent)

Square orders are synced when state is COMPLETED or OPEN with payment. Per-location campaign overrides map Square locations to LGL funds. Orders with no customer use the default constituent (configured in Settings).


Mailchimp (Newsletter)

AspectDetails
SourceMailchimp
PurposeNewsletter signups, unsubscribes, list/tag management
WebhookPOST /webhooks/mailchimp
Key eventsUnsubscribe, cleaned
Syncs to LGLConstituent updates (unsubscribe → remove tag), list/tag rules
DashboardMailchimp Settings (list mapping, tag rules), Syncs

Mailchimp webhook notifies NOMA Sync when someone unsubscribes or is cleaned. The Worker finds the constituent in LGL and updates tags (e.g. remove "Newsletter" tag). List and tag rules are configured in Mailchimp Settings.


Comparison at a Glance

IntegrationPrimary dataIdempotency keyConfig location
GivebutterDonations, ticketsgivebutter_{transaction_id}Mappings (campaign overrides)
SquareOrderssquare_order_{order_id}Mappings (type + location), Settings (default constituent)
MailchimpUnsubscribes, list eventsEvent-basedMailchimp Settings (lists, tag rules)

Codebase Reference

  • Givebutter: apps/worker/src/handlers/givebutter-webhook.ts, adapters/givebutter-client.ts, lib/campaign-mapping.ts
  • Square: apps/worker/src/handlers/square-webhook.ts, lib/square-to-lgl.ts, adapters/square-client.ts
  • Mailchimp: apps/worker/src/handlers/mailchimp-webhook.ts, lib/contact-sync.ts, lib/mailchimp-list-mapper.ts, lib/mailchimp-tag-rules.ts

All sync events are logged to the sync_log table and visible in the dashboard Syncs page.