Uniqs Actions
Uniqs actions prevent duplicate processing by recording the values a workflow has already handled. This is essential for implementing the Do-once Pattern in your workflows.
The node splits this across two resources: Uniq works with the values inside a collection, Uniq Collection works with the collections themselves.
Available Operations
Uniq
- Add - Add a value to a Uniq collection, with a separate output for duplicates
- Check Exists - Check whether a value is already in the collection
- Get - Retrieve the values stored in a collection
- Remove - Remove a value from a collection
Uniq Collection
- Create - Create a new empty Uniq collection
- List - Retrieve all Uniq collections available to your app
- Get Info - Get details about a specific collection
Add
Add a value to a Uniq collection.
Add Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Collection Name | String | Yes | Name of the Uniq collection holding the values. Letters, numbers, hyphens and underscores only, maximum 100 characters. |
| Uniq Value | String | Yes | The value to check, add, or remove from the Uniq collection. Can be any string up to 255 characters (e.g., email, user ID, domain name). |
Under Advanced Settings:
| Parameter | Type | Required | Description |
|---|---|---|---|
| Metadata | JSON | No | Optional JSON metadata to associate with this Uniq value. Useful for tracking additional information about the value. |
The collection must already exist. Create it with Uniq Collection → Create, or from the dashboard.
Add Outputs
Add has two outputs. Added receives values stored for the first time; Duplicate receives values that were already in the collection, together with the existing record. Wire the Duplicate output when you want to skip or log repeats; leave it unwired when repeats can simply stop.
With Continue on fail enabled, items that fail (an empty value, invalid metadata, or a server error) go to the second output with an error field. They never appear on Added.
Values are trimmed and compared case-sensitively: "Abc" and "abc" are two different entries.
Add Response
On the Added output:
{
"id": "value123",
"uniqId": "uniq123",
"value": "ORDER_12345",
"createdAt": "2024-01-01T10:00:00.000Z",
"updatedAt": "2024-01-01T10:00:00.000Z"
}
On the Duplicate output, the record already stored for that value, or { "value": "ORDER_12345" } when the server did not return it.
Use Cases
- Order Processing: Mark orders as processed
- Email Deduplication: Track sent emails
- File Processing: Mark files as processed
- Data Import: Track imported records
Check Exists
Check whether a value is already in the collection.
Check Exists Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Collection Name | String | Yes | Name of the Uniq collection holding the values. Letters, numbers, hyphens and underscores only, maximum 100 characters. |
| Uniq Value | String | Yes | The value to check, add, or remove from the Uniq collection. Can be any string up to 255 characters (e.g., email, user ID, domain name). |
Under Additional Fields:
| Parameter | Type | Required | Description |
|---|---|---|---|
| Include Uniq Data | Boolean | No | Whether to include additional metadata about the Uniq value in the output. Defaults to false. |
| Uniq Data Field Name | String | No | The field name where Uniq metadata will be stored in the output JSON. Defaults to 8kit. |
Check Exists Outputs
Check Exists has two outputs. Yes receives items whose value is already in the collection; No receives items whose value is not. There is no exists flag to test: the branch is the answer.
Check Exists Response
The incoming item passes through unchanged. With Include Uniq Data on, the stored record is added under the field named by Uniq Data Field Name:
{
"orderId": "ORDER_12345",
"8kit": {
"id": "value123",
"uniqId": "uniq123",
"value": "ORDER_12345",
"createdAt": "2024-01-01T10:00:00.000Z",
"updatedAt": "2024-01-01T10:00:00.000Z"
}
}
Use Cases
- Duplicate Prevention: Check before processing
- Status Verification: Verify if item was processed
- Conditional Logic: Branch on the Yes and No outputs
- Audit Trails: Track processing history
Remove
Remove a value from a collection.
Remove Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Collection Name | String | Yes | Name of the Uniq collection holding the values. Letters, numbers, hyphens and underscores only, maximum 100 characters. |
| Uniq Value | String | Yes | The value to check, add, or remove from the Uniq collection. Can be any string up to 255 characters (e.g., email, user ID, domain name). |
Remove Response
The incoming item passes through, with the outcome added:
{
"orderId": "ORDER_12345",
"removed": true,
"value": "ORDER_12345",
"result": {}
}
Use Cases
- Data Cleanup: Remove old entries
- Status Updates: Mark items as unprocessed
- Error Recovery: Remove failed items
- Manual Overrides: Allow reprocessing
Get
Retrieve the values stored in a collection.
Get Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Collection Name | String | Yes | Name of the Uniq collection holding the values. Letters, numbers, hyphens and underscores only, maximum 100 characters. |
Under Advanced Settings → Pagination:
| Parameter | Type | Required | Description |
|---|---|---|---|
| Page | Number | No | Page number to retrieve (starts from 1). |
| Items Per Page | Number | No | Maximum number of Uniq values to return per page (1-100). |
| Offset (Advanced) | Number | No | Number of items to skip from the beginning. |
Set none of the three and the node reads every page and returns the whole collection. Set any of them and it returns exactly that page.
Get Response
{
"items": [
{
"id": "value123",
"uniqId": "uniq123",
"value": "ORDER_12345",
"createdAt": "2024-01-01T10:00:00.000Z",
"updatedAt": "2024-01-01T10:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 1,
"totalCount": 1,
"totalPages": 1
}
}
Use Cases
- Audit Reports: List all processed items
- Data Analysis: Analyze processing patterns
- Cleanup Operations: Identify old entries
- Monitoring: Track collection growth
Create
Create a new empty Uniq collection. Found under the Uniq Collection resource.
Create Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Collection Name | String | Yes | Name of the Uniq collection to create or read. Letters, numbers, hyphens and underscores only, maximum 100 characters. |
Under Additional Fields:
| Parameter | Type | Required | Description |
|---|---|---|---|
| Description | String | No | Optional human-readable description explaining the purpose of this Uniq collection. |
Create Response
{
"id": "uniq123",
"name": "processed-orders",
"description": "Track processed order IDs to prevent duplicates",
"appId": "app123",
"createdAt": "2024-01-01T10:00:00.000Z",
"updatedAt": "2024-01-01T10:00:00.000Z"
}
List
Retrieve all Uniq collections available to your app. Found under the Uniq Collection resource.
List Configuration
No required parameters.
Under Advanced Settings → Pagination:
| Parameter | Type | Required | Description |
|---|---|---|---|
| Page | Number | No | Page number to retrieve (starts from 1). |
| Items Per Page | Number | No | Maximum number of Uniq collections to return per page (1-100). |
| Offset (Advanced) | Number | No | Number of items to skip from the beginning. |
Set none of the three and the node reads every page.
List Response
{
"items": [
{
"id": "uniq123",
"name": "processed-orders",
"description": "Track processed order IDs to prevent duplicates",
"appId": "app123",
"createdAt": "2024-01-01T10:00:00.000Z",
"updatedAt": "2024-01-01T10:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 1,
"totalCount": 1,
"totalPages": 1
}
}
Get Info
Get details about a specific collection. Found under the Uniq Collection resource.
Get Info Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Collection Name | String | Yes | Name of the Uniq collection to create or read. Letters, numbers, hyphens and underscores only, maximum 100 characters. |
Get Info Response
{
"id": "uniq123",
"name": "processed-orders",
"description": "Track processed order IDs to prevent duplicates",
"appId": "app123",
"createdAt": "2024-01-01T10:00:00.000Z",
"updatedAt": "2024-01-01T10:00:00.000Z"
}
Common Patterns
Do-once Pattern
Implement the do-once pattern to prevent duplicate processing. There are two ways to write it.
The short version uses Add alone, because it already tells duplicates apart:
Add
Collection Name: processed-orders
Uniq Value: {{ $json.orderId }}
Added output → process the order
Duplicate output → nothing, or log
The longer version checks first, which is what you want when the processing step must happen before the value is recorded:
Step 1: Check Exists
Collection Name: processed-orders
Uniq Value: {{ $json.orderId }}
Step 2: (No output) process the order
Step 3: Add
Collection Name: processed-orders
Uniq Value: {{ $json.orderId }}
Advanced Settings → Metadata: {"processedAt": "{{ $now }}"}
Batch Processing
Process multiple items efficiently:
- Get the collection to see what has already been processed
- Filter out those values from your batch
- Process only the rest
- Add each one after processing
Examples
Email Deduplication
Prevent sending duplicate emails. Key the value on both the user and the email type:
Add
Collection Name: sent-emails
Uniq Value: {{ $json.userId }}-{{ $json.emailType }}
Advanced Settings → Metadata: {"sentAt": "{{ $now }}", "emailType": "{{ $json.emailType }}"}
Added output → send the email
File Processing
Ensure files are processed only once, and reprocess a file whose contents changed:
Add
Collection Name: processed-files
Uniq Value: {{ $json.filename }}-{{ $json.fileHash }}
Order Processing
Process orders exactly once:
Add
Collection Name: processed-orders
Uniq Value: {{ $json.orderId }}
Advanced Settings → Metadata: {"processedAt": "{{ $now }}", "status": "completed"}
Next Steps
Ready to explore more actions? Check out:
- Lookups Actions - Map data between systems
- Locks Actions - Coordinate resource access
- Last Updated Actions - Enable incremental polling
- Complete Lookup-Uniq - Map and mark in one call
- App Info Actions - Read the app and check server health