Gravity Gravity Docs

Gravity Contacts System

Copyright 2026 EIM Global Solutions, LLC Written by: J. Patrick Farrell

This sub-system handles adding and managing contacts. Using this sub-system, we have the ability to collect emails, name and phone number and any other contact information through a form or through the API.

The idea of this subsystem is to collect and organize an email list into named lists (e.g. a general list plus one per campaign/event) that a client can manage from /admin/contacts/manage.

Data Storage

Contacts are stored via app/services/contact_store.py on top of Gravity's pluggable ContentStore abstraction (see docs/gravity/architecture.md §5) — local JSON by default, or one of the cloud backends in a real deploy. Unlike blog posts and events, contacts have no separate Adhara-backed variant; it's always the ContentStore.

One document (contacts.json) contains an object per list, keyed by a list tag, each holding {"name": ..., "list": [...]}.

The default list is called "general", but if you specify a list name tag, it will create a new list for that list name.

An optional argument of "name" can be included in the list object that offers a description of the list.