Plus Vibe AI¶
Plus Vibe AI is an email marketing and outreach platform that helps businesses automate their email campaigns, manage leads, and track engagement metrics.
omniload supports Plus Vibe AI as a source.
URI format¶
The URI format for Plus Vibe AI is as follows:
plusvibeai://?api_key=<api-key-here>&workspace_id=<workspace-id-here>
URI parameters:
api_key: API key for authentication (get from https://app.plusvibe.ai/v2/settings/api-access/)workspace_id: Workspace ID to access your data
The URI is used to connect to the Plus Vibe AI API for extracting data.
Setting up a Plus Vibe AI Integration¶
To set up a Plus Vibe AI integration, you need to:
Log in to your Plus Vibe AI account
Navigate to Settings > API Access (https://app.plusvibe.ai/v2/settings/api-access/)
Generate an API key
Find your workspace ID in your account settings
Once you have your API key and workspace ID, here’s a sample command that will copy the data from Plus Vibe AI into a DuckDB database:
omniload ingest --source-uri 'plusvibeai://?api_key=your_api_key&workspace_id=your_workspace_id' --source-table 'campaigns' --dest-uri duckdb:///plusvibeai.duckdb --dest-table 'campaigns.data'
The result of this command will be a table in the plusvibeai.duckdb database with JSON columns for nested objects.
Tables¶
Plus Vibe AI source allows ingesting the following sources into separate tables:
Table |
PK |
Inc Key |
Inc Strategy |
Details |
|---|---|---|---|---|
|
id |
modified_at |
merge |
Contains campaign information including configuration, schedules, sequences, and performance metrics. Nested objects (schedule, sequences) are stored as JSON columns. |
|
_id |
modified_at |
merge |
Contains lead information including contact details, campaign association, engagement metrics, and professional information. |
|
_id |
timestamp_updated |
merge |
Contains email account configurations including SMTP/IMAP settings, warmup configurations, and analytics data stored in payload JSON. |
|
id |
timestamp_created |
merge |
Contains email data including message content, headers, thread information, and recipient details. Uses cursor-based pagination. |
|
_id |
created_at |
merge |
Contains blocklist entries for email addresses or domains that should be excluded from campaigns. |
|
_id |
modified_at |
merge |
Contains webhook configurations for receiving real-time notifications about campaign events and lead interactions. |
|
_id |
modified_at |
merge |
Contains tag information used for organizing and categorizing campaigns, leads, and other resources. |
Use these as --source-table parameter in the omniload ingest command.
Features¶
Incremental Loading¶
Plus Vibe AI source supports incremental loading based on modification timestamps. Each table uses its respective timestamp field to fetch only updated records since the last sync:
Campaigns: Uses
modified_atfieldLeads: Uses
modified_atfieldEmail Accounts: Uses
timestamp_updatedfieldEmails: Uses
timestamp_createdfieldBlocklist: Uses
created_atfieldWebhooks: Uses
modified_atfieldTags: Uses
modified_atfield
Nested Data Handling¶
The source preserves nested objects as JSON columns with max_table_nesting=0 to maintain data structure integrity:
Campaigns: Schedule, sequences, and events are stored as JSON
Email Accounts: All configuration data is stored in the
payloadJSON fieldEmails: Headers and address information are stored as JSON
Rate Limiting¶
Plus Vibe AI API has a rate limit of 5 requests per second. The source automatically handles rate limiting with exponential backoff and retry logic.
Error Handling¶
The source includes comprehensive error handling for:
Authentication failures (401/403)
Rate limiting (429)
Server errors (5xx) with automatic retries
Network timeouts and connection issues
[!TIP] For optimal performance, use incremental loading for regular syncs and full loading only for initial data extraction or when you need to capture all historical updates.
[!NOTE] The emails endpoint uses cursor-based pagination with
page_trailparameter, while other endpoints use standard offset-based pagination.