diff --git a/doc/api/resources/webhooks.rst b/doc/api/resources/webhooks.rst index c30b39a5b..1d2b3e515 100644 --- a/doc/api/resources/webhooks.rst +++ b/doc/api/resources/webhooks.rst @@ -67,6 +67,9 @@ The following values for ``action_types`` are valid with pretix core: * ``pretix.event.live.deactivated`` * ``pretix.event.testmode.activated`` * ``pretix.event.testmode.deactivated`` + * ``pretix.customer.created`` + * ``pretix.customer.changed`` + * ``pretix.customer.anonymized`` Installed plugins might register more valid values. diff --git a/src/pretix/api/webhooks.py b/src/pretix/api/webhooks.py index e05d2fe5b..45190fc11 100644 --- a/src/pretix/api/webhooks.py +++ b/src/pretix/api/webhooks.py @@ -202,6 +202,21 @@ class ParametrizedWaitingListEntryWebhookEvent(ParametrizedWebhookEvent): } +class ParametrizedCustomerWebhookEvent(ParametrizedWebhookEvent): + + def build_payload(self, logentry: LogEntry): + customer = logentry.content_object + if not customer: + return None + + return { + 'notification_id': logentry.pk, + 'organizer': customer.organizer.slug, + 'customer': customer.identifier, + 'action': logentry.action_type, + } + + @receiver(register_webhook_events, dispatch_uid="base_register_default_webhook_events") def register_default_webhook_events(sender, **kwargs): return ( @@ -350,6 +365,18 @@ def register_default_webhook_events(sender, **kwargs): 'pretix.event.orders.waitinglist.voucher_assigned', _('Waiting list entry received voucher'), ), + ParametrizedCustomerWebhookEvent( + 'pretix.customer.created', + _('Customer account created'), + ), + ParametrizedCustomerWebhookEvent( + 'pretix.customer.changed', + _('Customer account changed'), + ), + ParametrizedCustomerWebhookEvent( + 'pretix.customer.anonymized', + _('Customer account anonymized'), + ), )