entirius-django-contact-forms
A Django module for contact forms in Entirius, the open-source modular ecommerce platform. It accepts form submissions with attachments per sales channel, sends notification emails, takes calendar bookings, and turns submissions into leads that can be reported to Google Ads as offline conversions.
What it does
- Accepts form submissions with file attachments, scoped per sales channel and typed from a per-channel catalog.
- Sends a notification to the shop and an optional copy to the submitter, configured per form type.
- Offers a booking calendar with free slots, backed by Google Calendar or a local-only backend.
- Creates leads from submissions and bookings and tracks them through a status pipeline.
- Uploads lead conversions to Google Ads.
- Exposes an admin API for the CMS and a key-protected, throttled public API for the storefront.
Installation
uv add entirius-django-contact-forms
pip install entirius-django-contact-forms
INSTALLED_APPS = [
...
"django_regional",
"django_utils",
"django_contact_forms",
]
PRIVATE_DIR = "/private" # required: root of the private file storage (attachments)
# urls.py
urlpatterns = [
path("", include("django_contact_forms.urls")),
]
PRIVATE_DIR is the only required setting. Reference with defaults:
https://github.com/entirius/entirius-django-contact-forms/blob/develop/docs/configuration.md
Extras: bookings (Google Calendar backend for bookings), google-ads (conversion uploads), email (branded
notification emails through entirius-django-email).
uv add "entirius-django-contact-forms[bookings,google-ads,email]"
The public API takes a key in the X-API-KEY header. Where django_access is installed the key is an access token
with the scope contact_forms.submit (bookings: contact_forms.booking):
python manage.py access_token create --application storefront --create-application --scope contact_forms.submit --channel default
Without django_access, python manage.py forms-generate-api-key creates the key.
Quick start
from django_contact_forms.services.contact_form_service import create_submission, get_channel
channel = get_channel(idx="default")
form = create_submission(email="customer@example.com", channel=channel, body={"message": "Hello"})
Requirements
- Python 3.11 or newer, Django 4.0 or newer.
- PostgreSQL, and Celery for email dispatch and conversion uploads.
- Entirius packages pulled in:
entirius-django-regional,entirius-django-utils,entirius-py-idx-normalizator,entirius-py-process-logger. - Optional, through the extras:
entirius-py-google-calendar-sdk,entirius-py-google-ads-sdk,entirius-django-email.
Documentation
- Module docs: https://github.com/entirius/entirius-django-contact-forms/tree/develop/docs
- Entirius documentation: https://docs.entirius.com/
- Changelog: https://github.com/entirius/entirius-django-contact-forms/blob/develop/CHANGELOG.md
Part of Entirius
This module runs inside the Entirius backend service (Volkanos) and serves the forms of the storefront.
- Backend service: https://github.com/entirius/entirius-service-volkanos
- Docker harness: https://github.com/entirius/entirius-zeno
- Sibling modules: https://github.com/entirius/entirius-django-email, https://github.com/entirius/entirius-django-regional, https://github.com/entirius/entirius-django-access
Development
make install # sync dependencies (uv)
make check # lint + format check (ruff)
make test # test suite (pytest, needs PostgreSQL via DATABASE_URL)
Development and agent instructions: https://github.com/entirius/entirius-django-contact-forms/blob/develop/AGENTS.md
License
Mozilla Public License 2.0 (MPL-2.0) — see https://github.com/entirius/entirius-django-contact-forms/blob/develop/LICENSE.
Metadata
Release files for entirius-django-contact-forms 4.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| entirius_django_contact_forms-4.0.0.tar.gz | 224.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| entirius_django_contact_forms-4.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 360.9 kB
Release files / entirius_django_contact_forms-4.0.0.tar.gz
| Download URL | entirius_django_contact_forms-4.0.0.tar.gz |
|---|---|
| Size | 224.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fd8428dab346c7564b8df299e3cee24821d5613132ccf719a5c6ecc6d3cb5b3
|
|
BLAKE2b-256 checksum How to use checksums |
b241411c8a04e4d146c73d9fc184fc8b277084ad0c630f2e43fe98359fcc6031
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / entirius_django_contact_forms-4.0.0-py3-none-any.whl
| Download URL | entirius_django_contact_forms-4.0.0-py3-none-any.whl |
|---|---|
| Size | 136.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
801e8772f0f4f6df14bfd28146450a1564c018210d5a236feecfcada9ed8071a
|
|
BLAKE2b-256 checksum How to use checksums |
8abdb44ac49e52b545167e6f96e396812d314204e809e7f10e2bfb24f5d8b2c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|