def METHOD_NAME(sender, instance, *args, **kwargs):
    """Order related events:
    - order created
    - order status changed (in-transit, delivered or blocked)
    """
    created = kwargs.get("created", False)
    changes = kwargs.get("update_fields") or []
    if "created_at" in changes:
        duplicates = (
            models.Order.objects.exclude(status="cancelled")
            .filter(
                org=instance.link.org,
                source=instance.source,
                order_id=instance.order_id,
                test_mode=instance.test_mode,
            )
            .count()
        )
        if duplicates > 1:
            raise serializers.ValidationError(
                {
                    "order_id": f"An order with 'order_id' {instance.order_id} already exists."
                }
            )
    if created or "created_at" in changes:
        event = EventTypes.order_created.value
    elif "status" not in changes:
        event = EventTypes.METHOD_NAME.value
    elif instance.status == serializers.OrderStatus.fulfilled.value:
        event = EventTypes.order_fulfilled.value
    elif instance.status == serializers.OrderStatus.cancelled.value:
        event = EventTypes.order_cancelled.value
    elif instance.status == serializers.OrderStatus.delivered.value:
        event = EventTypes.order_delivered.value
    else:
        return
    data = serializers.Order(instance).data
    event_at = instance.updated_at
    context = dict(
        user_id=failsafe(lambda: instance.created_by.id),
        test_mode=instance.test_mode,
        org_id=failsafe(
            lambda: instance.org.first().id if hasattr(instance, "org") else None
        ),
    )
    if settings.MULTI_ORGANIZATIONS and context["org_id"] is None:
        return
    tasks.notify_webhooks(event, data, event_at, context, schema=settings.schema)