diff --git a/examples/workflows/create_alert_from_vm_metric.yml b/examples/workflows/create_alert_from_vm_metric.yml
index e4eaaeaa4a..e28ff9d02d 100644
--- a/examples/workflows/create_alert_from_vm_metric.yml
+++ b/examples/workflows/create_alert_from_vm_metric.yml
@@ -15,22 +15,25 @@ workflow:
 
   actions:
     - name: create-alert
-      alias:
-        # assign the value of the query result to the alias `cpu`
-        # so we can use it anywhere in the action
-        cpu: "{{ steps.victoriametrics-step.results.data.result.0.value.1 }}"
       # only create an alert if the CPU usage is greater than 0.005
-      if: "{{ aliases.cpu }} > 0.005 "
+      if: "{{ steps.victoriametrics-step.results.data.result.0.value.1 }} > 0.001 "
       provider:
         type: keep
         # create an alert with the following details
         with:
           name: "High CPU Usage"
           description: "CPU usage is high on the VM (created from VM metric)"
-          severity: '{{ aliases.cpu }} > 0.9 ? "critical" : {{ aliases.cpu }} > 0.7 ? "warning" : "info"'
+          severity: '{{ steps.victoriametrics-step.results.data.result.0.value.1 }} > 0.9 ? "critical" : {{ steps.victoriametrics-step.results.data.result.0.value.1 }} > 0.7 ? "warning" : "info"'
           labels:
             environment: production
             app: myapp
             service: api
             team: devops
             owner: alice
+          # optional: customize the fingerprint based on these fields
+          fingerprint_fields:
+            - environment
+            - app
+            - service
+            - team
+            - owner
diff --git a/keep/providers/keep_provider/keep_provider.py b/keep/providers/keep_provider/keep_provider.py
index ff45fcda2d..df898d55e1 100644
--- a/keep/providers/keep_provider/keep_provider.py
+++ b/keep/providers/keep_provider/keep_provider.py
@@ -1,21 +1,22 @@
 """
 Keep Provider is a class that allows to ingest/digest data from Keep.
 """
-import yaml
+
 import logging
-from html import unescape
 from datetime import datetime, timezone
+from html import unescape
 
+import yaml
 
 from keep.api.core.db import get_alerts_with_filters
 from keep.api.models.alert import AlertDto
+from keep.api.tasks.process_event_task import process_event
 from keep.contextmanager.contextmanager import ContextManager
 from keep.exceptions.provider_exception import ProviderException
 from keep.providers.base.base_provider import BaseProvider
 from keep.providers.models.provider_config import ProviderConfig
 from keep.searchengine.searchengine import SearchEngine
 from keep.workflowmanager.workflowstore import WorkflowStore
-from keep.api.tasks.process_event_task import process_event
 
 
 class KeepProvider(BaseProvider):
@@ -127,49 +128,63 @@ def _notify(self, **kwargs):
                 workflow_to_update_yaml = unescape(workflow_to_update_yaml)
                 workflow_to_update_yaml = yaml.safe_load(workflow_to_update_yaml)
 
-                if 'workflow' in workflow_to_update_yaml:
-                    workflow_to_update_yaml = workflow_to_update_yaml['workflow']
+                if "workflow" in workflow_to_update_yaml:
+                    workflow_to_update_yaml = workflow_to_update_yaml["workflow"]
 
                 workflow = workflowstore.create_workflow(
-                    tenant_id=self.context_manager.tenant_id, 
-                    created_by=f"workflow id: {self.context_manager.workflow_id}", 
-                    workflow=workflow_to_update_yaml
+                    tenant_id=self.context_manager.tenant_id,
+                    created_by=f"workflow id: {self.context_manager.workflow_id}",
+                    workflow=workflow_to_update_yaml,
                 )
             except Exception as e:
                 self.logger.exception(
                     "Failed to create workflow",
-                    extra={"tenant_id": context_manager.tenant_id, "workflow": workflow},
+                    extra={
+                        "tenant_id": context_manager.tenant_id,
+                        "workflow": workflow,
+                    },
                 )
                 raise ProviderException(f"Failed to create workflow: {e}")
         else:
+            fingerprint_fields = kwargs.get("fingerprint_fields", [])
             alert = AlertDto(
-                name=kwargs['name'],
-                status=kwargs.get('status'),
-                lastReceived=kwargs.get('lastReceived'),
-                environment=kwargs.get('environment', "undefined"),
-                duplicateReason=kwargs.get('duplicateReason'),
-                service=kwargs.get('service'),
-                message=kwargs.get('message'),
-                description=kwargs.get('description'),
-                severity=kwargs.get('severity'),
+                name=kwargs["name"],
+                status=kwargs.get("status"),
+                lastReceived=kwargs.get("lastReceived"),
+                environment=kwargs.get("environment", "undefined"),
+                duplicateReason=kwargs.get("duplicateReason"),
+                service=kwargs.get("service"),
+                message=kwargs.get("message"),
+                description=kwargs.get("description"),
+                severity=kwargs.get("severity"),
                 pushed=True,
-                url=kwargs.get('url'),
-                labels=kwargs.get('labels'),
-                ticket_url=kwargs.get('ticket_url'),
-                fingerprint=kwargs.get('fingerprint'),
+                url=kwargs.get("url"),
+                labels=kwargs.get("labels"),
+                ticket_url=kwargs.get("ticket_url"),
+                fingerprint=kwargs.get("fingerprint"),
             )
+            # if fingerprint_fields are provided, calculate fingerprint
+            if fingerprint_fields:
+                # calculate fingerprint
+                self.logger.info(
+                    "Calculating fingerprint for alert",
+                    extra={"fingerprint_fields": fingerprint_fields},
+                )
+                alert.fingerprint = self.get_alert_fingerprint(
+                    alert, fingerprint_fields
+                )
+
             process_event(
                 {},
                 self.context_manager.tenant_id,
                 "keep",
                 None,
-                kwargs.get('fingerprint'),
+                kwargs.get("fingerprint"),
                 None,
                 None,
                 alert,
             )
 
-
     def validate_config(self):
         """
         Validates required configuration for Keep provider.