Skip to main content

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.

PyPI Python License: MPL-2.0

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

Part of Entirius

This module runs inside the Entirius backend service (Volkanos) and serves the forms of the storefront.

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)

Source distribution for entirius-django-contact-forms 4.0.0
File Size Uploaded
entirius_django_contact_forms-4.0.0.tar.gz 224.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for entirius-django-contact-forms 4.0.0
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

4.0.0 This release

2 release files

3.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page