What are Modifiers?
Modifiers are configuration settings that enhance your project’s capabilities. They inject credentials, storage access, and other context into your Actions at runtime, without requiring you to manage sensitive data in your code.Types of Modifiers
OAuth Modifiers
Connect third-party services to your projects with secure OAuth 2.0 authentication. Supported Providers:- Google — Gmail, Drive, Sheets, Calendar
- Microsoft — Office 365, Outlook, OneDrive, Teams
- GitHub — Repository access, CI/CD integration
- GitLab — Code hosting, pipelines
- Slack — Team communication, workflows
- Linear — Issue tracking, project management
- Notion — Documentation, databases
- Dropbox — File storage
- Trello — Board management
- Asana — Task management
- And more providers added regularly
- Add an OAuth modifier to your project
- Select provider and required scopes
- Complete the OAuth authorization flow
- Tokens are automatically managed by Triform
Storage Modifiers
Enable file storage capabilities for your project. Configuration options:- S3-compatible storage backends
- Custom bucket and region settings
- Credential management
Setting Up Modifiers
Via UI
- Open your Project in the Builder
- Go to Properties Panel → Execute
- Click Add Modifier
- Select modifier type (OAuth or Storage)
- Configure settings and authorize
OAuth Authorization Flow
When adding an OAuth modifier:- Click Connect next to the provider
- A popup opens for the provider’s login
- Grant permissions for the requested scopes
- The popup closes automatically on success
- Status shows “Connected” with token health
- Interactive OAuth buttons appear in chat messages
- Click to authorize without leaving the conversation
- Real-time status updates show connection progress
- Multiple widgets can be active in the same session
Using Modifiers in Actions
Accessing OAuth Tokens
Token Properties
The token object includes:access_token— The bearer token for API requestsexpires_at— Token expiration timestampscopes— List of granted permissions
Multi-Provider Example
Accessing Storage
Scope Configuration
OAuth scopes define what permissions your project has with each provider.Common Scopes by Provider
Google:gmail.readonly— Read emailsgmail.send— Send emailsdrive.readonly— Read filesdrive— Full Drive accesscalendar.readonly— Read calendarcalendar— Manage calendar
Mail.Read— Read emailsMail.Send— Send emailsFiles.Read— Read OneDrive filesFiles.ReadWrite— Full OneDrive accessCalendars.ReadWrite— Manage calendar
repo— Full repository accessread:user— Read user profileworkflow— Manage Actions workflows
chat:write— Post messageschannels:read— List channelsfiles:read— Access files
Best Practices for Scopes
Request minimal scopes — Only ask for permissions you actually need
Explain to users — When building public projects, document why each scope is needed
Review periodically — Remove scopes you no longer use
Token Management
Triform handles token lifecycle automatically:- Automatic Refresh — Tokens are refreshed before expiration
- Secure Storage — Credentials encrypted with Scaleway KMS
- Organization Isolation — Each org has dedicated encryption keys
- High-Performance Cache — Memcache layer for fast token retrieval
Token Health
In the Properties Panel, you can see:- Connected — Token is valid and working
- Expiring Soon — Token will be refreshed automatically
- Expired — Re-authorization required
- Revoked — User revoked access, re-authorize needed
Real-Time Updates
Modifier changes trigger real-time events:- WebSocket notifications when tokens are updated
- Live status updates in the UI
- Automatic propagation to running executions
Security
- End-to-End Encryption — All credentials encrypted at rest and in transit
- KMS Integration — Scaleway Key Management Service for enterprise-grade security
- Organization Keys — Dedicated encryption keys per organization
- No Code Exposure — Tokens never appear in Action code, only at runtime
- Audit Trail — All OAuth events logged for compliance
Troubleshooting
Problem: OAuth connection failsSolution: Check popup blockers, try a different browser, verify provider status Problem: Token expired immediately
Solution: Check your system clock, re-authorize the connection Problem: Missing scopes error
Solution: Edit the modifier and add required scopes, then re-authorize Problem:
get_oauth_token() returns NoneSolution: Verify the modifier is configured and the provider name matches exactly
Next Steps
- See OAuth in Actions for code examples
- Learn about Storage for file handling
- Check Executions for how modifiers are injected