Formatter Task¶
Overview¶
The Formatter Task transforms data between different formats and types. Use it to convert dates, format numbers, manipulate strings, change case, extract text, or prepare data for display or storage.
When to use this task:
- Format dates for display or storage
- Convert strings to numbers or vice versa
- Change text case (uppercase, lowercase, title case)
- Trim whitespace and clean data
- Extract substrings or specific characters
- Format currency and percentages
- Concatenate or split strings
- Parse and transform data types
Key Features:
- Multiple transformation types
- Date/time formatting
- Number formatting (currency, decimals)
- String manipulation
- Case conversion
- Text extraction
- Type conversion
- Chainable transformations
[SCREENSHOT NEEDED: Formatter task configuration showing transformation type selector and format options]
Quick Start¶
- Add Formatter task
- Select transformation type
- Input data to format
- Configure format options
- Test output
- Save
Simple Example:
Type: Date Format
Input: {{task_49001_submitted_date}}
Format: MM/DD/YYYY
Output: {{task_20001_formatted}}
Transformation Types¶
Date & Time Formatting¶
Input Date:
Format Options:
| Format | Output Example | Use Case |
|---|---|---|
MM/DD/YYYY | 02/08/2026 | US date display |
DD/MM/YYYY | 08/02/2026 | International date |
YYYY-MM-DD | 2026-02-08 | Database storage |
MMMM DD, YYYY | February 08, 2026 | Formal display |
HH:mm:ss | 14:30:00 | Time only |
YYYY-MM-DD HH:mm:ss | 2026-02-08 14:30:00 | Full timestamp |
Relative | 2 days ago | User-friendly |
Example:
Input: 2026-02-08T14:30:00Z
Format: MMMM DD, YYYY at HH:mm
Output: {{task_20001_formatted}} → "February 08, 2026 at 14:30"
Number Formatting¶
Currency:
Type: Number Format
Input: {{task_43001_total}}
Format: Currency
Currency Symbol: $
Decimals: 2
Output: {{task_20001_formatted}} → "$1,234.56"
Percentage:
Type: Number Format
Input: 0.847
Format: Percentage
Decimals: 1
Output: {{task_20001_formatted}} → "84.7%"
Thousands Separator:
Decimals:
String Manipulation¶
Uppercase:
Lowercase:
Title Case:
Type: Change Case
Input: hello world from basecloud
Case: Title Case
Output: Hello World From Basecloud
Sentence Case:
Text Extraction¶
Substring:
Type: Extract Text
Input: {{task_49001_phone}}
Method: Substring
Start: 0
Length: 3
Output: {{task_20001_formatted}} → First 3 characters
Split:
Type: Split Text
Input: john@example.com
Delimiter: @
Get Part: 1 (second part)
Output: {{task_20001_formatted}} → "example.com"
Trim:
Remove Characters:
Concatenation¶
Join Strings:
Type: Concatenate
Inputs:
- {{task_49001_first_name}}
- " "
- {{task_49001_last_name}}
Output: {{task_20001_formatted}} → "John Doe"
Template:
Type: Template
Template: Hello {{name}}, your order {{order_id}} is ready!
Variables:
name: {{task_49001_name}}
order_id: {{task_46001_order_id}}
Output: "Hello John, your order ORD-5560 is ready!"
Type Conversion¶
String to Number:
Type: Convert Type
Input: "123.45"
Convert To: Number
Output: {{task_20001_formatted}} → 123.45 (numeric)
Number to String:
Type: Convert Type
Input: {{task_43001_total}}
Convert To: String
Output: {{task_20001_formatted}} → "1234.56" (text)
Boolean:
Type: Convert Type
Input: {{task_9001_condition_result}}
Convert To: Boolean
Output: {{task_20001_formatted}} → true/false
URL Encoding¶
Encode:
Type: URL Encode
Input: Hello World & Special Characters!
Output: {{task_20001_formatted}} → "Hello%20World%20%26%20Special%20Characters%21"
Decode:
Type: URL Decode
Input: Hello%20World%20%26%20Special
Output: {{task_20001_formatted}} → "Hello World & Special"
Real-World Examples¶
Example 1: Clean and Format Contact Data¶
Workflow: 1. Website Form - Website form 2. Formatter - Clean email (lowercase) 3. Formatter - Format phone (remove special chars) 4. Formatter - Title case name 5. Match to Client - Find existing contact
Format Email:
Format Phone:
Type: Remove Characters
Input: {{task_49001_phone}}
Remove: ( ) - . spaces
Output: {{task_6002_formatted}}
Format Name:
Match to Client:
Example 2: Invoice Date Formatting¶
Workflow: 1. CRM Trigger - Order created 2. MySQL Query - Get order details 3. Formatter - Format invoice date 4. Formatter - Format due date 5. Formatter - Format currency 6. PDF Task - Generate invoice
Format Invoice Date:
Type: Date Format
Input: {{task_48001_current_datetime}}
Format: MMMM DD, YYYY
Output: {{task_20001_formatted}} → "February 08, 2026"
Format Due Date:
Type: Date Format
Input: {{task_43001_due_date}}
Format: DD/MM/YYYY
Output: {{task_6002_formatted}} → "08/03/2026"
Format Total:
Type: Currency
Input: {{task_43001_total}}
Currency: $
Decimals: 2
Separator: ,
Output: {{task_6003_formatted}} → "$1,234.56"
Use in PDF:
Invoice Date: {{task_20001_formatted}}
Due Date: {{task_6002_formatted}}
Total Amount: {{task_6003_formatted}}
Example 3: Email Template Builder¶
Workflow: 1. Timer Trigger - Weekly newsletter 2. MySQL Query - Get customers 3. Loop - For each customer 4. Formatter - Format currency (LTV) 5. Formatter - Format date (last login) 6. Formatter - Build personalized subject 7. Email - Send newsletter
Format LTV:
Type: Currency
Input: {{task_29001_lifetime_value}}
Currency: $
Decimals: 0
Output: {{task_20001_formatted}} → "$12,345"
Format Last Login:
Type: Date Format
Input: {{task_29001_last_login}}
Format: Relative
Output: {{task_6002_formatted}} → "3 days ago"
Build Subject:
Type: Template
Template: {{first_name}}, you've saved {{savings}}!
Variables:
first_name: {{task_29001_first_name}}
savings: {{task_20001_formatted}}
Output: {{task_6003_formatted}}
Email:
To: {{task_29001_email}}
Subject: {{task_6003_formatted}}
Body:
Hi {{task_29001_first_name}},
As a valued customer, you've generated {{task_20001_formatted}} in value!
You last logged in {{task_6002_formatted}}.
...
Example 4: Data Export Formatting¶
Workflow: 1. Timer Trigger - Daily export 2. MySQL Query - Get records 3. Loop - For each record 4. Formatter - Format date for CSV 5. Formatter - Format decimal values 6. Formatter - Clean special characters 7. Google Sheets - Append to sheet
Format Date for CSV:
Type: Date Format
Input: {{task_29001_created_date}}
Format: YYYY-MM-DD
Output: {{task_20001_formatted}}
Format Decimal:
Type: Number Format
Input: {{task_29001_amount}}
Decimals: 2
No Thousands Separator: true
Output: {{task_6002_formatted}} → "1234.56"
Clean Description:
Type: Remove Characters
Input: {{task_29001_description}}
Remove: " , \n
Replace With: (space)
Output: {{task_6003_formatted}}
Google Sheets:
Example 5: Dynamic URL Builder¶
Workflow: 1. Form Submission - Lead form 2. Formatter - URL encode name 3. Formatter - URL encode message 4. Formatter - Build tracking URL 5. Webhook Out - Send to CRM with URL
Encode Name:
Encode Message:
Build URL:
Type: Template
Template: https://crm.example.com/lead?name={{name}}&message={{msg}}&source={{src}}
Variables:
name: {{task_20001_formatted}}
msg: {{task_6002_formatted}}
src: website-form
Output: {{task_6003_formatted}}
Webhook:
URL: https://external-crm.com/api/leads
Body:
{
"name": "{{task_49001_name}}",
"crm_link": "{{task_6003_formatted}}"
}
Chaining Formatters¶
Multiple formatters for complex transformations:
1. Formatter - Extract domain from email
Input: john@EXAMPLE.COM
Type: Split
Delimiter: @
Part: 2
Output: EXAMPLE.COM
2. Formatter - Lowercase domain
Input: {{task_20001_formatted}}
Type: Change Case
Case: lowercase
Output: example.com
3. Formatter - Check if business
Input: {{task_6002_formatted}}
Type: Template
Template: {{domain}} is {{type}}
Variables:
domain: {{task_6002_formatted}}
type: [business email logic]
Best Practices¶
Data Quality¶
- Clean at source - Format as early as possible in workflow
- Validate before format - Check data exists and is expected type
- Handle nulls - Provide defaults for empty values
- Test edge cases - Empty strings, special characters, long text
- Be consistent - Use same formats throughout application
Performance¶
- Batch when possible - One formatter for multiple operations
- Cache formatted values - Use Variable task if used multiple times
- Don't over-format - Only format what's needed
- Use appropriate types - Format for display, not storage
- Minimize formatters in loops - Pre-format outside loop when possible
Maintainability¶
- Document format choices - Why this format?
- Use named formats - Standard date/currency formats
- Centralize common formats - Reusable workflow templates
- Test with real data - Use actual production examples
- Keep it simple - Prefer simple transforms over complex chains
Type Safety¶
- Know input types - String, number, date, boolean
- Explicit conversions - Convert types when needed
- Validate after format - Ensure expected output
- Handle failures - Fallback if formatting fails
- Document expectations - Input/output types in workflow
Troubleshooting¶
Formatter Returns Empty¶
Check: 1. Input data exists? 2. Input type matches formatter expectation? 3. Format string correct? 4. Null/empty input handled?
Debug:
Date Formatting Fails¶
Issue: "Invalid date format"
Causes: - Input not a date - Date format unrecognized - Timezone issues
Solutions: - Verify input is date type - Try different format string - Use Date Formatter task instead
Number Formatting Wrong¶
Issue: Decimals incorrect or thousands separator missing
Check: - Input is numeric type? - Decimal places set correctly? - Locale settings?
Solution: Convert to number first:
Case Conversion Not Working¶
Issue: Text remains same case
Cause: Input might contain non-text characters
Solution: Clean special characters first, then convert case.
Concatenation Has Extra Spaces¶
Issue: "John Doe" (double space)
Cause: Empty middle name or extra spaces in data
Solution:
Frequently Asked Questions¶
Can I format multiple fields at once?¶
No, each Formatter task handles one transformation. Chain multiple formatters or use Code task for complex multi-field formatting.
What's the difference between Formatter and Date Formatter?¶
- Formatter: General transformations (strings, numbers, basic dates)
- Date Formatter: Specialized date operations (timezone, calculations, parsing)
Can formatters handle arrays?¶
No, formatters work on single values. Use Loop task to format array items individually.
How do I format for specific locales?¶
Use appropriate format strings: - US: MM/DD/YYYY, $1,234.56 - EU: DD/MM/YYYY, 1.234,56€ - International: YYYY-MM-DD
Can I reverse a formatting operation?¶
Not directly. Keep original unformatted value if needed later.
What happens if input is wrong type?¶
Formatter attempts conversion or returns empty. Always validate inputs.
Can formatters call external APIs?¶
No. Use Webhook Out or Code task for external formatting services.
How to format JSON?¶
Use Code task for JSON manipulation. Formatter is for simple scalar values.
Related Tasks¶
- Date Formatter - Advanced date operations
- Phone Formatter - Phone number formatting
- Code Task - Complex custom formatting
- Variable Task - Store formatted values
- Regex Task - Pattern-based extraction