Scheduled Campaigns
Explore all past, present and future campaigns and all their different properties
Scheduled Campaigns
Explore all past, present, and future campaigns and all their different properties.
This shared table contains the details of all scheduled campaigns set in Optimove, alongside metadata that can be used for further analysis by any campaign property — grouping by Tags, Marketing Actions, and Channels for insightful analysis.
Each row represents a channel within an action of a campaign occurrence. Actions are set in Optimove Campaign Builder, under the Execute section. Campaign Actions split into more than one channel appear in different rows. Channels that test more than one template are represented by the first template only, in order of appearance in Campaign Builder.
Same across all versions: the schema of this view is identical in V1.3, V1.5, and V1.6 — only the view-name suffix changes. All columns are preserved; to migrate, just change the suffix in your query. (PROMOTION_NAME/PROMOTION_CODEwere added back in V1_3.)
Query
-- FOR V1.6
SELECT *
FROM [SHARED_DB].[BI].[VW_SCHEDULED_CAMPAIGNS_V1_6]-- FOR V1.5
SELECT *
FROM [SHARED_DB].[BI].[VW_SCHEDULED_CAMPAIGNS_V1_5]-- FOR V1.3
SELECT *
FROM [SHARED_DB].[BI].[VW_SCHEDULED_CAMPAIGNS_V1_3]Glossary
ACTION_NAME— 'DN' represents control groups that are not targeted with any communication ("Do Nothing").CAMPAIGN_TYPE_NAME- Test/Control — a simple campaign using a single action tested against a control group.
- Self-Optimizing — a campaign configured to optimize its action distribution according to performance. Read more.
- A/B/N — a campaign with multiple actions, may or may not include a control group.
- A/B — a campaign testing only two actions, without a control group.
- No Control — a campaign with a single test group only.
MARKETING_ACTION_NAME— the action name used in a campaign. Set on a campaign action level, managed in Optimove under Plan > Actions.
Read more about terminology in the Data Share Glossary.
Primary Keys
- Composite Key:
PLAN_ID,PLAN_DETAIL_ID,TEMPLATE_ID,PLAN_DETAIL_CHANNEL_ID,PROMOTION_ID
LAST_MODIFY_DATE— timestamp of the last recorded modification to this campaign record. Not recommended as an incremental ingestion watermark — see Ingestion Recommendations below.
Ingestion Recommendations
Full load recommended. This is a small-volume reference table, typically fewer than 10,000 records. A full load (truncate-and-replace) is the recommended ingestion strategy.
Although LAST_MODIFY_DATE appears to be a natural watermark column, using it for incremental ingestion can produce data gaps:
| Scenario | What happens | Impact on incremental ingestion |
|---|---|---|
| Campaign deleted from Optimove | Row disappears from the view entirely | Incremental logic has no signal to delete the row from the destination — stale record persists silently |
Campaign created or backfilled with a backdated LAST_MODIFY_DATE | New row inserted with a timestamp older than the current watermark | Row is never picked up — permanent data gap |
Metadata field updated without LAST_MODIFY_DATE changing | Fields like TEMPLATE_ID, TEMPLATE_NAME, PROMOTION_NAME, TAG_NAMES reflect new values but LAST_MODIFY_DATE is unchanged | Destination retains outdated metadata — joins to engagement or results produce mismatched names |
Recommended approach (swap the suffix for the version you use):
-- Full load pattern (run daily or on schedule)
CREATE OR REPLACE TABLE MY_DB.MY_SCHEMA.SCHEDULED_CAMPAIGNS AS
SELECT *
FROM DATA_SHARE_DB.DATA_SHARE_SCHEMA.VW_SCHEDULED_CAMPAIGNS_V1_6;Because the view is small, full loads complete in seconds and eliminate all three failure modes above.
If incremental ingestion is required (e.g., pipeline framework constraints), supplement it with a periodic full reconciliation:
-- Reconciliation: detect stale/deleted records
SELECT dest.PLAN_ID, dest.PLAN_DETAIL_ID
FROM MY_DB.MY_SCHEMA.SCHEDULED_CAMPAIGNS dest
LEFT JOIN DATA_SHARE_DB.DATA_SHARE_SCHEMA.VW_SCHEDULED_CAMPAIGNS_V1_6 src
ON dest.PLAN_ID = src.PLAN_ID
AND dest.PLAN_DETAIL_ID = src.PLAN_DETAIL_ID
WHERE src.PLAN_ID IS NULL;
-- Any rows returned exist in your destination but have been
-- removed from the source view and should be deleted.This also applies to detecting metadata drift — compare TEMPLATE_ID, TEMPLATE_NAME, and other mutable fields against the source periodically.
Table Description
| Field Name | Description | Data Type | Format |
|---|---|---|---|
PLAN_ID | A campaign's ID | NUMBER(38,0) | |
MARKETING_ACTION_NAME | Name of the marketing action | TEXT(2048) | |
TARGET_GROUP_ID | Unique identifier for the target group | NUMBER(38,0) | |
TARGET_GROUP_NAME | Name of the target group | TEXT(2000) | |
CAMPAIGN_TYPE | Type of the campaign | NUMBER(38,0) | |
CAMPAIGN_TYPE_NAME | Name of the campaign type | TEXT(16777216) | |
LEAD_TIME | Lead time for the campaign | NUMBER(38,0) | |
SELECTED_GAIN_KPI | Selected gain key performance indicator | TEXT(512) | |
IS_IMPACT_ENABLED | Flag to indicate if impact is enabled | NUMBER(38,0) | True/False |
EXECUTION_START_DATE | Start date of the campaign execution | DATE | YYYY-MM-DD |
EXECUTION_END_DATE | End date of the campaign execution | DATE | YYYY-MM-DD |
TAG_NAMES | Tags associated with the campaign | TEXT(16777216) | "Tag1","Tag2","Tag3" |
IS_REAL_SCHEDULED_CAMPAIGN | Flag to indicate if it's a real scheduled campaign | NUMBER(38,0) | |
EXCLUDE_BY_CHANNEL_FLAG | Flag to exclude by channel | NUMBER(38,0) | |
IMPACT_LENGTH_PLANNED_ACTIONS_CONFIGURATION | Configuration for planned actions impact length | NUMBER(38,0) | |
PLAN_DETAIL_ID | Unique identifier for plan detail | NUMBER(38,0) | |
CAMPAIGN_ACTION_ID | Unique identifier for the campaign action or control group identifier | NUMBER(38,0) | |
CAMPAIGN_ACTION_NAME | Name of the campaign action OR control group | TEXT(16777216) | |
IS_CAMPAIGN_ACTION_GROUP | Flag to indicate if it's a campaign action group | NUMBER(38,0) | 1 or 0 |
CAMPAIGN_ACTION_TYPE | Type of campaign action | NUMBER(38,0) | |
ISOLATION_VOLUME | Isolation volume | NUMBER(38,0) | |
PLAN_DETAIL_CHANNEL_ID | ID of a channel sub-action within a Campaign Action | NUMBER(38,0) | |
CHANNEL_ID | Channel ID associated with the channel sub-action | NUMBER(38,0) | |
TEMPLATE_ID | Unique identifier for the template associated with this sub-action | NUMBER(38,0) | |
TEMPLATE_NAME | Name of the template associated with this sub-action | TEXT(16777216) | |
CHANNEL_NAME | Name of the channel associated with this sub-action | TEXT(16777216) | |
PROMOTION_ID | Promotion ID (Optimove generated) | NUMBER(38,0) | |
PROMOTION_NAME | Promotion name (as received by Optimove) | TEXT(500) | |
PROMOTION_CODE | Promotion code (as received by Optimove) | TEXT(500) | |
CONDITIONAL_EXECUTION_NAME | Name of the conditional execution | TEXT(16777216) | |
DISPLAY_ORDER | Display order of the action as shown in Campaign Builder | NUMBER(38,0) | |
UI_PANEL_ID | UI panel ID | NUMBER(38,0) | |
RECURRENCE_PATERN | Recurrence pattern (note: column spelling is RECURRENCE_PATERN) | TEXT(510) | |
NEXT_RUNTIME | Next runtime | TIMESTAMP_NTZ | YYYY-MM-DD HH:MM |
REPEAT_TIMES | Number of times to repeat | NUMBER(38,0) | |
NOTES | Notes associated with the campaign | TEXT(16777216) | |
LAST_MODIFY_USERNAME | Username of the last modifier | TEXT(200) | |
LAST_MODIFY_DATE | Date of the last modification | TIMESTAMP_NTZ | YYYY-MM-DD HH:MM |
Send timing:EXECUTION_DATEis the day a campaign executed — a date only, with no time-of-day component. A send-level timestamp is not currently exposed in Data Share; the date is the finest send-timing granularity available.
Updated 10 days ago